在IOT Kit開發(fā)板上提供了一些基礎的外設及傳感器,本篇通過驅(qū)動按鍵、LED燈、繼電器、光敏電阻和電機來學習ESP8266的IO口功能,即數(shù)字輸入、數(shù)字輸出、模擬輸入和PWM模擬輸出功能。
1. 數(shù)字IO
Arduino for ESP8266可以使用Arduino操作IO口的方式,即使用pinMode、digitalRead和digitalWrite函數(shù)進行操作:
- 使用pinMode(pin, mode)來設置GPIO口工作模式,pin取值范圍0 ~ 16,mode可選值見下文;
- 使用digitalRead(pin)來讀取GPIO口電平,返回值為HIGH或LOW,即1和0;
- 使用digitalWrite(pin, value)來設置輸出狀態(tài),value可選值為HIGH或LOW,即1和0;
- 數(shù)字引腳0-15可設置為INPUT、OUTPUT、INPUT_PULLUP模式(輸入、輸出、上拉輸入);數(shù)字引腳16可設置為INPUT、OUTPUT、INPUT_PULLDOWN_16模式(輸入、輸出、下拉輸入);啟動時,這些引腳默認配置為INPUT模式;
- 引腳還可以提供其他功能,例如串口、I2C、SPI,這些函數(shù)通常由相應的庫配置。
在IOT Kit開發(fā)板上,按鍵一端連接GPIO16引腳,另一端通過電阻連接到3.3V電源,配置按鍵下拉輸入模式,則按鍵按下輸入高,按鍵抬起輸入低。
char keyCheck(void)
{
static char key_up=1;//按鍵松開
if(key_up&&(digitalRead(Key_Pin)==HIGH))
{
delay(10);//去抖動
key_up=0;
if(digitalRead(Key_Pin)==HIGH)return 1;
}else if(digitalRead(Key_Pin)==LOW)key_up=1;
return 0;// 無按鍵按下
}
繼電器連接GPIO15,通過下圖可知,輸出高電平繼電器開,輸出低電平繼電器關。ESP8266模塊上的LED燈連接GPIO2,輸出高電平關閉,輸出低電平打開。
繼電器電路圖
if(keyCheck()==1)
{
key_sta = !key_sta;
digitalWrite(Relay_Pin, key_sta);
digitalWrite(Led_Pin, !key_sta);
}
2. 模擬IO
ESP8266 有一個可供用戶使用的 ADC 通道。它可用于讀取 ADC 引腳上的電壓,或讀取模塊電源電壓 (VCC)。要讀取施加到 ADC 引腳的外部電壓,使用analogRead(A0),電壓量程為0 ~ 1.0V,ADC值范圍為0 ~ 1023。
在IOT Kit開發(fā)板上,光敏電阻通過分壓電阻連接到ADC引腳。當光線亮時,光敏電阻阻值減小,分壓電壓小,ADC值小,反之ADC值變大。
oled.print("ADC:");
oled.print(analogRead(A0)); //A0引腳ADC值 范圍0~1023
GPIO0 ~ 16支持PWM輸出,具體說明如下:
- 使用analogWrite(pin, value)來對pin上輸出PWM信號,value表示高電平保持時間,默認下value取值為0 ~ 1023,當value為0時即停止PWM輸出;
- 使用analogWriteRange(new_range)修改PWM value可寫范圍,默認range為1023;
- 使用analogWriteFreq(new_frequency)修改PWM頻率,new_frequency取值范圍100 ~ 40000Hz,默認為1000Hz;
IOT Kit開發(fā)板上的電機驅(qū)動芯片為L9110S,當兩個控制引腳INA和INB同時高電平或低電平時,電機停止,當兩個引腳一高一低時可對電機進行正反轉(zhuǎn)控制。
電機驅(qū)動電路
//加速正轉(zhuǎn)
analogWrite(MotorB_Pin, 0);
for(int i=10;i<30;i++)
{
analogWrite(MotorA_Pin, i);
delay(10);
}
//減速反轉(zhuǎn)
analogWrite(MotorA_Pin, 0);
for(int i=30;i>10;i--)
{
analogWrite(MotorB_Pin, i);
delay(10);
}
3. 程序下載驗證
將開發(fā)板連接電腦進行程序下載,上傳完成后,OLED顯示ADC值,通過遮擋光敏電阻可看到數(shù)字改變。通過按鍵可控制繼電器及LED指示燈,電機以不同速度正反轉(zhuǎn)。
實現(xiàn)現(xiàn)象
-
傳感器
+關注
關注
2545文章
50459瀏覽量
751117 -
PWM
+關注
關注
114文章
5119瀏覽量
213188 -
開發(fā)板
+關注
關注
25文章
4900瀏覽量
97070 -
IO口
+關注
關注
3文章
169瀏覽量
23970 -
ESP8266
+關注
關注
50文章
962瀏覽量
44758
發(fā)布評論請先 登錄
相關推薦
評論