0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

浅谈ESP8266的IO口功能

CHANBAEK 来源:TonyCode 作者:TonyCode 2023-05-19 14:34 次阅读

IOT Kit开发板上提供了一些基础的外设及传感器,本篇通过驱动按键、LED灯、继电器、光敏电阻电机来学习ESP8266的IO口功能,即数字输入、数字输出、模拟输入和PWM模拟输出功能。

1. 数字IO

Arduino for ESP8266可以使用Arduino操作IO口的方式,即使用pinMode、digitalRead和digitalWrite函数进行操作:

  • 使用pinMode(pin, mode)来设置GPIO口工作模式,pin取值范围0 ~ 16,mode可选值见下文;
  • 使用digitalRead(pin)来读取GPIO口电平,返回值为HIGH或LOW,即1和0;
  • 使用digitalWrite(pin, value)来设置输出状态,value可选值为HIGH或LOW,即1和0;
  • 数字引脚0-15可设置为INPUT、OUTPUT、INPUT_PULLUP模式(输入、输出、上拉输入);数字引脚16可设置为INPUT、OUTPUT、INPUT_PULLDOWN_16模式(输入、输出、下拉输入);启动时,这些引脚默认配置为INPUT模式;
  • 引脚还可以提供其他功能,例如串口、I2C、SPI,这些函数通常由相应的库配置。

在IOT Kit开发板上,按键一端连接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开发板上,光敏电阻通过分压电阻连接到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开发板上的电机驱动芯片为L9110S,当两个控制引脚INA和INB同时高电平或低电平时,电机停止,当两个引脚一高一低时可对电机进行正反转控制。

图片

电机驱动电路

//加速正转
  analogWrite(MotorB_Pin, 0);
  for(int i=10;i<30;i++)
  {
    analogWrite(MotorA_Pin, i);
    delay(10);
  }

  //减速反转
  analogWrite(MotorA_Pin, 0);
   for(int i=30;i>10;i--)
  {
    analogWrite(MotorB_Pin, i);
    delay(10);
  }

3. 程序下载验证

将开发板连接电脑进行程序下载,上传完成后,OLED显示ADC值,通过遮挡光敏电阻可看到数字改变。通过按键可控制继电器及LED指示灯,电机以不同速度正反转。

图片

实现现象

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 传感器
    +关注

    关注

    2525

    文章

    48129

    浏览量

    740210
  • PWM
    PWM
    +关注

    关注

    114

    文章

    4901

    浏览量

    209969
  • 开发板
    +关注

    关注

    25

    文章

    4437

    浏览量

    94085
  • IO口
    +关注

    关注

    3

    文章

    164

    浏览量

    23764
  • ESP8266
    +关注

    关注

    50

    文章

    947

    浏览量

    43994
收藏 人收藏

    评论

    相关推荐

    8266IO模块原理图

    ESP8266IO模块原理图。
    发表于 10-29 15:16 208次下载

    ESP8266系列模块选型

    ESP8266系列模块选型ESP8266 ESP-01 ESO-02
    发表于 01-05 17:34 37次下载

    使用esp8266实现STM32联网(最简单USART方法)

    上一篇 esp8266怎么配置esp8266和USB转TTL连接esp8266简单介绍esp8266连接路由器esp8266通过路由器连接在
    发表于 11-22 11:51 1.1w次阅读

    ESP8266 Wi-Fi到底传多远_esp8266 wifi信号强度测距

    esp8266是一个具有WiFi功能的开发板,它是由一家名为乐鑫的科技公司所设计,在由安信可科技公司负责生产,在以前要买到具有WiFi功能的开发板都要上千元,esp8266打破了这个价
    发表于 04-12 10:39 5w次阅读

    esp8266中文资料汇总(esp8266引脚图_与单片机连接_串口wifi实例)

    本文首先介绍了esp8266引脚图功能esp8266特性,其次介绍了 单片机与ESP8266串口连接及最小系统连接与程序分享,最后介绍了esp8
    发表于 05-24 08:36 22.2w次阅读
    <b class='flag-5'>esp8266</b>中文资料汇总(<b class='flag-5'>esp8266</b>引脚图_与单片机连接_串口wifi实例)

    如何将ESP8266连接到WiFi

    在之前的ESP8266项目中,我简要介绍了ESP8266 WiFi模块,如何开始使用ESP8266和Arduino,ESP8266 ESP-
    的头像 发表于 07-29 11:32 8.5w次阅读
    如何将<b class='flag-5'>ESP8266</b>连接到WiFi

    怎样使用ESP8266 Flasher和Programmer烧写ESP8266 AT固件

    选择要连接的COM端口ESP8266 Flasher和Programmer + ESP8266 Wifi串行收发器模块。将BAUDRATE设置为115200。
    的头像 发表于 11-18 17:58 2w次阅读

    Esp8266原理图分享

    Esp8266原理图免费下载。
    发表于 06-18 11:21 468次下载

    ESP8266-NodeMCU

    ESP8266-NodeMCUESP8266-NodeMCU引脚功能1.1 可用引脚1.2 电压电流限制1.3 特殊引脚情况说明1.4 上拉电阻/下拉电阻1.5 模拟输入1.6 串行端口1.7
    发表于 10-25 16:51 40次下载
    <b class='flag-5'>ESP8266</b>-NodeMCU

    ESP8266】接入bl

    ESP8266】接入bl
    发表于 12-08 13:36 10次下载
    【<b class='flag-5'>ESP8266</b>】接入bl

    ESP8266之硬件机理

    ESP8266硬件机理1.ESP8266简介2.硬件结构3.运行机理3.1 Warning3.2 机理4.快速搭建服务器Attention4.1进入STA模式4.2复位4.3获取附近能够连接
    发表于 12-09 12:21 31次下载
    <b class='flag-5'>ESP8266</b>之硬件机理

    ESP8266使用教程之初识

    一.ESP8266介绍​ 这里将会使用正点原子的 ATK-ESP8266 为例,来说明 ESP8266 的使用。​ 该模块上面板载了安可信的公司的 ESP8266 模块,ATK-
    发表于 01-04 18:59 80次下载
    <b class='flag-5'>ESP8266</b>使用教程之初识

    ESP8266硬件

    目前市面上有关ESP8266模组有很多的种类,但是都是使用的乐鑫公司开发的ESP8266的wifi模组,而且种类也很多。
    的头像 发表于 02-10 14:25 3162次阅读
    <b class='flag-5'>ESP8266</b>硬件

    ESP8266初次如何实现无线通信(基于电脑与ESP8266)

    的且集成的国产WIFI模块,它有很多种型号,但是使用方法没什么太大的区别,也可以说没区别,有些看起来引脚比较多的ESP8266模块只是将这个芯片的IO口拓展出来了而已。还有 一种原因就是它采用的是Micropython编程的ESP826
    发表于 05-30 09:53 14次下载
    <b class='flag-5'>ESP8266</b>初次如何实现无线通信(基于电脑与<b class='flag-5'>ESP8266</b>)

    nodemcu和esp8266是什么关系?

    nodemcu和esp8266是什么关系 nodemcu和esp8266是什么关系?通俗理解就是nodemcu是一个开发板,基于esp8266的开发板。 目前市面上搭载有ESP8266
    的头像 发表于 10-20 14:53 2307次阅读
    nodemcu和<b class='flag-5'>esp8266</b>是什么关系?