按键是在日常生活中最常用的输入设备,通常用到的按键是机械弹性开关。当开关闭合时,线路导通;当开关断开时,线路断开。按键与核心电路模组的连接方法非常简单,模组的IO 端直接与按键相连。比如开发板模组GPIO0 就直接连接外围输入按键BOOT,如图1-2-43所示。而检测按键的原理与单片机原理是一样的,当检测按键时GPIO 用的是它的输入功能,把按键的一端接地,另一端与模组的某个GPIO 口相连,开始时先给该I/O 口赋一高电平,然后让8266 不断地检测该I/O 口是否变为低电平,当按键闭合时,即相当于该口通过按键与地相连,变成低电平,程序一旦检测到I/O 口变为低电平则说明按键被按下,然后执行相应的指令。
图1-2-43 按键/指示灯原理图
由图1-2-44 可知,引入按键控制,只需完成两点:
(1)将GPIO0 设置为输入模式,检测外部事件。我们要选择GPIO0 口为IO 模式,就要用 到 PIN_FUNC_SELECT( PIN_NAME, FUNC) 函 数, 其 中 PIN_NAM 参 数 填 写PERIPHS_IO_MUX_GPIO0_U,以确定其引脚;FUNC 参数通过表 1-2-3 可知,填写FUNC_GPIO4。到这里只是设置了GPIO0 为IO 模式,而我们需要的是0 口为输入模式,所以还要将4 口指定为输入模式。这里又要用到了GPIO_DIS_OUTPUT(gpio_no)函数,gpio_no参数通过上一节我们知道就是引脚号,这里就填写GPIO_ID_PIN(0)。这样一来,GPIO0 的功能就设置好了,选择IO 模式中的输入。接着我们就要确定GPIO0 的上拉状态(有不清楚的同学翻看单片机相关的章节,这里就不细讲)了,通过图1-2-44 可知,GPIO0 外接了一个电阻R3 来进行电源上拉,所以要将GPIO0 内部默认的上拉高电平状态取消。
图1-2-44 ESP8266 核心电路原理图
通过API 参考手册,我们知道上拉取消需要PIN_PULLUP_DIS(PIN_NAME)函数。最终GPIO0 的所有设置就完成了,如图1-2-45 所示。
(www.xing528.com)
图1-2-45 GPIO0 输入模式设置
(2)判断外部是否触发按键。首先我们要能读取GPIO0 的引脚电平状态,通过查阅API手册,我们查找到了GPIO_INPUT_GET(gpio_no)函数,这样就能很方便地获取GPIO0 的状态了,程序如图1-2-46 所示。
【程序1.2.3】按下BOOT 键LED 亮,松开BOOT 键LED 灭。
上面的程序是没有加软件防抖的,同学们可以利用单片机的相关知识,加上防抖程序。唯有多练习、多实践才是学好ESP8266 的唯一途径。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。