这里使用arduino UNO r3板子+7个电阻+7个led来学习如何实现定时闪烁和顺序亮起。
通过led控制可以了解arduino板子的基本控制和执行原理:GND作为负极来使用,2-13做为可控制的正极来使用。给对应端口高电平即会使通路通电,低电平可以理解为断电。增加电阻是为了降低电流避免烧坏led。
儿子的需求:
默认10端口灯一直保持闪烁,2-7端口灯顺序亮起后保持常亮;发送指令后,所有灯全灭;2秒后,10端口闪烁一次后,2-7端口顺序恢复常亮。
具体连线和代码如下:
led.ino
int flickerPin = 10; //闪烁端口
int orderPin = 2; //顺序亮起起始端口
int orderLen = 6; //顺序亮起端口个数
int i=0;
void setup() {
Serial.begin(9600); //设置波特率9600,用于接收来自pc的指令
//闪烁端初始化
pinMode(flickerPin, OUTPUT);
//顺序亮起端口初始化
for(i= orderPin;i<orderPin+orderLen;i++){
pinMode(i, OUTPUT);
}
}
void loop() {
char var=Serial.read();//读取pc发给arduino的指令
if(var=='R'){//如果收到R指令,熄灭所有led灯
//闪烁端口熄灭
digitalWrite(flickerPin, LOW);
//顺序端口熄灭
for(i= orderPin;i<orderPin+orderLen;i++){
digitalWrite(i, LOW);
}
//控制台输出调试信息
Serial.println("Hello Arduino!");
delay(2000);
}else{//否则,执行闪烁灯闪烁,其他端口灯顺序亮起
//闪烁端口亮起
digitalWrite(flickerPin, LOW);
delay(1000);
digitalWrite(flickerPin, HIGH);
delay(1000);
//顺序端口亮起
for(i= orderPin;i<orderPin+orderLen;i++){
digitalWrite(i, HIGH);
delay(100);
}
}
}
执行效果:(发送R指令可将灯全部熄灭)
yan 2016.8.14 16:45
学习,期待后续教程
博客不错,嘎嘎!