设为首页收藏本站

arduino 单片机机器人爱好者之家

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 9445|回复: 5

Arduino入门教程—基础实验篇二 灯流水灯实验

[复制链接]

签到天数: 453 天

[LV.9]以坛为家II

发表于 2013-5-9 13:46:51 | 显示全部楼层 |阅读模式
本帖最后由 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,如下图(电路图与实物图):

多灯实验.jpg

LED的顺序随便各位自己喜好,只和最后程序的有关,下面我们看下程序:

  1. /*
  2. 程序说明:
  3. 多个LED灯的闪烁,这里我们以6个LED灯做例
  4. */
  5. int LED1=8;
  6. int LED2=9;
  7. int LED3=10;
  8. int LED4=11;
  9. int LED5=12;
  10. int LED6=13;
  11. int n;
  12. void setup()
  13. { //设置各个引脚的初始状态
  14. for(n=8;n<=13;n++)
  15. {
  16.   pinMode(n, OUTPUT);  
  17. }
  18. }
  19. void loop()
  20. {
  21.   turn1();//顺序点亮,顺序熄灭
  22.   clean();  //灭掉所有灯
  23.   
  24.   turn2();//6灯齐闪
  25.   clean();//灭掉所有灯
  26.   
  27.   turn3();
  28.   clean();//灭掉所有灯
  29. }
  30. void turn1()  //顺序点亮,顺序熄灭
  31. {
  32.   for(n=8;n<=13;n++)
  33. {
  34.     digitalWrite(n,HIGH);
  35.     delay(300);
  36. }
  37.   for(n=8;n<=13;n++)
  38. {
  39.     digitalWrite(n,LOW);
  40.     delay(300);
  41. }
  42. }
  43. void turn2()//6灯齐闪3次
  44. { for(int x=0;x<=2;x++)
  45. {
  46.   for(n=8;n<=13;n++)
  47. {
  48.     digitalWrite(n,HIGH);   
  49. }
  50. delay(300);
  51.   for(n=8;n<=13;n++)
  52. {
  53.     digitalWrite(n,LOW);
  54.    
  55. }
  56. delay(300);
  57. }
  58. }
  59. void turn3()//两个两个一起闪3次
  60. {
  61.   for(int x=0;x<=2;x++)
  62.   {
  63.   digitalWrite(8,HIGH);
  64.   digitalWrite(9,HIGH);
  65.   for(n=10;n<=13;n++){
  66.     digitalWrite(n,LOW);
  67.   }
  68.   delay(300);
  69.   digitalWrite(10,HIGH);
  70.   digitalWrite(11,HIGH);
  71.   digitalWrite(8,LOW);
  72.   digitalWrite(9,LOW);
  73.   digitalWrite(12,LOW);
  74.   digitalWrite(13,LOW);
  75.   delay(300);
  76.   digitalWrite(12,HIGH);
  77.   digitalWrite(13,HIGH);
  78.   for(n=8;n<=11;n++){
  79.     digitalWrite(n,LOW);
  80.   }
  81.   delay(300);
  82. }
  83. }
  84. void clean()
  85. {  for(n=8;n<=13;n++)
  86. {
  87.     digitalWrite(n,LOW);
  88.    
  89. }
  90. delay(300);
  91. }
复制代码

程序中turn1()函数作用是使6个LED顺序点亮,再顺序熄灭;turn2()函数作用使6个LED一齐闪烁频率为300ms;turn3()函数作用是两两灯闪烁;clean()函数熄灭6只LED。

将程序烧写到UNO控制板中实验下效果~~


4.jpg

本帖被以下淘专辑推荐:

该用户从未签到

发表于 2015-8-18 15:28:10 | 显示全部楼层
turn1();
  clean();是什么
回复 支持 反对

使用道具 举报

签到天数: 453 天

[LV.9]以坛为家II

 楼主| 发表于 2015-8-18 20:05:53 | 显示全部楼层
handanqibu 发表于 2015-8-18 15:28
turn1();
  clean();是什么

是函数啊,程序里有的
回复 支持 反对

使用道具 举报

签到天数: 8 天

[LV.3]偶尔看看II

发表于 2016-5-10 01:24:23 | 显示全部楼层
是自己定义的函数吧?
回复 支持 反对

使用道具 举报

签到天数: 453 天

[LV.9]以坛为家II

 楼主| 发表于 2016-5-10 10:14:54 | 显示全部楼层
plum600 发表于 2016-5-10 01:24
是自己定义的函数吧?

是的,看程序就知道了
回复 支持 反对

使用道具 举报

签到天数: 27 天

[LV.4]偶尔看看III

发表于 2016-5-29 13:33:47 | 显示全部楼层
[AppleScript] 纯文本查看 复制代码
void setup() {
  // put your setup code here, to run once:
pinMode(1,OUTPUT);
pinMode(2,OUTPUT);
pinMode(3,OUTPUT);
pinMode(4,OUTPUT);
pinMode(5,OUTPUT);
pinMode(6,OUTPUT);
}

void loop() {
  // put your main code here, to run repeatedly:
for(int x=1;x<7;x++){
digitalWrite(x-1,LOW);
delay(50);
digitalWrite(x,HIGH);

}


回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|联系我们|YFRobot ( 苏ICP备13017135  

GMT+8, 2017-5-30 09:38 , Processed in 0.376008 second(s), 28 queries .

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表