ESP8266_MicroPython——ADC_PWM

devtools/2024/10/15 21:53:06/

MicroPython

文章目录

  • MicroPython
  • 前言
  • 一、ADC
  • 二、PWM


前言

这一节简单学习一下ACD和PWM

一、ADC

ADC(analog to digital conversion) 模拟数字转换。意思就是将模拟信号转化成数字信号,由于单片机只能识别二级=进制数字,所以外界模拟信号常常会通过 ADC转换成其可以识别的数字信息。常见的应用就是将变化的电压转成数字信号。
ESP8266 的 ADC 输入引脚只能测量 0-1V 的量程。这个大家要注意,和单片机的0到3.3V是不一样。
我们来看看 ADC 模块的构造函数和使用方法。

adc=machine.ADC(0)
构建 ADC 对象。0:ESP8266 只有 1 个 ADC
adc.read()
获取 ADC 值。测量精度是 10 位,返回 0-1024(表示 0-1V)。

你没看错,就这么简单。两句函数就可以获得 ADC 数值
先导入相关模块,然后初始化模块。在循环中不断读取 ADC 的值,转化成电压值后在 OLED 上面显示,每隔 100 毫秒读取一次
在这里插入图片描述


#导入相关模块
from machine import Pin,I2C,ADC,Timer
from ssd1306 import SSD1306_I2C#初始化相关模块
i2c = I2C(sda=Pin(13), scl=Pin(14))  #I2C初始化:sda-->13, scl --> 14
oled = SSD1306_I2C(128, 64, i2c, addr=0x3c)
adc = ADC(0) #Pin='AD'def ADC_Test(tim):oled.fill(0)  # 清屏显示黑色背景oled.text('ADC', 0, 15)      # 次行显示实验名称#获取ADC数值oled.text(str(adc.read()),0,40)oled.text('(1024)',40,40)#计算电压值,获得的数据0-1024相当于0-1V,('%.2f'%)表示保留2位小数oled.text(str('%.2f'%(adc.read()/1024)),0,55)oled.text('V',40,55)oled.show()#开启RTOS定时器
tim = Timer(-1)
tim.init(period=100, mode=Timer.PERIODIC, callback=ADC_Test) #周期300ms

二、PWM

PWM 就是一个信号输出。PWM(脉冲宽度调制),主要用于输出不同频率、占空比(一个周期内高电平出现时间占总时间比例)的方波。以实现固定频率或平均电压输出。概念就不详细介绍了,详细的可以看主页文章。
在这里插入图片描述
通过PWM可以驱动蜂鸣器以不同的频率发声,无源蜂鸣器,需要给定指定的频率,才能发声的,而且可以通过改变频率来改变蜂鸣器的发声音色。
PWM 可以通过 ESP8266 所有引脚输出除了 Pin(16). 所有通道都有 1 个特定的频率,从 1 到 1000 之间(单位是 Hz)。占空比的值为 0 至 1023 之间。
先看看 PWM 模块对象:

pwm15=machine.PWM(machine.Pin(id),freq,duty)
构建 PWM 对象。id:引脚编号;freq:频率值;duty:占空比;配置完后 PWM 自动生效
pwm15.freq(freq)
设置频率。freq:频率值在 1-1000 之间,freq 为空时表示获取当前频率值。
pwm15.duty(duty)
设置占空比。duty:占空比在 0-1023 之间,duty 为空时表示获取当前占空比值。
pwm15.deinit()
关闭 PWM。

无源蜂鸣器我们可以用特定频率的方波来驱动,方波的原理很简单,就是一定频率的高低电平转换,可以简单理解成占空比为 50%的 PWM 输出。
在这里插入图片描述


from machine import Pin, PWM
import timeBeep = PWM(Pin(15), freq=0, duty=512) # 在同一语句下创建和配置 PWM#蜂鸣器发出频率200Hz响声
Beep.freq(200)
time.sleep_ms(1000)#蜂鸣器发出频率400Hz响声
Beep.freq(400)
time.sleep_ms(1000)#蜂鸣器发出频率600Hz响声
Beep.freq(600)
time.sleep_ms(1000)#蜂鸣器发出频率800Hz响声
Beep.freq(800)
time.sleep_ms(1000)#蜂鸣器发出频率1000Hz响声
Beep.freq(1000)
time.sleep_ms(1000)#停止
Beep.deinit()

