物联网之流水LED灯、正常流水灯、反复流水灯、移动流水灯
MENU
- 硬件电路设计
- 软件程序设计
- 正常流水LED灯
- 反复流水LED灯
- 移动流水LED灯
硬件电路设计
材料名称 数量 直插式 LED 1kΩ 电阻 杜邦线(跳线) 若干 面包板 1 每一个LED的正极与开发板一个GPIO引脚相连,并串联一个电阻,负极接GND。
当然也可以选择只使用一个电阻。
软件程序设计
正常流水LED灯
因为要用到多个GPIO引脚,所以最好把所有的GPIO引脚放在一个数组中,然后遍历数组。
// 定义GPIO引脚数组 int pin_list[5] = { 13, 12, 14, 27, 26 }; // 获取数组长度 int size = sizeof(pin_list) / sizeof(pin_list[0]); void setup() { // 设定GPIO引脚为输出模式 for (int i = 0; i < size; i++) pinMode(pin_list[i], OUTPUT); } void loop() { // 将所有引脚设置为高电平 for (int i = 0; i < size; i++) { digitalWrite(pin_list[i], HIGH); delay(50); } // 将所有引脚设置为低电平 for (int i = size - 1; i >= 0; i--) { digitalWrite(pin_list[i], LOW); delay(50); } }
反复流水LED灯
微调程序,比如之前是依次改变流水灯的状态,现在修改为让流水灯往复亮。
// 定义GPIO引脚数组 int pin_list[5] = { 13, 12, 14, 27, 26 }; // 获取数组长度 int size = sizeof(pin_list) / sizeof(pin_list[0]); void setup() { // 设定GPIO引脚为输出模式 for (int i = 0; i < size; i++) pinMode(pin_list[i], OUTPUT); } void loop() { // 将所有引脚设置为高电平 for (int i = 0; i < size; i++) { digitalWrite(pin_list[i], HIGH); delay(50); } // 将所有引脚设置为低电平 for (int i = size - 1; i >= 0; i--) { digitalWrite(pin_list[i], LOW); delay(50); } }
移动流水LED灯
实现LED平移的效果,每次在点亮这颗LED的时候,同时把上一颗LED的状态改为低电平,并且当索引值为0时,让最后一颗LED状态改为低电平。
// 定义GPIO引脚数组 int pin_list[5] = { 13, 12, 14, 27, 26 }; // 获取数组长度 int size = sizeof(pin_list) / sizeof(pin_list[0]); void setup() { // 设定GPIO引脚为输出模式 for (int i = 0; i < size; i++) pinMode(pin_list[i], OUTPUT); } void loop() { // 将所有引脚设置为高电平 for (int i = 0; i < size; i++) { digitalWrite(pin_list[i], HIGH); if (i > 0) { digitalWrite(pin_list[i - 1], LOW); } else { digitalWrite(pin_list[size - 1], LOW); } delay(250); } }