3.1.1 实验内容
衔接开发方式介绍中的点亮LED实验,引出基础性实验教学部分。本实验为数字输出模块教学部分,由一个LED闪烁实验拓展到跑马灯实验。引导学习者对利用数字输出模块可设计的应用的思考。
跑马灯实验即多个(本实验以三个为例)LED轮流亮灭。为实现这个实验现象有多种方法。最容易想到的,也是最基础的方法可以参考一个LED亮灭的方式,设置LED1为亮、2和3为灭,延时一段时间后再设置2亮、1和3灭,如此循环来达到轮流亮灭的实验现象。可是采用这种方法实现的代码重复度很高,代码编写方面容易理解,但也很繁琐,若要实现多个LED跑马灯时会需要编写重复代码块多次,不提倡这种方法。
所以稍微拓展一下思路,可以采用自定义一个控制多个LED状态的函数,命名这个函数为turnlights(),需要实现几个LED的跑马灯则函数有几个参数。由于函数为自定义完成的,所以它必须出现在代码段中,在loop()函数中直接调用该函数完成LED轮流点亮的变化,这样就可以将原来的三行代码简化为一行。
3.2.2 实验步骤
- 三个LED的正管脚分别连接PcDuino上的GPIO1、2、3,负管脚接GND(查看接口图);
- 打开Arduino IDE,新建项目;
- 编写如下代码;
- 编译并上传到PcDuino开发板中,观察实验现象。
3.3.3 代码及相关函数分析
/*
* three LED test program
*/
#include <core.h>
int led_a = 1;
int led_b = 2;
int led_c = 3;
void turnlights(int a,int b,int c)
{
digitalWrite(led_a , a);
digitalWrite(led_b , b);
digitalWrite(led_c , c);
}
void setup()
{
pinMode(led_a, OUTPUT);
pinMode(led_b, OUTPUT);
pinMode(led_c, OUTPUT);
return;
_help:
printf("Usage %s LED_PIN_NUM(0-13)\n", argv[0]);
exit(-1);
}
void loop()
{
turnlights(HIGH,LOW,LOW);
delay(1000);
turnlights(LOW,HIGH,LOW);
delay(1000);
turnlights(LOW,LOW,HIGH);
delay(1000);
}
相关函数
turnlights ()(自定义函数)
功能:控制三个LED灯的开关状态;
参数:三个参数a、b、c,可能取值为HIGH/LOW。