0°

(二)ESPlorer系列:NodeMCU GPIO介绍

介绍

通用输入/输出(GPIO)是IC(集成电路)上的引脚。它可以是输入引脚或输出引脚,其行为可以在运行时控制。

NodeMCU开发套件提供对ESP8266的这些GPIO的访问。唯一需要注意的是NodeMCU Dev kit引脚的编号与ESP8266的内部GPIO符号不同,如下图和表所示。例如,NodeMCU开发套件上的D0引脚映射到ESP8266的内部GPIO引脚16。

(二)ESPlorer系列:带有ESPlorer IDE的NodeMCU GPIO

NodeMCU GPIO

下表给出了NodeMCU Dev Kit IO引脚和ESP8266内部GPIO引脚映射

(二)ESPlorer系列:带有ESPlorer IDE的NodeMCU GPIO

蓝色框(1,3,9,10)中显示的GPIO大部分不用于开发套件中的GPIO用途

ESP8266是片上系统(SoC)设计,具有处理器芯片等组件。处理器有大约16条GPIO线,其中一些用于内部与SoC的其他组件接口,如闪存。

由于ESP8266 SoC内部使用了几条线路,因此我们还有大约11个GPIO引脚用于GPIO。

现在,11个中的2个引脚通常被保留用于RX和TX,以便与通过其下载编译的目标代码的主机PC通信。

因此,最后,这只留下了9个通用I / O引脚,即D0到D8。

如NodeMCU Dev Kit的上图所示。我们可以看到RX,TX,SD2,SD3引脚并不主要用作GPIO,因为它们用于其他内部处理。但我们可以尝试使用SD3(D12)引脚,它主要用于响应GPIO / PWM /中断等功能。

注意,D0 / GPIO16引脚只能用作GPIO读/写,不支持特殊功能。

现在让我们看一下将引脚初始化为GPIO模式,设置引脚方向及其状态(高/低)所需的功能

NodeMCU GPIO功能

gpio.mode()

该功能用于将引脚初始化为GPIO模式。

句法

gpio.mode(pin, mode [, pullup])

参数

  • Pin:引脚号
  • Mode: gpio.OUTPUT,gpio.OPENDRAIN,gpio.INPUT或gpio.INT(中断模式)之一
  • Pullup: gpio.PULLUP使能弱上拉电阻。默认为gpio.FLOAT

返回: null

gpio.mode(0, gpio.OUTPUT)  -- Setting 0th pin as GPIO output pin

gpio.read()

该功能用于读取GPIO引脚的数字值。

句法

gpio.read(pin)

参数

  • Pin:别针 阅读。

gpio.read(0)   -- Read digital value of D0 (GPIO16) pin.

gpio.write()

此功能用于设置数字GPIO引脚值。

句法

gpio.write(pin, level)

参数

  • Pin:引脚写入,IO索引
  • Level: gpio.HIGH或gpio.LOW

返回: null

gpio.mode(1, gpio.OUTPUT)–- set 1st pin as GPIO output pin
gpio.write(1, gpio.HIGH) –- set 1st GPIO output pin to High.

让我们为D4引脚上的LED写一个闪烁的Lua脚本

这里我们使用定时器延迟功能来设置LED ON和LED OFF状态之间的延迟。

tmr.delay()

定时器的这个功能用于提供以微秒为单位的延迟。

句法

tmr.delay(microseconds)

参数

  • microseconds:输入参数不需要微秒。

返回null

tmr.delay(100) –- delay of 100 microseconds.

用于LED闪烁的Lua脚本

LEDpin = 4         -- Declare LED pin no.
delayuS = 500000   -- Set delay in microSecond. here 0.5 second

gpio.mode(LEDpin,gpio.OUTPUT)-- Set LED pin as GPIO output pin
while(1)           -- Define infinite while loop
do
gpio.write(LEDpin,gpio.HIGH)-- Set LED pin HIGH i.e. LED ON
tmr.delay(delayuS) -- timer Delay
gpio.write(LEDpin,gpio.LOW)-- Set LED pin LOW i.e. LED OFF
tmr.delay(delayuS) -- timer Delay
end

还有另一种定时器报警选项,我们可以通过设置特定时间的重复报警来切换LED。下面是定时器报警功能信息和LED闪烁示例。

tmr.alarm()

该功能将tmr.register()定时器寄存器)和tmr.start()(定时器启动)操作组合到一个功能中。要在完成使用后停止计时器,请tmr.unregister()在其上调用(计时器取消注册)。对于一次性定时器,这不是必需的,除非它们在到期之前停止。

句法

tmr.alarm([id/ref], interval_ms, mode, func())

参数

  • id/ref: timer id(0-6)或object。NodeMCU提供7个静态定时器,编号为0-6。
  • interval_ms:定时器间隔,以毫秒为单位。最大值为6870947(1:54:30.947)。
  • mode (timer mode)
  • tmr.ALARM_SINGLE – 一次性警报(无需拨打电话tmr.unregister())
  • tmr.ALARM_SEMI – 手动重复警报(调用tmr.start()重启)
  • tmr.ALARM_AUTO – 自动重复警报。
  • func(timer) :回调函数。

返回true如果计时器已启动,则返回false

用于LED闪烁的Lua脚本使用定时器警报

限制以下用户组阅读此隐藏内容

请先登录

您的用户组:

本教程完整程序下载:

限制以下用户组阅读此隐藏内容

请先登录

您的用户组:

ESP8266数据手册下载:

限制以下用户组阅读此隐藏内容

请先登录

您的用户组:
「点点赞赏,手留余香」

    还没有人赞赏,快来当第一个赞赏的人吧!
0 条回复 A 作者 M 管理员
    所有的伟大,都源于一个勇敢的开始!
欢迎您,新朋友,感谢参与互动!欢迎您 {{author}},您在本站有{{commentsCount}}条评论