前言
因为工作的事儿耽搁了一天更新, 上一章咱们把8266的环境搭建上了, 并且点亮了小灯, 本文咱们来烧录一点有意思的程序
- 小灯闪烁
- 跑马灯
okk, 看到目录后, 啊万恶的博主你怎么写上一篇写过的功能
, 怎么有点水文的感觉, 咳咳, 虽然上述两个功能确实没啥意思, 不过目的是为了弄清楚GPIO高低电平情况下, 接线顺序对小灯的影响
(肯定有大佬懂, 我这种菜鸡不懂, 所以我就要写)
冻手干活
1、小灯闪烁
- 材料
- led小灯一颗
- 杜邦线母对母两根
- 编写程序
const int LED1 = 16; //GPIO16 - D0
void setup() {
pinMode(LED1, OUTPUT); // 设置GPIO16为输出
}
void loop() {
delay(2000); //延迟2000ms
digitalWrite(LED1, LOW); //GPIO16 输出低电平
delay(300);
digitalWrite(LED1, HIGH);
delay(300);
digitalWrite(LED1, LOW);
delay(300);
digitalWrite(LED1, HIGH);
}
上述程序很简单啊(看起来就跟从上篇文章抄过来的一样!), 好了简单解读一下:
-
主循环函数内, 最初都会有一个
2000ms
的延迟, 然后开始闪烁, 频率300ms/次
-
经过第一次循环后, GPIO16最后的输出是
高电平
, 并且这个高电平会持续2000ms
-
烧录完成后, 我们设定一下小灯闪烁的期望值:
- 灭→亮→灭→亮, 会常亮2000ms
- 亮→灭→亮→灭, 会常灭2000ms -
接线
-
结论
- 当GPIO输出高电平时, 正极接入GPIO, 负极接地, LED正常工作
- 当GPIO输出低电平时, 正极接入vcc, 负极接GPIO, LED正常工作
2、跑马灯
有了上述结论后, 做这个不是有手就行吗(手动滑稽)
-
材料
- led小灯若干
- 杜邦线母对母若干
-
编写程序
首先我们把板子的原理图再搬出来, 找几个
看上你的GPIO
, 16, 5, 4, 0, 2
const int LED1 = 16; //GPIO16 - D0
const int LED2 = 5;
const int LED3 = 4;
const int LED4 = 0;
const int LED5 = 2;
const int LEDS_LEN = 5;
const int LEDS[] = {LED1, LED2, LED3, LED4, LED5};
void setupLights() {
for (int i = 0; i < LEDS_LEN; i++) {
pinMode(LEDS[i], OUTPUT);
digitalWrite(LEDS[i], HIGH);
}
} void setup() {
setupLights();
}
void loop() {
digitalWrite(LEDS[LEDS_LEN-1], HIGH);
digitalWrite(LEDS[0], LOW);
delay(500);
for (int i = 1; i < LEDS_LEN; i++) {
digitalWrite(LEDS[i-1], HIGH);
digitalWrite(LEDS[i], LOW);
delay(500);
}
}