本帖最后由 AllBlue 于 2013-8-15 10:41 编辑
流水灯实验 上节课我们做了点亮LED灯实验,夜晚城市中常常看到广告灯在闪啊闪的,今天我们利用多个LED灯来模仿流水灯效果。 实验元件: UNO 实验套装(UNO R3控制板、USB数据线、面包板、跳线) 6枚LED(3色个2只) 电阻220欧 6枚
上次贴子我们已经认识LED了,本次就不再做介绍,如需了解请回看实验二; 下面我们就开始实验,首先我们要搭建电路,将6个LED的正极分别连接到UNO 控制板的数字端口8~13;负极通过220欧限流电阻接GND,如下图(电路图与实物图): LED的顺序随便各位自己喜好,只和最后程序的有关,下面我们看下程序: - /*
- 程序说明:
- 多个LED灯的闪烁,这里我们以6个LED灯做例
- */
- int LED1=8;
- int LED2=9;
- int LED3=10;
- int LED4=11;
- int LED5=12;
- int LED6=13;
- int n;
- void setup()
- { //设置各个引脚的初始状态
- for(n=8;n<=13;n++)
- {
- pinMode(n, OUTPUT);
- }
- }
- void loop()
- {
- turn1();//顺序点亮,顺序熄灭
- clean(); //灭掉所有灯
-
- turn2();//6灯齐闪
- clean();//灭掉所有灯
-
- turn3();
- clean();//灭掉所有灯
- }
- void turn1() //顺序点亮,顺序熄灭
- {
- for(n=8;n<=13;n++)
- {
- digitalWrite(n,HIGH);
- delay(300);
- }
- for(n=8;n<=13;n++)
- {
- digitalWrite(n,LOW);
- delay(300);
- }
- }
- void turn2()//6灯齐闪3次
- { for(int x=0;x<=2;x++)
- {
- for(n=8;n<=13;n++)
- {
- digitalWrite(n,HIGH);
- }
- delay(300);
- for(n=8;n<=13;n++)
- {
- digitalWrite(n,LOW);
-
- }
- delay(300);
- }
- }
- void turn3()//两个两个一起闪3次
- {
- for(int x=0;x<=2;x++)
- {
- digitalWrite(8,HIGH);
- digitalWrite(9,HIGH);
- for(n=10;n<=13;n++){
- digitalWrite(n,LOW);
- }
- delay(300);
- digitalWrite(10,HIGH);
- digitalWrite(11,HIGH);
- digitalWrite(8,LOW);
- digitalWrite(9,LOW);
- digitalWrite(12,LOW);
- digitalWrite(13,LOW);
- delay(300);
- digitalWrite(12,HIGH);
- digitalWrite(13,HIGH);
- for(n=8;n<=11;n++){
- digitalWrite(n,LOW);
- }
- delay(300);
- }
- }
- void clean()
- { for(n=8;n<=13;n++)
- {
- digitalWrite(n,LOW);
-
- }
- delay(300);
- }
复制代码程序中turn1()函数作用是使6个LED顺序点亮,再顺序熄灭;turn2()函数作用使6个LED一齐闪烁频率为300ms;turn3()函数作用是两两灯闪烁;clean()函数熄灭6只LED。 将程序烧写到UNO控制板中实验下效果~~
|