- 点亮一颗 LED
因此,如果我们想要点亮这颗 LED 的话,只需要先设定相关引脚为输出模式,然后给这个引脚赋值一个高电平即可。
// 设置 LED 引脚int led_pin = 12;
void setup() {
// 设定引脚为输出模式
pinMode(led_pin, OUTPUT);
// 点亮 LED
digitalWrite(led_pin, HIGH);}
void loop() {
}
通过 IDE 编写上述代码,然后运行,此时会看到电路中的 LED 灯被点亮了。
2. 闪烁的 LED 灯
我们已经成功点亮一颗 LED 了,接下来,可以尝试一下稍微复杂一点的逻辑,比如让这颗 LED 闪烁。
实现 LED 闪烁的原理很简单,就是在 loop 函数中使用延时函数 delay。先设置高电平,延时 X 秒,再设置低电平,延时 X 秒,之后就不断循环该语句即可。
在之前的 初识 Arduino 编程语言 中,我们学习了 loop 函数的用法,如果我们想要让灯泡一直闪烁,则需要在 loop 函数中不断改变 LED 状态。
// 设置 LED 引脚int led_pin = 12;
void setup() {
pinMode(led_pin, OUTPUT);} // 设定引脚为输出模式
void loop() {
digitalWrite(led_pin, HIGH);// 点亮 LED
delay(1000); // 等待一段时间
digitalWrite(led_pin, LOW); // 关闭 LED
delay(1000);} // 等待一段时间
运行程序,LED 就闪烁了。
软件程序设计
1. 正常流水灯
因为我们要用到多个 GPIO 引脚,所以,我们最好把所有的 GPIO 引脚放在一个数组中,然后遍历这个数组
// 定义 GPIO 引脚数组int pin_list[5] = {13, 12, 14, 27, 26};// 获取数组长度int size = sizeof(pin_list) / sizeof(pin_list[0]);// 设定 GPIO 引脚为输出模式
void setup() {
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=0;i<size;i++) {
digitalWrite(pin_list[i], LOW);
delay(50);
}}
2. 反复流水灯
我们还可以对该程序进行微调,比如之前是依次改变流水灯的状态,现在,修改为让流水灯往复亮。
// 定义 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);
}}
3. 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);
}}
软件程序设计
设计这个程序时,我们需要使用二维数组。
如果我们想让这个数码管某一引脚亮起来,那么我们需要给对应的引脚设置一个低电平。如果我们想要显示一个数字时,就需要让多个 LED 同时亮,比如数字 1 需要 b、c 引脚给低电平,其余引脚给高电平。程序可以这样写:
// 定义输出引脚并把所有引脚存到数组中int pin_a = 4;int pin_b = 5;int pin_c =