1. 以arduino實做一個打地鼠小遊戲,Serial序列顯示分數(可用七段顯示器或LCD替換顯示分數方式),每3秒隨機一個LED發亮,玩家需要在三秒內按到該發亮LED對應的按鈕才算得分,成功得一分,失敗則扣一分。
2. 電路圖:
3. 程式碼:
// Pin 13 has an LED connected on most Arduino boards.
// give it a name:
int led1 = 2;
int led2= 3;
int led3= 4;
int led4= 5;
int led5= 6;
int button1 = 8;
int button2 = 9;
int button3 = 10;
int button4 = 11;
int button5 = 12;
static int score=0;
int keyValue=0;
// the setup routine runs once when you press reset:
void setup() {
Serial.begin(9600);
// initialize the digital pin as an output.
pinMode(led1,OUTPUT);
pinMode(led2,OUTPUT);
pinMode(led3,OUTPUT);
pinMode(led4 ,OUTPUT);
pinMode(led5 ,OUTPUT);
pinMode(button1, INPUT);
pinMode(button2, INPUT);
pinMode(button3, INPUT);
pinMode(button4, INPUT);
pinMode(button5, INPUT);
initial();
}
void initial(){
digitalWrite(led1,LOW);
digitalWrite(led2,LOW);
digitalWrite(led3,LOW);
digitalWrite(led4,LOW);
digitalWrite(led5,LOW);
Serial.println(“—–Welcome to Whack-a-mole Game!—–“);
}
// the loop routine runs over and over again forever:
void loop() {
int a = random(2,7); //隨機選取五個LED之一發亮
digitalWrite(a, HIGH);
unsigned long time = millis();
while( millis()-time < 3000){ // 三秒換一次LED發亮
keyValue= digitalRead(a+6);
if(keyValue){
break;
}
//Serial.println(keyValue);
delay(10);
}
if(keyValue){
score++;
}else{
score–;
}
digitalWrite(a, LOW);
Serial.print(“Score: “);
Serial.println(score);
}
參考:
1. Autodesk circuit: (提供接線、coding模擬,功能完整,使用上方便,不會有爆炸危險XD)
https://circuits.io/circuits/