header
Play a Start Tone

Connect a speaker to pin 9.

connect speaker

Now we would like to play a little tone to signal the start of the game. Add the highlighted code to your program.

// Use arrays to hold our pin numbers and the pattern.
// This will let us use a loop to go through the values.
int speaker = 9;
int ledPin[] = { 67 };
int pattern[5];  // This array will hold the pattern we generate.

// Need some notes
int C = 523;
int F = 698;


void setup() {
  pinMode(speakerOUTPUT);
  pinMode(ledPin[0], OUTPUT);
  pinMode(ledPin[1], OUTPUT);
  randomSeed(analogRead(0));  // Ensures that pattern is different at every reset
}

void loop() {
  for (int i = 0i < 3i++) {
    tone(speakerC);
    delay(350);
    noTone(speaker);
    delay(350);
  }
  tone(speakerF);
  delay(350);
  noTone(speaker);

  
  generate_pattern();
}

void generate_pattern() {
  // Generate random pattern
  for (int i = 0i < 5i++) {
    int number = random(0,2);
    pattern[i] = number;
    digitalWrite(ledPin[number], HIGH);
    delay(500);
    digitalWrite(ledPin[number], LOW);
    delay(500);
  }
}

Once we have this working, let's again move the loop that plays the tone to a new function, called play_start_tones.

// Use arrays to hold our pin numbers and the pattern.
// This will let us use a loop to go through the values.
int speaker = 9;
int ledPin[] = { 67 };
int pattern[5];  // This array will hold the pattern we generate.

// Need some notes
int C = 523;
int F = 698;

void setup() {
  pinMode(speakerOUTPUT);
  pinMode(ledPin[0], OUTPUT);
  pinMode(ledPin[1], OUTPUT);
  randomSeed(analogRead(0));  // Ensures that pattern is different at every reset
}

void loop() {
  play_start_tones();
  generate_pattern();
}

void play_start_tones() {
  for (int i = 0i < 3i++) {
    tone(speakerC);
    delay(350);
    noTone(speaker);
    delay(350);
  }
  tone(speakerF);
  delay(350);
  noTone(speaker);
}


void generate_pattern() {
  // Generate random pattern
  for (int i = 0i < 5i++) {
    int number = random(0,2);
    pattern[i] = number;
    digitalWrite(ledPin[number], HIGH);
    delay(500);
    digitalWrite(ledPin[number], LOW);
    delay(500);
  }
}

Now we have something that says "Go" and a pattern generated. The next step is to hook up some buttons to allow the user to enter their pattern.

Connect two buttons

Game Home