Arduion学习——流水灯实验

前言

本文章将会讲解有关Arduion流水灯的实验过程,该实验原理简单,比较容易上手,适合新手去接触学习。

一、目标实现

通过编写相关代码上传到开发板,控制相应的LED灯亮灯灭,实现效果如下:

①1 3 5 号灯同时亮500ms后熄灭,这时2 4 号灯同时亮500ms后熄灭
②1-6号灯 同时亮2S,然后同时熄灭2S
③1-6号灯依次各亮200ms,然后熄灭
④1-6号灯熄灭3S

二、实验器件

开发板:Arduion;

LED灯:6 个;

220欧电阻:6 个;

多彩杜邦线:若干;

三、接线

接线原理如下图所示

实验接线如图所示

四、代码程序

int val;
int LED_PIN_1 = 2;  //定义1-6号灯的引脚分别为2,3,4,5,6,7
int LED_PIN_2 = 3;
int LED_PIN_3 = 4;
int LED_PIN_4 = 5;
int LED_PIN_5 = 6;
int LED_PIN_6 = 7;
void setup()
{
  for (int i = 2; i < 8; i++)  //通过循环设置LED灯的接口为输出接口,简化程序
  {
    pinMode(i, OUTPUT);
  }
}
void loop()
{
  digitalWrite(LED_PIN_1, HIGH);
  digitalWrite(LED_PIN_3, HIGH);
  digitalWrite(LED_PIN_5, HIGH);  //1 3 5 号灯同时亮
  delay(500);                     //延迟 500 ms
  digitalWrite(LED_PIN_1, LOW);  
  digitalWrite(LED_PIN_3, LOW);
  digitalWrite(LED_PIN_5, LOW);   //1 3 5 号灯熄灭
  digitalWrite(LED_PIN_2, HIGH);
  digitalWrite(LED_PIN_4, HIGH);  //2 4 号灯同时亮
  delay(500);                     //延迟 500 ms
  digitalWrite(LED_PIN_2, LOW);
  digitalWrite(LED_PIN_4, LOW);   //2 4 号灯同时熄灭
  for (int i = 2; i < 8; i++)     //1-6号灯同时亮
  {
    digitalWrite(i, HIGH);
  }
  delay(2000);                    //延迟2秒
  for (int i = 2; i < 8; i++)     //1-6号灯同时灭
  {
    digitalWrite(i, LOW);
  }
  delay(2000);                    //延迟2秒
  for (int i = 2; i < 8; i++)    //通过循化实现1-6号灯依次亮200毫秒后熄灭
  {
    digitalWrite(i, HIGH);
    delay(200);
    digitalWrite(i, LOW);
  }
  delay(3000);                 //延迟3秒
}

Gitte源码仓库: https://gitee.com/chen_xy_chen/arduion_c.git

五、最终效果

①1 3 5 号灯亮500ms然后熄灭,这时2 4 号灯亮500ms然后熄灭
②1-6号灯 同时亮2S,然后同时熄灭2S
③1-6号灯逐渐各亮200ms,然后熄灭
④1-6号灯熄灭10S

### Arduino 实现 LED 流水灯 #### 使用 RGB 彩色流水灯模块 硬件部分采用了一个集成有8个共阳极RGB彩色LED灯的模块,在实际操作中仅需将该模块引脚接入到Arduino Uno R3开发板相应接口处,无需额外连接限流电阻,简化了电路搭建过程。不过需要注意的是,如果遇到杜邦线数量不足的情况,则可能只能利用模块上的部分RGB灯来完成项目[^1]。 对于想要控制全部八个RGB灯光彩变化的情形而言,应当调整程序逻辑以适应更多灯具的需求。 下面给出一段适用于六个RGB灯的基础示例代码: ```cpp // 定义每组RGB颜色对应的针脚编号 int redPins[] = {9, 6, 5}; int greenPins[] = {10, 7, 4}; int bluePins[] = {11, 8, 3}; void setup() { // 设置所有针脚模式为输出状态 for (int i=0; i<sizeof(redPins)/sizeof(int); ++i){ pinMode(redPins[i], OUTPUT); pinMode(greenPins[i], OUTPUT); pinMode(bluePins[i], OUTPUT); } } void loop(){ // 循环遍历每一个RGB灯并依次点亮不同色彩组合 for (int i=0; i< sizeof(redPins)/sizeof(int);++i){ analogWrite(redPins[i], random(256)); analogWrite(greenPins[i],random(256)); analogWrite(bluePins[i],random(256)); delay(200); digitalWrite(redPins[i], LOW); digitalWrite(greenPins[i],LOW ); digitalWrite(bluePins[i], LOW); } } ``` 这段代码实现了通过随机改变各通道亮度值的方式让每个RGB灯呈现出不同的混合色调,并按照顺序逐一展示出来形成流动的效果。 #### 基于 Proteus 的仿真环境设置 另外还存在一种方法可以在计算机上先模拟运行整个系统的行为而不需要真正焊接实物原型——即借助Proteus软件构建虚拟实验室来进行预测试验证工作。此方式特别适合初学者学习阶段或是希望快速迭代设计方案的人群使用[^3]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值