int led = 13; int rbutton = 10; int pbutton = 11; int lbutton = 12; #define LEFT LOW #define RIGHT HIGH #define XMAX 1400 int xposition; int movedirection; // Definition of the frequecies in hertz. // http://pages.mtu.edu/~suits/notefreqs.html #define c4 262 #define cS4 277 #define d4 294 #define dS4 311 #define e4 330 #define f4 349 #define fS4 370 #define g4 392 #define gS4 415 #define a4 440 #define aS4 466 #define b4 494 #define c5 523 #define cS5 554 #define d5 587 #define dS5 622 #define e5 659 #define f5 698 #define fS5 740 #define g5 784 #define gS5 831 #define a5 880 void setup() { pinMode(led, OUTPUT); pinMode(lbutton, INPUT); pinMode(rbutton, INPUT); pinMode(8, OUTPUT); // ENABLE digitalWrite(8, LOW); pinMode(5, OUTPUT); // DIRECTION digitalWrite(5, LOW); pinMode(2, OUTPUT); // PULSE xposition=XMAX/2; xposition = 0; Serial.begin(9600); } void moveHead(int dir, int n){ int i; movedirection = dir; digitalWrite(5, movedirection); digitalWrite(led, HIGH); for (i=0; iXMAX-300) movedirection = LEFT; if (xposition<300) movedirection = RIGHT; // else keep movedirection as it was last time // set move direction: digitalWrite(5, movedirection); digitalWrite(led, HIGH); for (i=0; i0) moveHead(LEFT, 1); } void loop() { // https://melodyful.com/complete-list-of-music-symbols-with-their-meaning if (digitalRead(lbutton)==HIGH){ while (digitalRead(lbutton)==HIGH) moveHead(LEFT, 1); xposition = 0; } if (digitalRead(rbutton)==HIGH){ while (digitalRead(rbutton)==HIGH) moveHead(RIGHT, 1); xposition = XMAX; } if (digitalRead(pbutton)==HIGH){ playImperialMarch(); delay(5000); returnHome(); } }