下载程序后可以听到蜂鸣器依次发出不同频率的响声。
可以用示波器看一下(1k频率和200HZ频率)

在这里插入图片描述
在这里插入图片描述

比如说你要控制舵机就可以这么写
在这里插入图片描述
这样写舵机就可以动(注意占空比范围就可以了(0-1023))

from machine import Pin, PWM
pwm0 = PWM(Pin(15))      # create PWM object from a pin
pwm0.freq(1000)         # set frequency
pwm0.duty(300)          # set duty cycle

可以看一下1K频率下300的占空比和800占空比的波形
300
在这里插入图片描述
800
在这里插入图片描述


http://www.ppmy.cn/devtools/112765.html

相关文章

AT89C51 Intel HEX手工结构分析 反汇编工具

在不查询格式情况下分析确定 Intel HEX 格式 Hex文件内容 :0300000002090BE7 :0C090B00787FE4F6D8FD7581080208F63C :01091700419E :1008F60078087C007D007BFF7A0979177E007F01EE :050906001208D080FE84 :10080000E709F608DFFA8046E709F208DFFA803EDA :1008100088828C83E709F0…

小说阅读书城微信小程序

小说阅读书城微信小程序 摘 要 当今时代,是信息大爆炸的时代,人们每天都能接收到数不清的各类信息,其形式不仅包含传统的文字和图片,还有视频、音频等多阅读资料源也较以往增长了太多。因此市面上各种阅读类应用的用户体验参差不…

(181)时序收敛--->(31)时序收敛三一

1 目录 (a)FPGA简介 (b)Verilog简介 (c)时钟简介 (d)时序收敛三一 (e)结束 1 FPGA简介 (a)FPGA(Field Programmable Gate Array)是在PAL (可编程阵列逻辑)、GAL(通用阵列逻辑)等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域…

CMake构建学习笔记15-组建第一个程序项目

文章目录 1 概述2 具体案例2.1 代码编写2.2 构建配置2.3 依赖库配置 3 构建结果 1 概述 在前文中论述的都是如何使用CMake构建第三方依赖库,不过这些库都是别人的程序项目,那么如何使用CMake组织构建一个属于自己的C/C程序项目呢?本文我们就…

【自动化测试】UI自动化的分类、如何选择合适的自动化测试工具以及其中appium的设计理念、引擎和引擎如何工作

引言 UI自动化测试主要针对软件的用户界面进行测试,以确保用户界面元素的交互和功能符合预期 文章目录 引言一、UI自动化的分类1.1 基于代码的自动化测试1.2 基于录制/回放的自动化测试1.3 基于框架的自动化测试1.4 按测试对象分类1.5 按测试层次分类1.6 按测试执行…

R语言论文插图模板第10期—正负柱状图

在之前的文章中,分享了R语言各式柱状图的绘制模板: 进一步,再来分享一种特殊的柱状图:正负柱状图。 先来看一下成品效果: 特别提示:本期内容『数据代码』已上传资源群中,加群的朋友请自行下载。…

龙蜥8.9系统hadoop3.3.6上spark3.5.2安装(伪分布)

继续接着上篇的环境安装。 1、去清华的镜像源下载相关文件 https://mirrors.tuna.tsinghua.edu.cn/apache/spark/spark-3.5.2/ 2、解压缩 tar zxvf spark-3.5.2-bin-hadoop3.tgz3、移动到适当位置 mv spark-3.5.2-bin-hadoop3 /app/spark-34、下载scala https://www.scala-la…

54. 二叉搜索树的第 k 大节点

comments: true difficulty: 简单 edit_url: https://github.com/doocs/leetcode/edit/main/lcof/%E9%9D%A2%E8%AF%95%E9%A2%9854.%20%E4%BA%8C%E5%8F%89%E6%90%9C%E7%B4%A2%E6%A0%91%E7%9A%84%E7%AC%ACk%E5%A4%A7%E8%8A%82%E7%82%B9/README.md 面试题 54. 二叉搜索树的第 k 大…