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

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

吃白菜一樣用micropython玩esp32(二)—— 點(diǎn)燈大師

03/16 16:11
1281
閱讀需 5 分鐘
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

基礎(chǔ)點(diǎn)燈

按上一節(jié)一般新建好文件夾選好串口后,輸入下面的代碼

import time              #引入時(shí)間模塊,才可以用延時(shí)函數(shù)
from machine import Pin  #引入引腳模塊,才可以控制esp32引腳
led = Pin(2,Pin.OUT)    #定義led是第二腳,一般esp32板上的led連在第二腳
while True:             #主循環(huán)
    led.value(1)         #下面就是讓燈亮0.5秒再滅0.5秒,一直循環(huán)
    time.sleep_ms(500)
    led.value(0)
    time.sleep_ms(500)

按下DownloadAndRun,搞定!

這里不講解python的語法,其實(shí)我很建議大家先去實(shí)現(xiàn)效果,然后再去根據(jù)這個(gè)效果的代碼學(xué)習(xí)。不建議一開始就先學(xué)一堆語法,這樣很容易消磨掉興趣。大家手頭上有多的led燈,可以試著實(shí)現(xiàn)跑馬燈,無非是一個(gè)引腳高電平,然后延時(shí)一下,再下一個(gè)引腳高電平,再延時(shí)一下…把它寫在主循環(huán)里一直循環(huán),ok!

(題外話:單片機(jī)的程序基本都是先初始化,然后進(jìn)入主循環(huán),復(fù)雜一點(diǎn)可能會有一些中斷響應(yīng),但都是在主循環(huán)里一直循環(huán)。)

呼吸燈

我一直覺得呼吸燈是點(diǎn)燈里面最浪漫好玩的一個(gè),一定要學(xué)會它的思路

from machine import Pin, PWM  #引入模塊,不多說
from time import sleep
frequency = 5000
led = PWM(Pin(2), frequency)     #定義引腳2為PWM輸出,頻率為5000
while True:
  for duty_cycle in range(0, 1024):  #讓占空比從0遞增到1023
    led.duty(duty_cycle)             #引腳2輸出PWM電平
    sleep(0.005)                     #當(dāng)前亮度持續(xù)5ms
  for duty_cycle in range(1024, 0, -1):  #讓占空比從1023遞減到0
    led.duty(duty_cycle)               #the same
    sleep(0.005)

呼吸燈的實(shí)現(xiàn)離不開占空比這個(gè)概念,就是上面英文的duty_cycle。占空比就是引腳上的高電平與一個(gè)周期的比值,你可能好奇哪來的周期?比如上面的點(diǎn)燈,0.5秒亮0.5秒滅,那么周期就是1秒,占空比為50%。

解釋完占空比,來說說燈的亮度如何來調(diào)節(jié),正常的做法是跟它串聯(lián)一個(gè)電阻,電阻越大燈越暗是吧,但這樣的實(shí)現(xiàn)方式太古板且單片機(jī)控制不了。當(dāng)我們快速地,非??焖俚卦谝粋€(gè)引腳以占空比50%變換電平,這個(gè)變換的頻率一般要大于24hz(24幀),人眼就判斷不了你什么時(shí)候開什么時(shí)候關(guān),只會看到一個(gè)整體呈現(xiàn)出來的效果,那就是亮度變?yōu)樵镜?0%,如果占空比變?yōu)?0%,那亮度也變成30%。

(動態(tài)顯示、開關(guān)升壓等都是差不多原理)

PWM就是調(diào)占空比的意思,要定義引腳為PWM輸出,才可以調(diào)節(jié)它的占空比。

在micropython里引腳的占空比100%定義為1023,所以占空比的范圍是0-1023,ok,我們先讓引腳輸出5ms的占空比1電平,再輸出5ms的占空比2電平…一直到占空比1023,(即占空比100%),這樣就是一個(gè)緩慢點(diǎn)亮的燈,再相反,讓它慢慢熄滅,一直循環(huán),搞定!

如果理解了,可以把跑馬燈程序改改,變成呼吸跑馬燈;或者改變不同顏色的燈呼吸的速度做出絢麗效果,你就是點(diǎn)燈大師!

附上其他文章的鏈接:
《吃白菜一樣用micropython玩esp32(一)—— 搭建環(huán)境》
《吃白菜一樣用micropython玩esp32(三)—— 觸摸按鍵、ADC》
《吃白菜一樣用micropython玩esp32(四)—— siri遠(yuǎn)程控制點(diǎn)燈》

推薦器件

更多器件
器件型號 數(shù)量 器件廠商 器件描述 數(shù)據(jù)手冊 ECAD模型 風(fēng)險(xiǎn)等級 參考價(jià)格 更多信息
MOC3021SR2M 1 Rochester Electronics LLC 1 CHANNEL TRIAC OUTPUT OPTOCOUPLER, SURFACE MOUNT, DIP-6
$0.68 查看
FM25CL64B-GA 1 Ramtron International Corporation Memory Circuit, 8KX8, CMOS, PDSO8, GREEN, MS-012AA, SOIC-8
$4.61 查看
B39431R964H110 1 TDK Corporation 1-Port Saw Resonator, 434.15MHz Nom, ROHS COMPLIANT, SMD, DCC6E, 6 PIN
暫無數(shù)據(jù) 查看

相關(guān)推薦

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