国产久操视频-国产久草视频-国产久热精品-国产久热香蕉在线观看-青青青青娱乐-青青青青在线成人视99

  • 正文
    • 觸摸控制
    • ADC
  • 推薦器件
  • 相關(guān)推薦
申請入駐 產(chǎn)業(yè)圖譜

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

2024/03/16
2913
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

觸摸控制

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

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

led = Pin(12,Pin.OUT)      #在12腳外接一個(gè)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)                 #延時(shí)0.5秒,實(shí)現(xiàn)每0.5秒判斷一次觸摸狀態(tài)

在這里插入圖片描述

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

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

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

附上esp32的引腳圖:

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

ADC

下面我們來看一個(gè)有趣的ADC實(shí)驗(yàn),即模擬和數(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腳外接個(gè)led,搞定!原理是通過讀取0-3.3v的電壓,將其轉(zhuǎn)換為0-4096的數(shù)字,實(shí)現(xiàn)模數(shù)的轉(zhuǎn)換,因?yàn)閘ed的pwm輸出占空比范圍是0-1024(上一講呼吸燈談過),所以將讀取的值除以4,剛好,直接定義為燈的占空比,這即是數(shù)模轉(zhuǎn)換,小小十幾行代碼把ADC都囊括了。

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

附上其他文章的鏈接:

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

推薦器件

更多器件
器件型號 數(shù)量 器件廠商 器件描述 數(shù)據(jù)手冊 ECAD模型 風(fēng)險(xiǎn)等級 參考價(jià)格 更多信息
NC7WZ17P6X 1 onsemi TinyLogic UHS Dual Buffer with Schmitt Trigger Inputs, 3000-REEL

ECAD模型

下載ECAD模型
$0.12 查看
SMD2440-011 1 Honeywell Microelectronics & Precision Sensors Photo Transistor Detector, Surface Mount, 3.81 X 2.54 X 2.10 MM, CERAMIC PACKAGE-SME2440
$8.61 查看
KSZ8081MLXIA 1 Microchip Technology Inc DATACOM, ETHERNET TRANSCEIVER, PQFP48

ECAD模型

下載ECAD模型
$1.86 查看

相關(guān)推薦

扬州市| 胶南市| 鄂尔多斯市| 东阳市| 盖州市| 株洲市| 页游| 桦甸市| 绥芬河市| 融水| 罗江县| 双峰县| 都江堰市| 连南| 永清县| 奉节县| 福建省| 乌鲁木齐县| 聂荣县| 婺源县| 钟祥市| 黄浦区| 田林县| 新蔡县| 上饶市| 水城县| 福鼎市| 义乌市| 承德县| 禹城市| 郸城县| 江安县| 白山市| 巧家县| 青冈县| 肃北| 邓州市| 芦溪县| 贵阳市| 福清市| 抚州市|