加入星计划,您可以享受以下权益:

  • 创作内容快速变现
  • 行业影响力扩散
  • 作品版权保护
  • 300W+ 专业用户
  • 1.5W+ 优质创作者
  • 5000+ 长期合作伙伴
立即加入
  • 正文
    • 触摸控制
    • ADC
  • 推荐器件
  • 相关推荐
  • 电子产业图谱
申请入驻 产业图谱

吃白菜一样用micropython玩esp32(三)—— 触摸按键、ADC

03/16 16:11
2582
阅读需 6 分钟
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

触摸控制

下面介绍如何外部地控制灯的亮灭,我采用esp32里面的触摸按键资源,实现触摸控制开关,一摸灯就亮。先上代码:

from machine import TouchPad, Pin  #引入touchpad模块
from time import sleep

led = Pin(12,Pin.OUT)      #在12脚外接一个led灯,也可利用板子自带led
touch_pin = TouchPad(Pin(14))   #定义14脚为触摸脚
while True:
   touch_value = touch_pin.read()
   print(touch_value)   #打印出14脚感应的值

   if touch_value > 500 :      #若读取的值大于阀值,则为没触摸
     led.value(0)
   else:
     led.value(1)              #触摸则灯亮
   
   sleep(0.5)                 #延时0.5秒,实现每0.5秒判断一次触摸状态

在这里插入图片描述

其实很简单的,如果看过我的前两节,这个代码都不需要解释,就是多引入了一个Touchpad模块,然后把14脚定义为触摸脚。在主循环中,sleep(0.5)定义了每0.5秒就读取一次14脚的数据,然后通过串口打印出来,在upycraft下面的框应该能看到每0.5秒出现一个值,通过对比触摸14脚与否的数值自己定义阀值,用于if函数的判断,实现触摸控制。

若熟悉了代码,完全可以升级一下代码实现双稳态控制,即摸一下就可以改变灯的亮灭;或再升级一下实现双击或长按等功能,然后与前面的呼吸跑马灯结合起来,就很酷了。

这讲的触摸控制跟按键控制实现的效果一模一样,只是我觉得按键太简单,触摸好玩一点哈哈。

附上esp32的引脚图:

在这里插入图片描述
可以看到我的14引脚不是乱设的,esp32的引脚只有8个支持touch,就是上面的T0-T7,我们还可以发现有各种AD、DA、SD等功能,等着你去玩耍。

ADC

下面我们来看一个有趣的ADC实验,即模拟和数字的转换。效果是通过旋转电位器从而控制灯的亮度,这是呼吸灯的升级版:

from machine import Pin, PWM, ADC  #引入ADC模块
from time import sleep

frequency = 5000
led = PWM(Pin(12), frequency)

pot = ADC(Pin(34))         #定义34脚为ADC脚,可以读取模拟电压
pot.width(ADC.WIDTH_12BIT) #读取的电压转为0-4096
pot.atten(ADC.ATTN_11DB)   #输入电压0-3.3v

while True:
  pot_value = pot.read() //4  #使读取的电压变为0-1024
  print(pot_value)            #打印出读取到的电压以便调试  
  if pot_value < 15:
    led.duty(0)
  else:
    led.duty(pot_value)        #通过读取电位器的电压调节灯的占空比
  sleep(0.1)                   #每100ms读取一次

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

代码我相信不需要多说了,有很多是呼吸灯的程序粘贴过来的,看我的注释肯定能懂的。面包板上将电位器的两端接3.3v和GND后,把中间的引脚接到esp32的34脚,然后再在12脚外接个led,搞定!原理是通过读取0-3.3v的电压,将其转换为0-4096的数字,实现模数的转换,因为led的pwm输出占空比范围是0-1024(上一讲呼吸灯谈过),所以将读取的值除以4,刚好,直接定义为灯的占空比,这即是数模转换,小小十几行代码把ADC都囊括了。

综合前面几讲,可以完成一个好玩的项目:用触摸感应控制3盏灯的依次点亮,一次只亮一盏,且是呼吸灯的形式,然后一旁有个电位器,它可以调节呼吸灯的呼吸速度。 相信你可以很快写出这个项目的代码。

附上其他文章的链接:

《吃白菜一样用micropython玩esp32(一)—— 搭建环境》
《吃白菜一样用micropython玩esp32(二)—— 点灯大师》
《吃白菜一样用micropython玩esp32(四)—— siri远程控制点灯》

推荐器件

更多器件
器件型号 数量 器件厂商 器件描述 数据手册 ECAD模型 风险等级 参考价格 更多信息
SN74AHC1G14DCKR 1 Texas Instruments Single 2-V to 5.5-V inverter with Schmitt-Trigger inputs 5-SC70 -40 to 125

ECAD模型

下载ECAD模型
$0.28 查看
SN74HC573ADWR 1 Texas Instruments Octal Transparent D-Type Latches With 3-State Outputs 20-SOIC -40 to 85

ECAD模型

下载ECAD模型
$0.42 查看
TJA1042T/3/CM,118 1 NXP Semiconductors TJA1042 - High-speed CAN transceiver with Standby mode SOIC 8-Pin

ECAD模型

下载ECAD模型
$1.55 查看

相关推荐

电子产业图谱