Arduino 入门教程GO 第一章 趣味跑马灯控制-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 657|回复: 0

Arduino 入门教程GO 第一章 趣味跑马灯控制

[复制链接]
发表于 2022-1-17 11:25 | 显示全部楼层 |阅读模式
本帖最后由 OpenJumper 于 2022-1-17 11:49 编辑

[md]## 一、Led控制实验

在上一章中我们进行了板载LED的实验,对于Arduino的语言与Arduino IDE的使用方法有了一个简单的认识,在这一章中,我们将开始搭建我们的第一个电路,准备好需要的实验器材,让我们开始Arduino的学习之旅吧。

## 二、实验器件

UNO 控制板:一块
LED灯:6个
220Ω电阻:6个
面包板:1块
面包板跳线:若干


## 三、连线示意图:

01.jpg
图1-1


## 四、硬件连接图

02.jpg
图1-2


## 五、硬件知识要点

LED的两个针脚一长一短,其中长的连接的是正极,而短的连接的是GND,其次,在LED与控制板之间,需要添加一个限流电阻,由于LED内阻较小,不添加限流电阻的话有可能会烧坏LED。

## 六、程序编写[/md]

  1. void setup()
  2. {
  3.   // 初始化I/O口
  4.   for(int i=2;i<8;i++)
  5.     pinMode(i,OUTPUT);
  6. }
  7. void loop()
  8. {
  9.   // 从引脚2到引脚6,逐个点亮LED,等待1秒再熄灭LED
  10.   for(int i=2;i<7;i++)
  11.   {
  12.     digitalWrite(i,HIGH);
  13.     delay(1000);
  14.     digitalWrite(i,LOW);   
  15.   }
  16.   // 从引脚7到引脚3,逐个点亮LED,等待1秒再熄灭LED
  17.   for(int i=7;i>2;i--)
  18.   {
  19.     digitalWrite(i,HIGH);
  20.     delay(1000);
  21.     digitalWrite(i,LOW);   
  22.   }
  23. }
复制代码

[md]
## 七、程序知识要点

在上述实验的代码中,

for(表达式1;表达式2;表达式3)
{
语句;
}

一般情况下,表达式1为for循环初始化语句,表达式2为判断语句,表达式3为增量语句,比如for (i=0; i< 5; i++) { }

表示初始值i为0,当i小于5时运行循环体中的语句,每循环完一次,i自加1,因此这个循环会循环5次

## 八、拓展阅读

在这里,我们提供LED灯几种不同的控制方式供大家选择,代码如下[/md]

  1. //设置控制Led的数字IO脚

  2. int Led1 = 1;
  3. int Led2 = 2;
  4. int Led3 = 3;
  5. int Led4 = 4;
  6. int Led5 = 5;
  7. int Led6 = 6;
  8. //led灯花样显示样式1子程序
  9. void style_1(void)
  10. {
  11.   unsigned char j;
  12.   for(j=1;j<=6;j++)//每隔200ms依次点亮1~6引脚相连的led灯
  13.   {
  14.     digitalWrite(j,HIGH);//点亮j引脚相连的led灯
  15.     delay(200);//延时200ms
  16.   }
  17.   for(j=6;j>=1;j--)//每隔200ms依次熄灭6~1引脚相连的led灯
  18.   {
  19.     digitalWrite(j,LOW);//熄灭j引脚相连的led灯
  20.     delay(200);//延时200ms
  21.   }
  22. }
  23. //灯闪烁子程序
  24. void flash(void)
  25. {   
  26.   unsigned char j,k;
  27.   for(k=0;k<=1;k++)//闪烁两次
  28.   {
  29.     for(j=1;j<=6;j++)//点亮1~6引脚相连的led灯
  30.       digitalWrite(j,HIGH);//点亮与j引脚相连的led灯
  31.     delay(200);//延时200ms
  32.     for(j=1;j<=6;j++)//熄灭1~6引脚相连的led灯
  33.       digitalWrite(j,LOW);//熄灭与j引脚相连的led灯
  34.     delay(200);//延时200ms
  35.   }
  36. }
  37. //led灯花样显示样式2子程序
  38. void style_2(void)
  39. {
  40.   unsigned char j,k;
  41.   k=1;//设置k的初值为1
  42.   for(j=3;j>=1;j--)
  43.   {   
  44.     digitalWrite(j,HIGH);//点亮灯
  45.     digitalWrite(j+k,HIGH);//点亮灯
  46.     delay(400);//延时400ms
  47.     k +=2;//k值加2
  48.   }
  49.   k=5;//设置k值为5
  50.   for(j=1;j<=3;j++)
  51.   {
  52.     digitalWrite(j,LOW);//熄灭灯
  53.     digitalWrite(j+k,LOW);//熄灭灯
  54.     delay(400);//延时400ms
  55.     k -=2;//k值减2
  56.   }
  57. }
  58. //led灯花样显示样式3子程序
  59. void style_3(void)
  60. {
  61.   unsigned char j,k;//led灯花样显示样式3子程序
  62.   k=5;//设置k值为5
  63.   for(j=1;j<=3;j++)
  64.   {
  65.     digitalWrite(j,HIGH);//点亮灯
  66.     digitalWrite(j+k,HIGH);//点亮灯
  67.     delay(400);//延时400ms
  68.     digitalWrite(j,LOW);//熄灭灯
  69.     digitalWrite(j+k,LOW);//熄灭灯
  70.     k -=2;//k值减2
  71.   }
  72.   k=3;//设置k值为3
  73.   for(j=2;j>=1;j--)
  74.   {   
  75.     digitalWrite(j,HIGH);//点亮灯
  76.     digitalWrite(j+k,HIGH);//点亮灯
  77.     delay(400);//延时400ms
  78.     digitalWrite(j,LOW);//熄灭灯
  79.     digitalWrite(j+k,LOW);//熄灭灯
  80.     k +=2;//k值加2
  81.   }
  82. }
  83. void setup()
  84. {
  85.   unsigned char i;
  86.   for(i=1;i<=6;i++)//依次设置1~6个数字引脚为输出模式
  87.     pinMode(i,OUTPUT);//设置第i个引脚为输出模式
  88. }
  89. void loop()
  90. {   
  91.   style_1();//样式1
  92.   flash();//闪烁
  93.   style_2();//样式2
  94.   flash();//闪烁
  95.   style_3();//样式3
  96.   flash();//闪烁
  97. }
复制代码
[md]
闪烁:1-6号灯亮,延时200ms,1-6号灯熄灭,延时200ms。

样式1:1-6号灯逐个点亮,然后6-1逐个熄灭。

样式2:3,4号灯先亮,然后2,5号再亮,最后1,6号两。接着1,6号灯熄灭,再2,5号熄灭,最后3,4号熄灭。

样式三:3,4号灯亮,然后3,4号熄灭2,5号亮,然后2,5号熄灭1,6号亮,再1,6号熄灭2,5号亮,最后2,5号熄灭3,4号亮。

大家可以根据自己的喜好进行不同的搭配。
[/md]
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-12-28 08:06 , Processed in 0.076066 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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