Seven nations army is a classic and that should never be questioned. It is also very repetitive which is helpful if you’re trying to make your Arduino board play it.
For this weeks assignment I created a knob steered Seven Nations Army player, where the users can go through the notes of the tune and play it themselves. I also introduced the breaks, where in-between the notes there are 0 notes, which emit no sounds. By doing that I gained manual control over the length of each note played. I also used a RED EMERGENCY BUTTON for when the speaker was getting to nerve wrecking. When the button is pressed no sounds is emitted 🙂
#include "pitches.h" #define speaker 4 #define btn 3 #define knob 2 int whichNote = 0; int knobValue; int lastNote = 14; int notes[15] = {0, NOTE_E2, 0, NOTE_E2, 0, NOTE_G2, 0, NOTE_E2, 0, NOTE_D2, 0, NOTE_C2, 0, NOTE_B1, 0}; void setup() { pinMode (btn, INPUT); Serial.begin (9600); } void loop() { if (digitalRead(btn) == LOW) { whichNote = map(analogRead(A0), 0, 1023, 0, 14); tone(4, notes[whichNote], 1000); } if (whichNote == lastNote) { int i, k, t; int n = sizeof(notes) / sizeof(notes[0]); for (i = 0; i < n / 2; i++) { t = notes[i]; notes[i] = notes[n - i - 1]; notes[n - i - 1] = t; } if (lastNote == 0) { lastNote = 14; } else { lastNote = 0; } } }