概述
我們已經看過幾個使用各種微控制器(或IC)的PWM教程,如8051,Arduino,Raspberry Pi和IC 555.使用PWM技術,我們控制了LED的強度(增加或減少了亮度),改變了直流電機的速度(增加或減少速度),還旋轉了伺服電機。
現在在ESP8266 PWM教程中,我將控制連接到ESP8266 WiFi模塊的GPIO2引腳的LED的亮度,即使用ESP8266進行LED衰落。
ESP8266中的PWM
ESP8266EX微控制器即所有ESP8266模塊(如ESP-01,NodeMCU等)的核心SoC由四個組成專用PWM輸出接口。 ESP8266EX中與PWM對應的引腳如下:
ESP8266EX中的PWM引腳
引腳名稱Pin Number
MTDI10
MTDO13
MTMS9
GPIO416
如果您發現,我們的ESP8266 ESP-01 WiFi模塊中沒有這四個引腳。那么我們如何在ESP8266中實現PWM呢?
這個問題的答案非常簡單:使用軟件編程,即準確使用微控制器的定時器。
ESP8266 WiFi模塊中的PWM可以通過定時器中斷實現。 PWM信號的頻率可以是1Hz到1KHz之間的任何值(有人說,最低頻率是100Hz!)。
如何在ESP8266中實現PWM?
ESP8266中PWM生成的軟件實現與Arduino中的非常相似。由于我們使用Arduino IDE對ESP8266進行編程,因此負責產生PWM信號的功能是analogWrite(與我們在Arduino中使用的功能相同)。
analogWrite函數有兩個參數:引腳號和PWM值。代替引腳編號,輸入要通過其使用PWM輸出的引腳編號。
進入PWM值,此處需要輸入基于的值PWM的分辨率。對于Arduino,分辨率為8位,因此您必須輸入介于0和255之間的值。
對于ESP8266,ESP8266中的PWM使用10位分辨率。因此,您必須輸入0到1023之間的值。這里,PWM值“0”表示0%占空比,PWM值“1023”表示100%占空比。 0到1023之間的任何值都將成為占空比。
注意:
如果ESP8266中的一個引腳被分配了analogWrite來產生PWM信號,則它不能用作數字輸出引腳,即你不能使用digitalWrite();該引腳上的功能。
為了將該引腳用作數字引腳,您需要寫入analogWrite(引腳號,0)以釋放它。
用于LED衰落的ESP8266 PWM教程電路圖
下圖是使用Arduino作為USB轉串口轉換器編程ESP8266 WiFi模塊的電路圖以及使用PWM信號的LED衰落。
所需組件
ESP8266 WiFi模塊(ESP-01)
Arduino UNO
按鈕
SPDT開關(滑動開關)
電阻器(1KΩ和2.2KΩ)
小型LED(5mm或3mm)
連接線
面包板
連接LED(我使用的是8mm LED,你可以使用5mm或3mm LED和限流電阻istor)到ESP8266 WiFi模塊的GPIO2引腳。
VCC和CH_PD連接到3.3V電源,GND連接到GND。 ESP8266 WiFi模塊的RST(復位)引腳通過按鈕連接到GND。
現在,ESP8266的RX和TX引腳連接到RX和TX Arduino UNO。請注意,電路圖中ESP8266的RX引腳并未直接連接到Arduino的RX引腳,而是通過電平轉換器(由1KΩ和2.2KΩ電阻組成)。
最后,GPIO0引腳。該引腳負責在ESP8266中啟用編程模式。將GPIO0引腳連接到SPDT滑動開關,即連接到其中心端子,并將兩個端子中的一個連接到GND。另一個端子用作GPIO引腳。
代碼
ESP8266的代碼PWM LED衰落教程如下:
工作
正確連接所有連接后按照電路圖,在ESP8266中啟用編程模式,即將GPIO0開關滑動到GND位置并按下RST按鈕。
使用Arduino IDE上傳代碼(首先選擇Generic板上的ESP8266模塊以及正確的端口號。)
上傳程序后,將GPIO0引腳滑動到GPIO位置并按下RST按鈕一次。現在,代碼將開始運行,最初您可以看到LED通過5步到最大強度緩慢增加亮度。
此后,淡入淡出動作開始于LED褪色進出,即從低到高,從高到低是循環。
應用
ESP8266 PWM教程只是ESP8266 WiFi模塊PWM功能的演示。
使用ESP8266中的PWM技術,可以實現多個項目,如伺服電機控制,網絡控制伺服,直流電機速度控制等
-
led
+關注
關注
242文章
23153瀏覽量
658620 -
PWM
+關注
關注
114文章
5153瀏覽量
213456 -
ESP8266
+關注
關注
50文章
962瀏覽量
44852
發布評論請先 登錄
相關推薦
評論