5.腳位控制

##新Gpio索引 (20141219及以后的版本采用)

「ESP-01」的圖片搜尋結果

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: INPUTOUTPUTINPUT_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()

digitalRead();

描述

從指定的數位 pin 腳讀取數值,得到的值只會是 HIGHLOW

語法

digitalRead(pin)

參數

pin: 欲讀取之數位 pin 腳的編號 (int 型別)

回傳

HIGHLOW

範例

把 pin 13 設定成和 pin 7 讀到的值相同,pin 7 設定為輸入端。

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()

- gpio.read()

注意

如果 pin 腳沒有連接任何東西,digitalRead() 可能會回傳 HIGH 或者 LOW (它是隨機改變的)。

digitalWrite()

描述

HIGHLOW 到數位 pin 腳中。

如果 pin 腳以 pinMode() 設定為 OUTPUT 模式,給 HIGH 時它會輸出 3.3 伏特電壓,給 LOW 時是輸出 0 伏特電壓 (接地)。

語法

digitalWrite(pin, value)

參數

pin: pin 腳編號

value: HIGHLOW

回傳

無回傳值

範例

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()

- gpio.write()

#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模块

analogWrite();