文/孙浩文
Arduino是一款便捷灵活、方便上手的开源电子原型平台。包含硬件(各种型号的Arduino板)和软件(Arduino IDE)。Arduino能实现各种传感器感知,其中包括控制灯光、马达等装置影响周围的环境。板子上的自带的微控制器可以通过Arduino的编程语言来实现程序加载,同时编译成二进制文件,烧录进微控制器。
流水灯控制技术的应用已经在霓虹灯广告宣传、智能照明、小区灯饰、舞台设计的灯光和音响控制等诸多领域得到了广泛应用,使得人们的生活与工作环境得到质量的提升。本文以Arduino平台为基础,通过对I/O口的实时信号控制输出来实现对6位LED流水灯在6种状态之间任意切换的效果。
表1:元器件清单
图1:基于Arduino的花式流水灯的硬件电路原理图
图2
流水灯是指一组在Arduino平台的控制下,按照设定的规则和延时来实现对LED发光二级管的亮和灭控制。本文以Arduino平台为依据,控制各个数字I/O所接的LED发光二极管的状态。本文共设定了6种对LED发光二级管的控制方法。
花样子程序一:控制LED灯从左向右依次延时400ms点亮,再从右向左依次延时400ms熄灭,最后控制所有LED灯延时400ms闪烁两次。
花样子程序二:控制LED灯从左向右点亮第3、5位号灯亮,延时400ms后点亮第2、6位号灯亮,延时400ms后一号灯亮,延时400ms后一号灯熄灭,延时400ms后熄灭2、6号灯,延时400ms后熄灭3、5位号灯,延时400ms后控制所有LED灯闪烁两次。
花样子程序三:LED灯从左向右点亮1、5位号灯亮,延时400ms后灯亮2、4位号灯,同时熄灭1、5位号灯,延时400ms后点亮3号等,同时2、4号灯熄灭,延时400ms后3号灯亮,同时熄灭2、4号灯,延时400ms后点亮1、5位号灯,同时熄灭2、4号灯,延时400ms后点亮6号灯,延时400ms后点亮3号灯,延时400ms后点亮2号灯,同时熄灭3、6号灯,延时400ms后点亮1号灯,同时熄灭2号灯,延时400ms后所有LED灯闪烁两次。
花样子程序四: LED灯从右向左依次点亮,延时400ms后(从左向右数)熄灭1、5号灯,延时400ms后熄灭2号灯,延时400ms后熄灭3号灯,延时400ms后熄灭4号灯,延时400ms后熄灭6号灯,延时400ms后所有LED灯闪烁两次。
花样子程序五:LED灯从右向左依次点亮,延时400ms后(从左向右数)熄灭1、3号灯,延时400ms后熄灭2号灯,延时400ms后依次熄灭4、5、6号灯,延时400ms后所有LED灯闪烁两次。
花样子程序六:LED灯从右向左依次点亮,延时400ms后(从左向右数)熄灭1、6号灯,延时400ms后熄灭2、4号灯,延时400ms后熄灭3号灯,延时400ms后熄灭5号灯,延时400ms后所有LED灯闪烁两次。
基于Arduino平台的流水灯的硬件电路由三部分组成,第一部分是Arduino开发系统、第二部分是输出模块6个发光二极管和电阻构成的负载电路,第三部分是电源电路(本次使用USB供电模式)。在该本项目中,共用到表1所列的元器件。
通过Fritzing(图形化Arduino电路开发软件)。硬件设计的电路图如图1示。
电路输出部分电路:6个发光二极管采用共阴极接法,阴极通过限流电阻R与Arduino开发系统电源地连接,阴极连接到开发系统的数字I/O口上,通过I/O输出高低电平驱动LED发光二级管的熄灭和点亮。
本文设计了6种流水灯控制子程序,LED发光二极管可以根据控制程序实现不同状态的转换。具体设计的子程序如图2所示。
本论文以arduino开发系统为平台,利用arduino系统的数字I/O实现对6个LED发光二极管的实时控制,同时设计了流水灯的硬件电路和软件程序,通过arduino硬件平台对结果进行了验证,达到了预期的效果。