目前能实现按下A0口的按钮(这个按钮为总开始键),2秒之后,开启运用74HC595来实现的类似跑马灯效果的灯(这个灯时长一分钟),同时,随机数也开始运行,范围为1到9之间,串口数字显示1代表继电器1开启,数字2代表继电器2开启,以此类推。那么问题来了,我想再加8个按钮,来控制继电器的关,由于for,我加在哪里都不能实现关闭,但又必须要这个for,因为所有东西都要在这个跑马灯的一分钟时间里才能运行,求大神帮忙写加入详细代码。
#define KEY A0
int Relay1 = 10;
int Relay2 = 2;
int Relay3 = 3;
int Relay4 = 4;
int Relay5 = 5;
int Relay6 = 6;
int Relay7 = 7;
int Relay8 = 8;
int latchPin = 13;
int clockPin = 12;
int dataPin = 11;
int KEY_NUM = 0;
long randNumber;
void setup ()
{
Serial.begin(9600);
pinMode(latchPin,OUTPUT);digitalWrite(latchPin,HIGH);
pinMode(clockPin,OUTPUT);digitalWrite(clockPin,HIGH);
pinMode(dataPin,OUTPUT);digitalWrite(dataPin,HIGH);
pinMode(KEY,INPUT_PULLUP);
pinMode(Relay1,OUTPUT);digitalWrite(Relay1,LOW);
pinMode(Relay2,OUTPUT);digitalWrite(Relay2,LOW);
pinMode(Relay3,OUTPUT);digitalWrite(Relay3,LOW);
pinMode(Relay4,OUTPUT);digitalWrite(Relay4,LOW);
pinMode(Relay5,OUTPUT);digitalWrite(Relay5,LOW);
pinMode(Relay6,OUTPUT);digitalWrite(Relay6,LOW);
pinMode(Relay7,OUTPUT);digitalWrite(Relay7,LOW);
pinMode(Relay8,OUTPUT);digitalWrite(Relay8,LOW);
randomSeed(analogRead(0));
}
void loop()
{
int n =digitalRead(A0);
if(n==0)
{
delay(2000);
for(int a=0; a<256; a++)
{
digitalWrite(latchPin,LOW);
shiftOut(dataPin,clockPin,MSBFIRST,a);
digitalWrite(latchPin,HIGH);
randNumber = random(1,9);
Serial.println(randNumber);
if(randNumber==1 ){
digitalWrite(Relay1,HIGH);
}
if(randNumber==2 ){
digitalWrite(Relay2,HIGH);
}
if(randNumber==3 ){
digitalWrite(Relay3,HIGH);
}
if(randNumber==4 ){
digitalWrite(Relay4,HIGH);
}
if(randNumber==5 ){
digitalWrite(Relay5,HIGH);
}
if(randNumber==6 ){
digitalWrite(Relay6,HIGH);
}
if(randNumber==7 ){
digitalWrite(Relay7,HIGH);
}
if(randNumber==8 ){
digitalWrite(Relay8,HIGH);
delay(230);
}
}
}
|