/**
Simon Game for Arduino with Score display
Copyright (C) 2022, Uri Shaked
Released under the MIT License.
*/
/**
Set up the Arduino board and initialize Serial communication
*/
void setup() {
//执行一次硬件的配置(初始化程序)
//需要有
//输出:LED,蜂鸣器
//输出带时序:74HC595
//输入:按键1--pin5
//2-pin4
//3-pin3
//4-pin2
pinMode(2, INPUT_PULLUP);
pinMode(3, INPUT_PULLUP);
pinMode(4, INPUT_PULLUP);
pinMode(5, INPUT_PULLUP);
//LED 配置
pinMode(9, OUTPUT);
pinMode(10, OUTPUT);
pinMode(11, OUTPUT);
pinMode(12, OUTPUT);
}
int keyPins[] = {2,3,5,4};
int ledPins[]={9,10,12,11};
int buttonState[]={0,0,0,0};
int keyFlag[] = {0,0,0,0};
void loop() {
//主程序,主循环
//独立按键控制对应灯的亮灭
//Y,B,R,G
for(int i=0;i<4;i++){
buttonState[i] = digitalRead(keyPins[i]);//step1 检测
//....设置keyFlag
if(buttonState[i]==0){
//对于上拉电阻的情况,检测低电平表示按键按下
//等待按键释放
while(digitalRead(keyPins[i])==0) {}
keyFlag[i] = 1 - keyFlag[i];//两种状态的写法
}
if(keyFlag[i]==0){//step2 判断
digitalWrite(ledPins[i], HIGH);
}
else{
digitalWrite(ledPins[i], LOW);
}
}
delay(20);
// for(int i=0 ;i<4;i++){
// digitalWrite(ledPins[i], HIGH);
// delay(500);//延时,保持状态
// }
// for(int i=0 ;i<4;i++){
// digitalWrite(ledPins[3-i], LOW);
// delay(500);//延时,保持状态
// }
// digitalWrite(10, HIGH);
// delay(500);
// digitalWrite(10, LOW);
// digitalWrite(11, HIGH);
// delay(500);
// digitalWrite(11, LOW);
// digitalWrite(12, HIGH);
// delay(500);
// digitalWrite(12, LOW);
}