0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內(nèi)不再提示

淺談ESP8266的IO口功能

CHANBAEK ? 來源:TonyCode ? 作者:TonyCode ? 2023-05-19 14:34 ? 次閱讀

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)象

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 傳感器
    +關注

    關注

    2545

    文章

    50459

    瀏覽量

    751117
  • PWM
    PWM
    +關注

    關注

    114

    文章

    5119

    瀏覽量

    213188
  • 開發(fā)板
    +關注

    關注

    25

    文章

    4900

    瀏覽量

    97070
  • IO口
    +關注

    關注

    3

    文章

    169

    瀏覽量

    23970
  • ESP8266
    +關注

    關注

    50

    文章

    962

    瀏覽量

    44758
收藏 人收藏

    評論

    相關推薦

    ESP8266WIFI

    esp8266圖文,AT例程!?。。。。。。。?!
    發(fā)表于 11-10 17:09 ?0次下載

    ESP8266系列模塊選型

    ESP8266系列模塊選型ESP8266 ESP-01 ESO-02
    發(fā)表于 01-05 17:34 ?37次下載

    ESP8266WiFi擴展板產(chǎn)品使用說明書

    ESP8266WiFi擴展板
    發(fā)表于 03-19 11:47 ?16次下載

    使用esp8266實現(xiàn)STM32聯(lián)網(wǎng)(最簡單USART方法)

    上一篇 esp8266怎么配置esp8266和USB轉(zhuǎn)TTL連接esp8266簡單介紹esp8266連接路由器esp8266通過路由器連接在
    發(fā)表于 11-22 11:51 ?1.2w次閱讀

    esp8266wifi實例

    ESP8266WiFi擴展板是深圳四博智聯(lián)科技有限公司開發(fā)的一款基于樂鑫ESP8266的超低功耗的UART-WiFi模塊,本文介紹了ESP8266的特點以及使用總結(jié)跟示例
    發(fā)表于 12-08 13:34 ?1.9w次閱讀

    esp8266 at指令集詳解

    ESP8266可廣泛應用于智能電網(wǎng)、智能交通、智能家具、手持設備、工業(yè)控制等領域。本文介紹了esp8266 at指令集,以及ESP8266使用AT指令開發(fā)示例
    發(fā)表于 12-08 13:52 ?14.3w次閱讀
    <b class='flag-5'>esp8266</b> at指令集詳解

    esp8266中文資料匯總(esp8266引腳圖_與單片機連接_串口wifi實例)

    本文首先介紹了esp8266引腳圖功能esp8266特性,其次介紹了 單片機與ESP8266連接及最小系統(tǒng)連接與程序分享,最后介紹了
    發(fā)表于 05-24 08:36 ?22.5w次閱讀
    <b class='flag-5'>esp8266</b>中文資料匯總(<b class='flag-5'>esp8266</b>引腳圖_與單片機連接_串口wifi實例)

    ESP8266-NodeMCU

    ESP8266-NodeMCUESP8266-NodeMCU引腳功能1.1 可用引腳1.2 電壓電流限制1.3 特殊引腳情況說明1.4 上拉電阻/下拉電阻1.5 模擬輸入1.6 串行端口1.7 I
    發(fā)表于 10-25 16:51 ?43次下載
    <b class='flag-5'>ESP8266</b>-NodeMCU

    ESP8266 wifi模塊開發(fā)匯總

    ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ESP8266 wifi模塊開發(fā)匯總?ESP8266 wifi模塊開發(fā)匯總本文檔主要介紹開發(fā)者在ESP8266開發(fā)中常見的一些問題。 這些
    發(fā)表于 11-05 19:21 ?188次下載
    <b class='flag-5'>ESP8266</b> wifi模塊開發(fā)匯總

    小白驅(qū)動C51+ESP8266局域網(wǎng)與APP通訊控制IO

    小白驅(qū)動C51+ESP8266局域網(wǎng)與APP通訊控制IO
    發(fā)表于 11-23 17:51 ?17次下載
    小白驅(qū)動C51+<b class='flag-5'>ESP8266</b>局域網(wǎng)與APP通訊控制<b class='flag-5'>IO</b><b class='flag-5'>口</b>

    esp筆記(2)使用Arduino IDE 開發(fā) esp8266

    的 LED燈Esp8266 V3 開發(fā)板V3 開發(fā)板的MCU為esp8266,并且板載了USB轉(zhuǎn)串口模塊,使得我們可以通過串口打印將數(shù)據(jù)發(fā)送到PC中,GPIO2還連接了...
    發(fā)表于 12-05 14:51 ?55次下載
    <b class='flag-5'>esp</b>筆記(2)使用Arduino IDE 開發(fā) <b class='flag-5'>esp8266</b>

    ESP8266學習之路——環(huán)境部署

    文章目錄前言ESP8266SDK前言ESP8266SDK官方鏈接
    發(fā)表于 12-22 18:47 ?28次下載
    <b class='flag-5'>ESP8266</b>學習之路——環(huán)境部署

    ESP8266硬件

    目前市面上有關ESP8266模組有很多的種類,但是都是使用的樂鑫公司開發(fā)的ESP8266的wifi模組,而且種類也很多。
    的頭像 發(fā)表于 02-10 14:25 ?4531次閱讀
    <b class='flag-5'>ESP8266</b>硬件

    ESP8266初次如何實現(xiàn)無線通信(基于電腦與ESP8266)

    的且集成的國產(chǎn)WIFI模塊,它有很多種型號,但是使用方法沒什么太大的區(qū)別,也可以說沒區(qū)別,有些看起來引腳比較多的ESP8266模塊只是將這個芯片的IO拓展出來了而已。還有 一種原因就是它采用的是Micropython編程的
    發(fā)表于 05-30 09:53 ?28次下載
    <b class='flag-5'>ESP8266</b>初次如何實現(xiàn)無線通信(基于電腦與<b class='flag-5'>ESP8266</b>)

    nodemcu和esp8266是什么關系?

    nodemcu和esp8266是什么關系 nodemcu和esp8266是什么關系?通俗理解就是nodemcu是一個開發(fā)板,基于esp8266的開發(fā)板。 目前市面上搭載有ESP8266
    的頭像 發(fā)表于 10-20 14:53 ?3575次閱讀
    nodemcu和<b class='flag-5'>esp8266</b>是什么關系?