7.脈衝寬度調製
脈衝寬度調製(PWM)是一種在數字引腳上獲得仿真模擬輸出的方法。它通過快速切換引腳從低到高來實現這一點。有兩個與此相關的參數:切換頻率和占空比。佔空比定義為引腳與單個週期的長度(低加高時間)相比的高度。最大佔空比是指引腳始終處於高電平時,最小占空比始終處於低電平時。
在ESP8266上,引腳0,2,4,5,12,13,14和15都支持PWM。限制是它們必須都處於相同的頻率,頻率必須在1Hz和1kHz之間。
要在引腳上使用PWM,必須首先創建引腳對象,例如:
>>> 進口 機器
>>> p12 = 機器。針(12 )
然後使用以下命令創建PWM對象:
>>> pwm12 = 機器。PWM (p12 )
您可以使用以下方法設置頻率和占空比:
>>> pwm12 。freq (500 )
>>> pwm12 。職責(512 )
請注意,佔空比介於0(全關)和1023(全開)之間,512為50%佔空比。超出此最小值/最大值的值將被剪裁。如果您打印PWM對象,它將告訴您當前的配置:
>>> pwm12
PWM(12,freq = 500,佔空比= 512)
您也可以調用沒有參數的freq()和duty()方法來獲取它們的當前值。
該引腳將繼續處於PWM模式,直到您使用以下方式對其進行去初始化:
>>> pwm12 。deinit ()
7.1。褪色LED
我們使用PWM功能來淡化LED。假設您的電路板的LED連接到引腳2(ESP-12模塊),我們可以使用以下方法創建LED-PWM對象:
>>> led = 機器。PWM (機器。引腳(2 ), 頻率= 1000 )
請注意,我們可以在PWM構造函數中設置頻率。
對於下一部分,我們將使用計時和一些數學,因此導入這些模塊:
>>> 導入 時間, 數學
然後創建一個脈衝LED的功能:
>>> def pulse (l , t ):
... for i in range (20 ):
... l 。值班(INT (數學。罪(我 / 10 * 數學。圓周率) * 500 + 500 ))
... 的時間。sleep_ms (t )
您可以使用以下方法嘗試此功能:
>>> 脈衝(led , 50 )
為了獲得良好的效果,您可以連續多次脈衝:
>>> for i in range (10 ):
... pulse (led , 20 )
請記住,您可以使用ctrl-C來中斷代碼。
7.2。控制愛好伺服
可以使用PWM控制Hobby伺服電機。它們需要50Hz的頻率,然後佔空比在40到115之間,其中77是中心值。如果將伺服電源連接到電源和接地引腳,然後將信號線連接到引腳12(其他引腳也可以正常工作),則可以使用以下方式控制電機:
>>> 伺服 = 機器。PWM (機。引腳(12 ), 頻率= 50 )
>>> 伺服。職責(40 )
>>> 伺服。職責(115 )
>>> 伺服。職責(77 )
脈衝寬度調製(PWM)是一種在數字引腳上獲得仿真模擬輸出的方法。它通過快速切換引腳從低到高來實現這一點。有兩個與此相關的參數:切換頻率和占空比。佔空比定義為引腳與單個週期的長度(低加高時間)相比的高度。最大佔空比是指引腳始終處於高電平時,最小占空比始終處於低電平時。
在ESP8266上,引腳0,2,4,5,12,13,14和15都支持PWM。限制是它們必須都處於相同的頻率,頻率必須在1Hz和1kHz之間。
要在引腳上使用PWM,必須首先創建引腳對象,例如:
>>> 進口 機器
>>> p12 = 機器。針(12 )
然後使用以下命令創建PWM對象:
>>> pwm12 = 機器。PWM (p12 )
您可以使用以下方法設置頻率和占空比:
>>> pwm12 。freq (500 )
>>> pwm12 。職責(512 )
請注意,佔空比介於0(全關)和1023(全開)之間,512為50%佔空比。超出此最小值/最大值的值將被剪裁。如果您打印PWM對象,它將告訴您當前的配置:
>>> pwm12
PWM(12,freq = 500,佔空比= 512)
您也可以調用沒有參數的freq()和duty()方法來獲取它們的當前值。
該引腳將繼續處於PWM模式,直到您使用以下方式對其進行去初始化:
>>> pwm12 。deinit ()
7.1。褪色LED
我們使用PWM功能來淡化LED。假設您的電路板的LED連接到引腳2(ESP-12模塊),我們可以使用以下方法創建LED-PWM對象:
>>> led = 機器。PWM (機器。引腳(2 ), 頻率= 1000 )
請注意,我們可以在PWM構造函數中設置頻率。
對於下一部分,我們將使用計時和一些數學,因此導入這些模塊:
>>> 導入 時間, 數學
然後創建一個脈衝LED的功能:
>>> def pulse (l , t ):
... for i in range (20 ):
... l 。值班(INT (數學。罪(我 / 10 * 數學。圓周率) * 500 + 500 ))
... 的時間。sleep_ms (t )
您可以使用以下方法嘗試此功能:
>>> 脈衝(led , 50 )
為了獲得良好的效果,您可以連續多次脈衝:
>>> for i in range (10 ):
... pulse (led , 20 )
請記住,您可以使用ctrl-C來中斷代碼。
7.2。控制愛好伺服
可以使用PWM控制Hobby伺服電機。它們需要50Hz的頻率,然後佔空比在40到115之間,其中77是中心值。如果將伺服電源連接到電源和接地引腳,然後將信號線連接到引腳12(其他引腳也可以正常工作),則可以使用以下方式控制電機:
>>> 伺服 = 機器。PWM (機。引腳(12 ), 頻率= 50 )
>>> 伺服。職責(40 )
>>> 伺服。職責(115 )
>>> 伺服。職責(77 )