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指示灯,电机以不同速度正反转。

图片

实现现象

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

    关注

    2547

    文章

    50522

    浏览量

    751392
  • PWM
    PWM
    +关注

    关注

    114

    文章

    5124

    浏览量

    213287
  • 开发板
    +关注

    关注

    25

    文章

    4920

    浏览量

    97114
  • IO口
    +关注

    关注

    3

    文章

    169

    浏览量

    23977
  • ESP8266
    +关注

    关注

    50

    文章

    962

    浏览量

    44779
收藏 人收藏

    评论

    相关推荐

    ESP8266WIFI

    esp8266图文,AT例程!!!!!!!!!!
    发表于 11-10 17:09 0次下载

    ESP8266系列模块选型

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

    ESP8266WiFi扩展板产品使用说明书

    ESP8266WiFi扩展板
    发表于 03-19 11:47 16次下载

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

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

    esp8266wifi实例

    ESP8266WiFi扩展板是深圳四博智联科技有限公司开发的一款基于乐鑫ESP8266的超低功耗的UART-WiFi模块,本文介绍了ESP8266的特点以及使用总结跟示例
    发表于 12-08 13:34 1.9w次阅读

    esp8266 at指令集详解

    ESP8266可广泛应用于智能电网、智能交通、智能家具、手持设备、工业控制等领域。本文介绍了esp8266 at指令集,以及ESP8266使用AT指令开发示例
    发表于 12-08 13:52 14.3w次阅读
    <b class='flag-5'>esp8266</b> at指令集详解

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

    本文首先介绍了esp8266引脚图功能esp8266特性,其次介绍了 单片机与ESP8266连接及最小系统连接与程序分享,最后介绍了
    发表于 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
    发表于 10-25 16:51 43次下载
    <b class='flag-5'>ESP8266</b>-NodeMCU

    ESP8266 wifi模块开发汇总

                                  ESP8266 wifi模块开发汇总 ESP8266 wifi模块开发汇总本文档主要介绍开发者在ESP8266开发中常见的一些问题。 这些
    发表于 11-05 19:21 188次下载
    <b class='flag-5'>ESP8266</b> wifi模块开发汇总

    小白驱动C51+ESP8266局域网与APP通讯控制IO

    小白驱动C51+ESP8266局域网与APP通讯控制IO
    发表于 11-23 17:51 17次下载
    小白驱动C51+<b class='flag-5'>ESP8266</b>局域网与APP通讯控制<b class='flag-5'>IO</b><b class='flag-5'>口</b>

    esp笔记(2)使用Arduino IDE 开发 esp8266

    的 LED灯Esp8266 V3 开发板V3 开发板的MCU为esp8266,并且板载了USB转串口模块,使得我们可以通过串口打印将数据发送到PC中,GPIO2还连接了...
    发表于 12-05 14:51 55次下载
    <b class='flag-5'>esp</b>笔记(2)使用Arduino IDE 开发 <b class='flag-5'>esp8266</b>

    ESP8266学习之路——环境部署

    文章目录前言ESP8266SDK前言ESP8266SDK官方链接
    发表于 12-22 18:47 28次下载
    <b class='flag-5'>ESP8266</b>学习之路——环境部署

    ESP8266硬件

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

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

    的且集成的国产WIFI模块,它有很多种型号,但是使用方法没什么太大的区别,也可以说没区别,有些看起来引脚比较多的ESP8266模块只是将这个芯片的IO拓展出来了而已。还有 一种原因就是它采用的是Micropython编程的
    发表于 05-30 09:53 28次下载
    <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 3591次阅读
    nodemcu和<b class='flag-5'>esp8266</b>是什么关系?