5.腳位控制
##新Gpio索引 (20141219及以后的版本采用)
ESP8266 的 Lua 語言
gpio.mode()
####描述 将pin初始化为GPIO并设置输入输出模式, 内部上拉方式。
####语法 gpio.mode(pin, mode, pullup)
####参数 pin: 0~12, IO编号
mode: 取值为:gpio.OUTPUT or gpio.INPUT, or gpio.INT(中断模式) pullup: 取值为:gpio.PULLUP or gpio.FLOAT, 默认为gpio.FLOAT
####返回值 nil
####示例
-- 将GPIO0设置为输出模式 gpio.mode(0, gpio.OUTPUT)
####参见 - gpio.read()
Arduino 的 C 語言
pinMode()
描述
指定一個 pin 腳做為輸入或者輸出,請見 數位 pin 腳 中的描述,其中有 pin 腳功能的詳細說明。
可以輸入 INPUT_PULLUP 參數來啟用輸入 pin 腳內部的 pull-up 電阻,或是輸入 INPUT 來關閉輸入 pin 腳內部的 pull-up 電阻。
語法
pinMode(pin, mode)
參數
pin: 你想設定的 pin 腳編號
mode: INPUT、OUTPUT 或 INPUT_PULLUP。(詳細功能與說明請看 數位 pin 腳)
回傳
無回傳值
範例
1
2
3
4
5
6
7
8
9
10
11
12
13
14
int ledPin = 13; // LED 與 pin13 是相連的
void setup()
{
pinMode(ledPin, OUTPUT); // 設定數位 pin 腳為輸出
}
void loop()
{
digitalWrite(ledPin, HIGH); // 點亮 LED 燈
delay(1000); // 等待一秒
digitalWrite(ledPin, LOW); // 熄滅 LED 燈
delay(1000); // 等待一秒
gpio.read()
####描述 读取管脚电平高低。
####语法 gpio.read(pin)
####参数 pin: 0~12, IO编号
####返回值 number:0:低电平, 1:高电平。
####示例
-- 读取GPIO0的电平 gpio.read(0)
####参见 - gpio.mode()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
int ledPin = 13; // LED 與 pin 13 連接
int inPin = 7; // 按鈕與 pin 7 連接
int val = 0; // 用 val 變數來儲存讀取到的數值
void setup()
{
pinMode(ledPin, OUTPUT); // 將數位 pin 腳 13 設定為輸出
pinMode(inPin, INPUT); // 將數位 pin 腳 7 設定為輸入
}
void loop()
{
val = digitalRead(inPin); // 讀取輸入 pin 腳
digitalWrite(ledPin, val); // 將 LED 設定成按鈕的數值
}
gpio.write()
####描述 设置管脚电平
####语法 gpio.write(pin)
####参数 pin: 0~12, IO编号
level: gpio.HIGH or gpio.LOW
####返回值 nil
####示例
-- 设置GPIO 1为输出模式,并将输出电平设置为高 pin=1 gpio.mode(pin, gpio.OUTPUT) gpio.write(pin, gpio.HIGH)
####参见 - gpio.mode()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
int ledPin = 13; // LED與 pin 13 連接
void setup()
{
pinMode(ledPin, OUTPUT); // 將數位 pin 腳設定為輸出
}
void loop()
{
digitalWrite(ledPin, HIGH); // 點亮 LED
delay(1000); // 等待 1 秒
digitalWrite(ledPin, LOW); // 熄滅 LED
delay(1000); // 等待 1 秒
}
gpio.trig()
####描述 设置管脚中断模式的回调函数。
####语法 gpio.trig(pin, type, function(level))
####参数 pin: 1~12, IO编号。注意 pin0 不支持中断。
type: 取值为"up", "down", "both", "low", "high", 分别代表上升沿、下降沿、双边沿、低电平、高电平触发方式。
function(level): 中断触发的回调函数,GPIO的电平作为输入参数。如果此处没有定义函数,则使用之前定义的回调函数。
####返回值 nil
####示例
-- 使用GPIO0检测输入脉冲宽度 pulse1 = 0 du = 0 gpio.mode(1,gpio.INT) function pin1cb(level) du = tmr.now() – pulse1 print(du) pulse1 = tmr.now() if level == 1 then gpio.trig(1, "down ") else gpio.trig(1, "up ") end end gpio.trig(1, "down ",pin1cb)
####参见 - gpio.mode()
#PWM模块
pwm.setup()
####描述 设置管脚为pwm模式,最多支持6个pwm。
####语法 pwm.setup(pin, clock, duty)
####参数 pin: 1~12, IO编号
clock: 11000, pwm频率
duty: 0~1023, pwm占空比,最大1023(10bit)。
####返回值 nil
####示例
-- 将管脚1设置为pwm输出模式,频率100Hz,占空比50-50 pwm.setup(1, 100, 512)
####参见 - pwm.start()
pwm.close()
####描述 退出pwm模式。
####语法 pwm.close(pin)
####参数 pin: 1~12, IO编号
####返回值 nil
####示例
pwm.close(1)
####参见 - pwm.start()
pwm.start()
####描述 pwm启动,可以在对应的GPIO检测到波形。
####语法 pwm.start(pin)
####参数 pin: 1~12, IO编号
####返回值 nil
####示例
pwm.start(1)
####参见 - pwm.stop()
pwm.stop()
####描述 暂停pwm输出波形。
####语法 pwm.stop(pin)
####参数 pin: 1~12, IO编号
####返回值 nil
####示例
pwm.stop(1)
####参见 - pwm.start()
pwm.setclock()
####描述 设置pwm的频率
-Note: 设置pwm频率将会同步改变其他pwm输出的频率,当前版本的所有pwm仅支持同一频率输出。
####语法 pwm.setclock(pin, clock)
####参数 pin: 112, IO编号
clock: 11000, pwm周期
####返回值 nil
####示例
pwm.setclock(1, 100)
####参见 - pwm.getclock()
pwm.getclock()
####描述 获取pin的pwm工作频率
####语法 pwm.getclock(pin)
####参数 pin: 1~12, IO编号
####返回值 number:pin的pwm工作频率
####示例
print(pwm.getclock(1))
####参见 - pwm.setclock()
pwm.setduty()
####描述 设置pin的占空比。
####语法 pwm.setduty(pin, duty)
####参数 pin: 112, IO编号
duty: 01023, pwm的占空比, 最大为1023.
####返回值 nil
####示例
pwm.setduty(1, 512)
####参见 - pwm.getduty()
pwm.getduty()
####描述 获取pin的pwm占空比。
####语法 pwm.getduty(pin)
####参数 pin: 1~12, IO编号
####返回值 number: 该pin的pwm占空比,最大为1023.
####示例
-- D1 连接绿色led -- D2 连接蓝色led -- D3 连接红色led pwm.setup(1,500,512) pwm.setup(2,500,512) pwm.setup(3,500,512) pwm.start(1) pwm.start(2) pwm.start(3) function led(r,g,b) pwm.setduty(1,g) pwm.setduty(2,b) pwm.setduty(3,r) end led(512,0,0) -- led显示红色 led(0,0,512) -- led显示蓝色
####参见 - pwm.setduty()
將 pin 13 設定為 HIGH 使 LED 燈亮起,延遲一秒後變為 LOW 使 LED 燈熄滅,如此反覆動作。
#PWM模块