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)