加入星計劃,您可以享受以下權(quán)益:

  • 創(chuàng)作內(nèi)容快速變現(xiàn)
  • 行業(yè)影響力擴散
  • 作品版權(quán)保護(hù)
  • 300W+ 專業(yè)用戶
  • 1.5W+ 優(yōu)質(zhì)創(chuàng)作者
  • 5000+ 長期合作伙伴
立即加入
  • 正文
    • 觸摸控制
    • ADC
  • 推薦器件
  • 相關(guān)推薦
  • 電子產(chǎn)業(yè)圖譜
申請入駐 產(chǎn)業(yè)圖譜

吃白菜一樣用micropython玩esp32(三)—— 觸摸按鍵、ADC

03/16 16:11
2713
閱讀需 6 分鐘
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論

觸摸控制

下面介紹如何外部地控制燈的亮滅,我采用esp32里面的觸摸按鍵資源,實現(xiàn)觸摸控制開關(guān),一摸燈就亮。先上代碼:

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腳感應(yīng)的值

   if touch_value > 500 :      #若讀取的值大于閥值,則為沒觸摸
     led.value(0)
   else:
     led.value(1)              #觸摸則燈亮
   
   sleep(0.5)                 #延時0.5秒,實現(xiàn)每0.5秒判斷一次觸摸狀態(tài)

在這里插入圖片描述

其實很簡單的,如果看過我的前兩節(jié),這個代碼都不需要解釋,就是多引入了一個Touchpad模塊,然后把14腳定義為觸摸腳。在主循環(huán)中,sleep(0.5)定義了每0.5秒就讀取一次14腳的數(shù)據(jù),然后通過串口打印出來,在upycraft下面的框應(yīng)該能看到每0.5秒出現(xiàn)一個值,通過對比觸摸14腳與否的數(shù)值自己定義閥值,用于if函數(shù)的判斷,實現(xiàn)觸摸控制。

若熟悉了代碼,完全可以升級一下代碼實現(xiàn)雙穩(wěn)態(tài)控制,即摸一下就可以改變燈的亮滅;或再升級一下實現(xiàn)雙擊或長按等功能,然后與前面的呼吸跑馬燈結(jié)合起來,就很酷了。

這講的觸摸控制跟按鍵控制實現(xiàn)的效果一模一樣,只是我覺得按鍵太簡單,觸摸好玩一點哈哈。

附上esp32的引腳圖:

在這里插入圖片描述
可以看到我的14引腳不是亂設(shè)的,esp32的引腳只有8個支持touch,就是上面的T0-T7,我們還可以發(fā)現(xiàn)有各種AD、DA、SD等功能,等著你去玩耍。

ADC

下面我們來看一個有趣的ADC實驗,即模擬和數(shù)字的轉(zhuǎn)換。效果是通過旋轉(zhuǎn)電位器從而控制燈的亮度,這是呼吸燈的升級版:

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) #讀取的電壓轉(zhuǎn)為0-4096
pot.atten(ADC.ATTN_11DB)   #輸入電壓0-3.3v

while True:
  pot_value = pot.read() //4  #使讀取的電壓變?yōu)?-1024
  print(pot_value)            #打印出讀取到的電壓以便調(diào)試  
  if pot_value < 15:
    led.duty(0)
  else:
    led.duty(pot_value)        #通過讀取電位器的電壓調(diào)節(jié)燈的占空比
  sleep(0.1)                   #每100ms讀取一次

在這里插入圖片描述
在這里插入圖片描述

代碼我相信不需要多說了,有很多是呼吸燈的程序粘貼過來的,看我的注釋肯定能懂的。面包板上將電位器的兩端接3.3v和GND后,把中間的引腳接到esp32的34腳,然后再在12腳外接個led,搞定!原理是通過讀取0-3.3v的電壓,將其轉(zhuǎn)換為0-4096的數(shù)字,實現(xiàn)模數(shù)的轉(zhuǎn)換,因為led的pwm輸出占空比范圍是0-1024(上一講呼吸燈談過),所以將讀取的值除以4,剛好,直接定義為燈的占空比,這即是數(shù)模轉(zhuǎn)換,小小十幾行代碼把ADC都囊括了。

綜合前面幾講,可以完成一個好玩的項目:用觸摸感應(yīng)控制3盞燈的依次點亮,一次只亮一盞,且是呼吸燈的形式,然后一旁有個電位器,它可以調(diào)節(jié)呼吸燈的呼吸速度。 相信你可以很快寫出這個項目的代碼。

附上其他文章的鏈接:

《吃白菜一樣用micropython玩esp32(一)—— 搭建環(huán)境》
《吃白菜一樣用micropython玩esp32(二)—— 點燈大師》
《吃白菜一樣用micropython玩esp32(四)—— siri遠(yuǎn)程控制點燈》

推薦器件

更多器件
器件型號 數(shù)量 器件廠商 器件描述 數(shù)據(jù)手冊 ECAD模型 風(fēng)險等級 參考價格 更多信息
TJA1051T/3/2Z 1 NXP Semiconductors Interface Circuit
$9.33 查看
AFBR-5803ATZ 1 Broadcom Limited Transceiver, 1270nm Min, 1380nm Max, 125Mbps(Tx), 125Mbps(Rx), ST Connector, Through Hole Mount, ROHS COMPLIANT, SIP-9

ECAD模型

下載ECAD模型
$34.2 查看
ABM11AIG-40.000MHZ-4Z-T3 1 Abracon Corporation CRYSTAL 40MHZ 10PF SMD
$1.44 查看

相關(guān)推薦

電子產(chǎn)業(yè)圖譜