私はこのゲームを(私の場合は)6人の隣同士のゲームである "停止"にしています。 1(knop1)、led 1が燃えると、ledが速く点滅し始めます。Arduinoのゲーム "Stop It"
私はそれを理解しました しかし、私はゲームを完全に停止するためにいつでも押すことができる必要がある第2ボタン(knop2)が必要ですが、私はこれに失敗し続けます。
この
はコードです...私は多くのことを試してみましたが、それらの一つ一つは、また やや複雑なコードを気の毒に失敗しました:#define NOTE_E4 330 //Declareren van de noten
#define NOTE_G4 392
#define NOTE_A4 440
#define NOTE_0 000
//----------------------------------------------------------------------------------------------------------------------------------------
int noten[] = { //De noten
NOTE_E4, NOTE_G4, NOTE_A4, NOTE_E4, NOTE_A4
};
//----------------------------------------------------------------------------------------------------------------------------------------
int duur[] = { //de duur van elke noot
225, 225, 950, 225, 925
};
//----------------------------------------------------------------------------------------------------------------------------------------
const int buzzer = 9; //Hier staat de pin van de buzzer voor het lied
const int snelheid = 1.5; //Snelheid, een hoger getal laat alles trager gaan, een lager getal laat het sneller gaan
int led1 = 2;
int led2 = 3;
int led3 = 4;
int led4 = 5;
int led5 = 6;
int led6 = 7;
int gluid = 9;
int run = 0;
int knop = 12;
int knop2 = 11;
int n = 220;
//----------------------------------------------------------------------------------------------------------------------------------------
void setup() {
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(led3, OUTPUT);
pinMode(led4, OUTPUT);
pinMode(led5, OUTPUT);
pinMode(led6, OUTPUT);
pinMode(knop, INPUT_PULLUP);
Serial.begin(9600);
Serial.println("We shall begin. \n ");
delay(500);
for (int i=0;i<5;i++){ //5 staat voor het max aantal noten
int wacht = duur[i] * (snelheid * 0.9);
tone(buzzer,noten[i],wacht); //tone(pin,frequentie,duur)
delay(wacht);} //delay zorgt er hier voor dat de vorige noot niet word afgespeeld tijdens de vorige noot
delay(100);
Serial.println("Press the red button to start.");
Serial.println("You can press the black button any time to stop.");
}
//----------------------------------------------------------------------------------------------------------------------------------------
void loop(){
if (n <= 10)
{
n = 60;
}
else if (n == 20) {
Serial.begin(9600);
Serial.println("You won! Congratz!");
delay(150);
digitalWrite(led6, HIGH);
digitalWrite(led5, HIGH);
digitalWrite(led4, HIGH);
digitalWrite(led3, HIGH);
digitalWrite(led2, HIGH);
digitalWrite(led1, HIGH);
delay(150);
digitalWrite(led6, HIGH);
digitalWrite(led5, HIGH);
digitalWrite(led4, HIGH);
digitalWrite(led3, HIGH);
digitalWrite(led2, HIGH);
digitalWrite(led1, LOW);
delay(150);
digitalWrite(led6, HIGH);
digitalWrite(led5, HIGH);
digitalWrite(led4, HIGH);
digitalWrite(led3, HIGH);
digitalWrite(led2, LOW);
digitalWrite(led1, LOW);
delay(150);
digitalWrite(led6, HIGH);
digitalWrite(led5, HIGH);
digitalWrite(led4, HIGH);
digitalWrite(led3, LOW);
digitalWrite(led2, LOW);
digitalWrite(led1, LOW);
delay(150);
digitalWrite(led6, HIGH);
digitalWrite(led5, HIGH);
digitalWrite(led4, LOW);
digitalWrite(led3, LOW);
digitalWrite(led2, LOW);
digitalWrite(led1, LOW);
delay(150);
digitalWrite(led6, HIGH);
digitalWrite(led5, LOW);
digitalWrite(led4, LOW);
digitalWrite(led3, LOW);
digitalWrite(led2, LOW);
digitalWrite(led1, LOW);
delay(150);
digitalWrite(led6, HIGH);
digitalWrite(led5, HIGH);
digitalWrite(led4, LOW);
digitalWrite(led3, LOW);
digitalWrite(led2, LOW);
digitalWrite(led1, LOW);
delay(150);
digitalWrite(led6, HIGH);
digitalWrite(led5, HIGH);
digitalWrite(led4, HIGH);
digitalWrite(led3, LOW);
digitalWrite(led2, LOW);
digitalWrite(led1, LOW);
delay(150);
digitalWrite(led6, HIGH);
digitalWrite(led5, HIGH);
digitalWrite(led4, HIGH);
digitalWrite(led3, HIGH);
digitalWrite(led2, LOW);
digitalWrite(led1, LOW);
delay(150);
digitalWrite(led6, HIGH);
digitalWrite(led5, HIGH);
digitalWrite(led4, HIGH);
digitalWrite(led3, HIGH);
digitalWrite(led2, HIGH);
digitalWrite(led1, LOW);
delay(150);
digitalWrite(led6, HIGH);
digitalWrite(led5, HIGH);
digitalWrite(led4, HIGH);
digitalWrite(led3, HIGH);
digitalWrite(led2, HIGH);
digitalWrite(led1, HIGH);
delay(150);
digitalWrite(led6, LOW);
digitalWrite(led5, LOW);
digitalWrite(led4, LOW);
digitalWrite(led3, LOW);
digitalWrite(led2, LOW);
digitalWrite(led1, LOW);
digitalWrite(buzzer, LOW);
n = 10;
digitalWrite(led6, LOW);
digitalWrite(led5, LOW);
digitalWrite(led4, LOW);
digitalWrite(led3, LOW);
digitalWrite(led2, LOW);
digitalWrite(led1, LOW);
digitalWrite(buzzer, LOW);
digitalWrite(gluid, LOW);
n = 220;
delay(500);
}
else
if(digitalRead(knop) == LOW)
{
if(run == 0){
run = 255;
Serial.println("Next stage.");
n = n - 20; }
else{
run = 0;
}
}
if(run > 0)
{
{
digitalWrite(led6, HIGH);
delay(n);
digitalWrite(led6, LOW);
delay(n);
tone(gluid, 700);
}
{
digitalWrite(led5, HIGH);
delay(n);
digitalWrite(led5, LOW);
delay(n);
tone(gluid, 900);
}
{
digitalWrite(led4, HIGH);
delay(n);
digitalWrite(led4, LOW);
delay(n);
tone(gluid, 700);
}
{
digitalWrite(led3, HIGH);
delay(n);
digitalWrite(led3, LOW);
delay(n);
tone(gluid, 900);
}
{
digitalWrite(led2, HIGH);
delay(n);
digitalWrite(led2, LOW);
delay(n);
tone(gluid, 700);
}
{
digitalWrite(led1, HIGH);
delay(n);
digitalWrite(led1, LOW);
delay(n);
tone(gluid, 600);
}
}
}
「遅延」は使用しないでください。 –
ミリスやマイクロを使うべきですか? –