ESP32(MicroPython) 两个ADC程序

  最近对ESP32的ADC功能进行了详细测试,下面提一下具体结果,并给出相应的两个程序。

  先提一下更早得出的一个结论:ADC通过定时器中断检测更准确。具体原理尚不明确。

  通过串口输出ADC检测结果速度较快。经测试,3ms输出一次可以正常输出而不会出现明显延时。要注意的是,输出速度快可能导致程序不能正常停止,因此尽量直接运行,不要烧录。

程序如下(为了提高速度,电压没有进行换算,也未对换算电压对输出速度的影响进行测试)

'''
接线: ADC-->(34)  
'''

#导入Pin模块
from machine import Pin
from machine import ADC
from machine import Timer

#定义ADC控制对象
adc=ADC(Pin(34))
adc.atten(ADC.ATTN_11DB)  #开启衰减,量程增大到3.3V

#定时器0中断函数
def time0_irq(time0):
    print(adc.read())
    
#程序入口
if __name__=="__main__":
    time0=Timer(0)  #创建time0定时器对象
    time0.init(period=3,mode=Timer.PERIODIC,callback=time0_irq)
    while True:
        pass

  之前提到过4路ADC不能正常运行的情况,经过详细测试,实际上是36引脚的ADC不能正常运行,可能是硬件故障或MicroPython库bug。33、32、35、34、39引脚可用。使用以上5路ADC每10ms输出一次可以正常输出。

程序如下(电压未换算)

#导入Pin模块
from machine import Pin
from machine import ADC
from machine import Timer

#定义ADC控制对象
adc1=ADC(Pin(32))
adc1.atten(ADC.ATTN_11DB)  #开启衰减,量程增大到3.3V
adc2=ADC(Pin(33))
adc2.atten(ADC.ATTN_11DB)  #开启衰减,量程增大到3.3V
adc3=ADC(Pin(34))
adc3.atten(ADC.ATTN_11DB)  #开启衰减,量程增大到3.3V
adc4=ADC(Pin(35))
adc4.atten(ADC.ATTN_11DB)  #开启衰减,量程增大到3.3V
adc5=ADC(Pin(39))
adc5.atten(ADC.ATTN_11DB)  #开启衰减,量程增大到3.3V

#定时器0中断函数
def time0_irq(time0):
    print(adc1.read(),adc2.read(),adc3.read(),adc4.read(),adc5.read())
    
#程序入口
if __name__=="__main__":
    time0=Timer(0)  #创建time0定时器对象
    time0.init(period=10,mode=Timer.PERIODIC,callback=time0_irq)
    while True:
        pass

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

路易斯720

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值