关于Arduino控制流水灯的程序。
我现在这个程序请大师指点,有高额悬赏,谢谢!
#define LED1 2
#define LED2 3
#define LED3 4
#define LED4 5
#define LED5 6
#define KEY 9
int KEY_NUM=0;
void setup()
{
pinMode(LED5,OUTPUT);
pinMode(LED4,OUTPUT);
pinMode(LED3,OUTPUT);
pinMode(LED2,OUTPUT);
pinMode(LED1,OUTPUT);
pinMode(KEY,INPUT_PULLUP);
digitalWrite(LED5,LOW);
digitalWrite(LED4,LOW);
digitalWrite(LED3,LOW);
digitalWrite(LED2,LOW);
digitalWrite(LED1,LOW);
}
void loop() {
ScanKey();
if(KEY_NUM==1){
K1();
}
else
{
K2();
}
}
void ScanKey(){
KEY_NUM = 0;
if(digitalRead(KEY)==LOW){
delay(20);
if(digitalRead(KEY)==LOW){
KEY_NUM = 1;
while(digitalRead(KEY)==LOW);
}
}
}
void K1(){
digitalWrite(LED1,HIGH);
digitalWrite(LED2,LOW);
digitalWrite(LED3,LOW);
digitalWrite(LED4,LOW);
digitalWrite(LED5,LOW);
delay(500);
digitalWrite(LED1,HIGH);
digitalWrite(LED2,HIGH);
digitalWrite(LED3,LOW);
digitalWrite(LED4,LOW);
digitalWrite(LED5,LOW);
delay(500);
digitalWrite(LED1,HIGH);
digitalWrite(LED2,HIGH);
digitalWrite(LED3,HIGH);
digitalWrite(LED4,LOW);
digitalWrite(LED5,LOW);
delay(500);
digitalWrite(LED1,HIGH);
digitalWrite(LED2,HIGH);
digitalWrite(LED3,HIGH);
digitalWrite(LED4,HIGH);
digitalWrite(LED5,LOW);
delay(500);
digitalWrite(LED1,HIGH);
digitalWrite(LED2,HIGH);
digitalWrite(LED3,HIGH);
digitalWrite(LED4,HIGH);
digitalWrite(LED5,HIGH);
delay(1000);
digitalWrite(LED1,LOW);
digitalWrite(LED2,LOW);
digitalWrite(LED3,LOW);
digitalWrite(LED4,LOW);
digitalWrite(LED5,LOW);
delay(1000);
}
void K2(){
digitalWrite(LED1,HIGH);
delay(500);
digitalWrite(LED1,LOW);
digitalWrite(LED2,HIGH);
delay(500);
digitalWrite(LED2,LOW);
digitalWrite(LED3,HIGH);
delay(500);
digitalWrite(LED3,LOW);
digitalWrite(LED4,HIGH);
delay(500);
digitalWrite(LED4,LOW);
digitalWrite(LED5,HIGH);
delay(500);
digitalWrite(LED1,HIGH);
digitalWrite(LED2,HIGH);
digitalWrite(LED3,HIGH);
digitalWrite(LED4,HIGH);
digitalWrite(LED5,HIGH);
delay(1000);
digitalWrite(LED1,LOW);
digitalWrite(LED2,LOW);
digitalWrite(LED3,LOW);
digitalWrite(LED4,LOW);
digitalWrite(LED5,LOW);
delay(1000);
}
从2号引脚开始,每个引脚通过串联一个470欧的电阻到LED再统一接回GND。
程序大概像这样。
void setup() {
for (int i = 2; i < 13; i++) {
pinMode(i, OUTPUT);
}
}
void loop() {
for (int i = 2; i < 13; i++) {
digitalWrite(i, HIGH);
delay(1000);
digitalWrite(i, LOW);
delay(1000);
}
}