Arduino初初教程3 ——交通灯
通过前面两次I/O输出的介绍,这次我们就来实现一个交通灯的例子
实物连接效果如图所示:
数码管的控制引脚不变,3个led灯连接到模拟端口0、1、2,分别对应绿、黄、红,引脚输出低点亮LED。
说明:当6个模拟口作为数字口的时候,其对应序号是接着其他的数字口的,即模拟口0--5对应就是数字口14--19。
实例功能如下:
红灯亮9秒,接着绿灯亮9秒,接着黄灯亮3秒,接着红灯亮9秒,如此循环。数码管显示当前LED灯熄灭剩余秒数
程序如下(直接粘贴到Arduino开发环境下就可直接应用,程序中略去了数码管显示0-9数字子函数,可参考初初教程2):
//设置控制各段及LED的数字IO脚
int a = 7;
int b = 6;
int c = 5;
int d = 11;
int e = 10;
int f = 8;
int g = 9;
int ledG = 14;
int ledY = 15;
int ledR = 16;
//引脚设置、初始化
void setup()
{
int i;//定义变量
for(i=5;i<=16;i++)
pinMode(i,OUTPUT);//设置5~16引脚为输出模式
}
//程序执行部分
void loop()
{
while(1)
{
//红灯
digitalWrite(ledR,LOW);
digitalWrite(ledY,HIGH);
digitalWrite(ledG,HIGH);
digital_9(); //显示9
delay(1000); //延时1s
digital_8(); //显示8
delay(1000); //延时1s
digital_7(); //显示7
delay(1000); //延时1s
digital_6(); //显示6
delay(1000); //延时1s
digital_5(); //显示5
delay(1000); //延时1s
digital_4(); //显示4
delay(1000); //延时1s
digital_3(); //显示3
delay(1000); //延时1s
digital_2(); //显示2
delay(1000); //延时1s
digital_1(); //显示1
delay(1000); //延时1s
//绿灯
digitalWrite(ledR,HIGH);
digitalWrite(ledY,HIGH);
digitalWrite(ledG,LOW);
digital_9(); //显示9
delay(1000); //延时1s
digital_8(); //显示8
delay(1000); //延时1s
digital_7(); //显示7
delay(1000); //延时1s
digital_6(); //显示6
delay(1000); //延时1s
digital_5(); //显示5
delay(1000); //延时1s
digital_4(); //显示4
delay(1000); //延时1s
digital_3(); //显示3
delay(1000); //延时1s
digital_2(); //显示2
delay(1000); //延时1s
digital_1(); //显示1
delay(1000); //延时1s
//黄灯
digitalWrite(ledR,HIGH);
digitalWrite(ledY,LOW);
digitalWrite(ledG,HIGH);
digital_3(); //显示3
delay(1000); //延时1s
digital_2(); //显示2
delay(1000); //延时1s
digital_1(); //显示1
delay(1000); //延时1s
}
}
有兴趣童鞋的可以编写一个带参数的数码管显示子函数,能够使程序更加精减
[ 本帖最后由 晨光熹微 于 2011-6-27 20:20 编辑 ]
转载于:https://my.oschina.net/u/732489/blog/134018