Using the Romi32U4 library, I programmed the Pololu Romi to play and dance to the Hokey Pokey song.
#include <Romi32U4.h>
Romi32U4Motors motors;
Romi32U4ButtonA buttonA;
Romi32U4LCD lcd;
PololuBuzzer buzzer;
//Music notes transcribed from sheet music found here: https://www.makingmusicfun.net/pdf/sheet_music/hokey_pokey_leadsheet.pdf
const char you_put_your_right_foot_in[] PROGMEM = "MS d8 e8 d8 g4 g4 g8";
const char you_take_your_right_foot_out[] PROGMEM = "MS d8 e8 d8 g4 g4 g8";
const char and_you_shake_it_all_about[] PROGMEM = "MS e8 d8 f#8 e#8 f#8 e8 f#4 R8";
const char you_do_the_hokey_pokey_and[] PROGMEM = "MS d8 f#8 e#8 f#8 e8 f#8 f#8 e8";
const char you_turn_yourself_around[] PROGMEM = "MS d8 f#8 e#8 f#8 e8 f#4 R4";
const char thats_what_its_all_about[] PROGMEM = "MS d8 d4 d8 e4 f#4 g4 R4 R2";
void setup() { //Setup code to display battery voltage was taken from 98-012 Square Lab base code
uint16_t batteryLevel;
while (!buttonA.isPressed()) {
batteryLevel = readBatteryMillivolts();
lcd.clear();
lcd.print("B=");
lcd.print(batteryLevel);
lcd.print("mV");
lcd.gotoXY(0, 1);
lcd.print("Press A");
delay(100);
}
lcd.clear();
delay(500);
}
void loop() {
ledYellow(1);
delay(500);
ledYellow(0);
delay(500);
buzzer.playFromProgramSpace(you_put_your_right_foot_in);
motors.setRightSpeed(100); delay(300);
motors.setRightSpeed(0);
while(buzzer.isPlaying()){ }
buzzer.playFromProgramSpace(you_take_your_right_foot_out);
motors.setRightSpeed(-100); delay(600);
motors.setRightSpeed(0);
while(buzzer.isPlaying()){ }
buzzer.playFromProgramSpace(you_put_your_right_foot_in);
motors.setRightSpeed(100); delay(600);
motors.setRightSpeed(0);
while(buzzer.isPlaying()){ }
buzzer.playFromProgramSpace(and_you_shake_it_all_about);
while(buzzer.isPlaying()){
motors.setRightSpeed(100); delay(50);
motors.setRightSpeed(-100); delay(50);
}
buzzer.playFromProgramSpace(you_do_the_hokey_pokey_and);
motors.setRightSpeed(-100); delay(200);
while(buzzer.isPlaying()){
motors.setRightSpeed(100);
motors.setLeftSpeed(-100); delay(100);
motors.setRightSpeed(-100);
motors.setLeftSpeed(100); delay(100);
}
buzzer.playFromProgramSpace(you_turn_yourself_around);
motors.setRightSpeed(100);
motors.setLeftSpeed(-100); delay(2000);
motors.setLeftSpeed(0);
motors.setRightSpeed(0);
while(buzzer.isPlaying()){ }
buzzer.playFromProgramSpace(thats_what_its_all_about);
motors.setRightSpeed(0);
motors.setLeftSpeed(0);
while(buzzer.isPlaying()){ }
buzzer.playFromProgramSpace(you_put_your_right_foot_in);
motors.setLeftSpeed(100); delay(300);
motors.setLeftSpeed(0);
while(buzzer.isPlaying()){ }
buzzer.playFromProgramSpace(you_take_your_right_foot_out);
motors.setLeftSpeed(-100); delay(600);
motors.setLeftSpeed(0);
while(buzzer.isPlaying()){ }
buzzer.playFromProgramSpace(you_put_your_right_foot_in);
motors.setLeftSpeed(100); delay(600);
motors.setLeftSpeed(0);
while(buzzer.isPlaying()){ }
buzzer.playFromProgramSpace(and_you_shake_it_all_about);
while(buzzer.isPlaying()){
motors.setLeftSpeed(100); delay(50);
motors.setLeftSpeed(-100); delay(50);
}
buzzer.playFromProgramSpace(you_do_the_hokey_pokey_and);
motors.setRightSpeed(-100); delay(200);
while(buzzer.isPlaying()){
motors.setLeftSpeed(100);
motors.setRightSpeed(-100); delay(100);
motors.setLeftSpeed(-100);
motors.setRightSpeed(100); delay(100);
}
buzzer.playFromProgramSpace(you_turn_yourself_around);
motors.setLeftSpeed(100);
motors.setRightSpeed(-100); delay(2000);
motors.setLeftSpeed(0);
motors.setRightSpeed(0);
while(buzzer.isPlaying()){ }
buzzer.playFromProgramSpace(thats_what_its_all_about);
motors.setLeftSpeed(0);
motors.setRightSpeed(0);
while(buzzer.isPlaying()){ }
}
Leave a Reply
You must be logged in to post a comment.