ESP8266——PWM


1.脈沖寬度調制(PWM)

  脈沖寬度調制 (PWM) 是一種在數字引腳上獲取人工模擬輸出的方法。它通過快速切換引腳從低到高來實現這一點。有兩個參數與此相關:切換頻率和占空比。占空比定義為與單個周期長度(低加高時間)相比,銷的高度。最大占空比是引腳一直高時,最小值是一直低時。

在 ESP8266 上,引腳 0、2、4、5、12、13、14 和 15 均支持 PWM。限制是它們必須都在同一頻率,並且頻率必須介於 1Hz 和 1kHz 之間。

要在引腳上使用 PWM,必須首先創建引腳對象,例如:

>>> import machine
>>> p12 = machine.Pin(12)

然后使用以下功能創建 PWM 對象:

>>> pwm12 = machine.PWM(p12)

您可以使用以下功能設置頻率和占空比:

>>> pwm12.freq(500)
>>> pwm12.duty(512)

請注意,占空比介於 0(全部關閉)和 1023(全部打開)之間,512 為 50% 的關稅。超出此最小值/最大值的值將被剪切。如果打印 PWM 對象,它將告訴您其當前配置:

>>> pwm12
PWM(12, freq=500, duty=512)

還可以調用 和 方法,無需任何參數來獲取其當前值。freq()duty()

引腳將繼續處於 PWM 模式,直到您使用以下方式取消初始化:

>>> pwm12.deinit()

 2.指示燈褪色

讓我們使用 PWM 功能淡化 LED。假設主板的 LED 連接到引腳 2(ESP-12 模塊連接),我們可以使用:

>>> led = machine.PWM(machine.Pin(2), freq=1000)

請注意,我們可以在 PWM 構造函數中設置頻率。

對於下一部分,我們將使用計時和一些數學,所以導入這些模塊:

>>> import time, math

然后創建一個函數來脈沖 LED:

>>> def pulse(l, t):
...     for i in range(20):
...         l.duty(int(math.sin(i / 10 * math.pi) * 500 + 500))
...         time.sleep_ms(t)

您可以使用:

>>> pulse(led, 50)

為了獲得良好的效果,您可以連續多次脈沖:

>>> for i in range(10):
...     pulse(led, 20)

請記住,您可以使用 ctrl-C 來中斷代碼。

3.控制業余伺服

  使用 PWM 可以控制霍比伺服電機。它們需要 50Hz 的頻率,然后需要大約 40 到 115 之間的關稅,其中 77 是中心值。如果將伺服連接到電源和接地引腳,然后將信號線連接到引腳 12(其他引腳也能正常工作),則可以使用以下方式控制電機:

>>> servo = machine.PWM(machine.Pin(12), freq=50)
>>> servo.duty(40)
>>> servo.duty(115)
>>> servo.duty(77)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM