esp8266学习笔记③:GPIO模块

GPIO引脚映射

IO INDEXEXP8266 PIN IO
0[*]GPIO16
1GPIO5
2GPIO4
3GPIO0
4GPIO2
5GPIO14
6GPIO12
7GPIO13
8GPIO15
9GPIO3
10GPIO1
11GPIO9
12GPIO10
备注[*] D0(GPIO16) 只能用作 gpio 读写,不支持中断,i2c/pwm/ow

每个开发版上GPIO映射的管脚都不一样,一般官方的资料上都有。

GPIO用到的常量


gpio.OUTPUT ——GPIO输出
gpio.INPUT ——GPIO输入
gpio.INT ——GPIO中断
gpio.HIGH ——GPIO高电平
gpio.LOW ——GPIO低电平
gpio.PULLUP ——GPIO上拉模式
gpio.FLOAT ——GPIO浮空模式


GPIO的使用

gpio.mode()
功能:选择pin管脚,设置gpio的模式
语法:gpio.mode(pin, mode, pullup)
参数:
pin为I/O口映射的编号0~12
mode为GPIO的输入输出模式,分别为:gpio.OUTPUT,gpio.INPUT,gpio.INT
pullup分为两种:gpio.PULLUPHgpio.FLOAT,默认为gpio.FLOAT
返回值:nil

gpio.read
功能:读取pin管脚的高低电平
语法:gpio.read(pin)
参数:
pin为I/O口映射的编号0~12
返回值:0表示低电平1表示高电平

gpio.write()
功能:设置管脚的高低电平
语法:gpio.write(pin,level)
参数:
pin为I/O口映射的编号0~12
level为高低电平gpio.HIGHgpio.LOW
返回值:nil

gpio.trig()
功能:设置管脚中断模式的回调函数
语法:gpio.trig(pin, type, function(level))
参数:
pin为I/O口映射的编号1~12,0不支持中断
type取值为up——上升沿触发,down——下降沿触发,both——双边沿触发,low——低电平触发,high——高电平触发
function(level) 中断触发的回调函数,GPIO 的电平作为输入参数。如果此处 没有定义函数,则使用之前定义的回调函数。
返回值:nil

GPIO应用实例

按键控制LED灯的亮灭

led=4
key=7
flag=true	--设置一个标志位
gpio.mode(led, gpio.OUTPUT)	--设置PIN4为输出模式,接LED
gpio.mode(key, gpio.INPUT,gpio.PULLUP)	--设置PIN7为输入模式,接按键
while true do	--一直在循环检测按键是否按下
    if gpio.read(key)==1 and  flag == true then  --按键按下
        gpio.write(led, gpio.HIGH)	--PIN4输出高电平
        flag=false
    elseif gpio.read(key)==1 and  flag == false then		--按键再次按下
        gpio.write(led, gpio.LOW)	--PIN4输出低电平
        flag=true
    end
    while gpio.read(key)==0 do		--如果按键没松开就停在这里
        tmr.wdclr()	--关闭看门狗
    end
    tmr.wdclr()
end

注:tmr.wdclr是清除看门狗的函数,在timer模块中会讲到,当有一个长时间的循环时,要加上tmr.wdclr防止重启。

记录按键按下的时间

pin = 5
time = 0
gpio.mode(pin,gpio.INT,gpio.PULLUP) 	--设置gpio的模式为上拉,中断模式
function fun(level)    	--定义一个fun()函数
    if level == 1 then 
        print(tmr.now()-time)	--打印按键按下的时间
        gpio.trig(pin , "down")	
    else 
        time = tmr.now()
        gpio.trig(pin , "up") 
    end 
end 
gpio.trig(pin, "down",fun)

注:tmr.now()函数可以看成已开机多少时间,没有参数,单位为微秒。

  • 3
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值