/* Blink Turns on an LED on for one second, then off for one second, repeatedly. Most Arduinos have an on-board LED you can control. On the Uno and Leonardo, it is attached to digital pin 13. If you're unsure what pin the on-board LED is connected to on your Arduino model, check the documentation at http://www.arduino.cc This example code is in the public domain. modified 8 May 2014 by Scott Fitzgerald */ #define Finger4 2 #define Finger3 4 #define Finger2 5 #define Finger5 6 #define Finger8 7 #define Finger7 8 #define Finger1 9 #define Finger6 10 /* #define Finger1 2 4 #define Finger2 4 3 #define Finger3 5 2 #define Finger4 6 5 #define Finger5 7 8 #define Finger6 8 7 #define Finger7 9 1 #define Finger8 10 6 */ #define Luefter 3 typedef struct { char Loch; char Dauer; } Note; Note Notenpuffer [100]; #define TaktMass 300 int Drehzahl = 80; void Hoellensound (void) { int Notenzaehler = 0; int Wiederholung = 0; while (Notenzaehler < 61) { // Finger bewegen if (Notenpuffer [Notenzaehler].Loch & 128) digitalWrite(Finger1, HIGH); else digitalWrite(Finger1, LOW); if (Notenpuffer [Notenzaehler].Loch & 64) digitalWrite(Finger2, HIGH); else digitalWrite(Finger2, LOW); if (Notenpuffer [Notenzaehler].Loch & 32) digitalWrite(Finger3, HIGH); else digitalWrite(Finger3, LOW); if (Notenpuffer [Notenzaehler].Loch & 16) digitalWrite(Finger4, HIGH); else digitalWrite(Finger4, LOW); if (Notenpuffer [Notenzaehler].Loch & 8) digitalWrite(Finger5, HIGH); else digitalWrite(Finger5, LOW); if (Notenpuffer [Notenzaehler].Loch & 4) digitalWrite(Finger6, HIGH); else digitalWrite(Finger6, LOW); if (Notenpuffer [Notenzaehler].Loch & 2) digitalWrite(Finger7, HIGH); else digitalWrite(Finger7, LOW); if (Notenpuffer [Notenzaehler].Loch & 1) digitalWrite(Finger8, HIGH); else digitalWrite(Finger8, LOW); // Pause machen delay (Notenpuffer [Notenzaehler].Dauer); serial.print (Notenzaehler); serial.print (" "); // Nächste Note Notenzaehler++; if ((Notenzaehler == 22) && (Wiederholung == 0)) { Notenzaehler = 0; Wiederholung = 1; } } } void DotheElCondorPasa (void) { // Notation: Finger 1-8 binär kodiert // 1. Abschnitt Notenpuffer [00].Loch = B00000011; Notenpuffer [00].Dauer = 4*TaktMass; // 2. Abschnitt Notenpuffer [1].Loch = B00011111; Notenpuffer [1].Dauer = 2*TaktMass; Notenpuffer [2].Loch = B00001111; Notenpuffer [2].Dauer = 2*TaktMass; Notenpuffer [3].Loch = B00011111; Notenpuffer [3].Dauer = 2*TaktMass; Notenpuffer [4].Loch = B00111111; Notenpuffer [4].Dauer = 2*TaktMass; Notenpuffer [5].Loch = B01011111; Notenpuffer [5].Dauer = 2*TaktMass; Notenpuffer [6].Loch = B00111111; Notenpuffer [6].Dauer = 2*TaktMass; Notenpuffer [7].Loch = B01011111; Notenpuffer [7].Dauer = 2*TaktMass; Notenpuffer [8].Loch = B11011111; Notenpuffer [8].Dauer = 2*TaktMass; // 3. Abschnitt Notenpuffer [9].Loch = B10000011; Notenpuffer [9].Dauer = 12*TaktMass; Notenpuffer [10].Loch = B10001111; Notenpuffer [10].Dauer = 2*TaktMass; Notenpuffer [11].Loch = B10001111; Notenpuffer [11].Dauer = 2*TaktMass; // 4. Abschnitt Notenpuffer [12].Loch = B10000011; Notenpuffer [12].Dauer = 12*TaktMass; Notenpuffer [13].Loch = B10011111; Notenpuffer [13].Dauer = 2*TaktMass; Notenpuffer [14].Loch = B10001111; Notenpuffer [14].Dauer = 2*TaktMass; // 5. Abschnitt Notenpuffer [15].Loch = B10000011; Notenpuffer [15].Dauer = 8*TaktMass; Notenpuffer [16].Loch = B00000000; Notenpuffer [16].Dauer = 2*TaktMass; // Pause Notenpuffer [17].Loch = B10000011; Notenpuffer [17].Dauer = 2*TaktMass; Notenpuffer [18].Loch = B11011111; Notenpuffer [18].Dauer = 2*TaktMass; Notenpuffer [19].Loch = B01011111; Notenpuffer [19].Dauer = 2*TaktMass; // 6. Abschnitt Notenpuffer [20].Loch = B00011111; Notenpuffer [20].Dauer = 12*TaktMass; Notenpuffer [21].Loch = B01011111; Notenpuffer [21].Dauer = 4*TaktMass; // 7. Abschnitt Notenpuffer [22].Loch = B00011111; Notenpuffer [22].Dauer = 12*TaktMass; // Ab hier komplette Wiederholung dieses Teils // 8. Abschnitt Notenpuffer [23].Loch = B10000011; Notenpuffer [23].Dauer = 4*TaktMass; // 9. Abschnitt Notenpuffer [24].Loch = B10010001; Notenpuffer [24].Dauer = 6*TaktMass; Notenpuffer [25].Loch = B10011111; Notenpuffer [25].Dauer = 2*TaktMass; Notenpuffer [26].Loch = B10010001; Notenpuffer [26].Dauer = 2*TaktMass; Notenpuffer [27].Loch = B10001111; Notenpuffer [27].Dauer = 2*TaktMass; Notenpuffer [28].Loch = B10010001; Notenpuffer [28].Dauer = 2*TaktMass; Notenpuffer [29].Loch = B10001111; Notenpuffer [29].Dauer = 2*TaktMass; /* Gerät: Passanten-Belästigungsautomat Typ: El-Condor-Pasa-Klasse Einsatzgebiet: Fussgängerzonen Einsatzzeit: Weihnachten Geschäftsmodell: Münzeinwurf unterbricht Belästigung */ // 10. Abschnitt Notenpuffer [30].Loch = B10010001; Notenpuffer [30].Dauer = 12*TaktMass; Notenpuffer [31].Loch = B10110011; Notenpuffer [31].Dauer = 2*TaktMass; Notenpuffer [32].Loch = B10010001; Notenpuffer [32].Dauer = 2*TaktMass; // 11. Abschnitt Notenpuffer [33].Loch = B10001111; Notenpuffer [33].Dauer = 8*TaktMass; Notenpuffer [34].Loch = B00000000; Notenpuffer [34].Dauer = 2*TaktMass; // Pause Notenpuffer [35].Loch = B10001111; Notenpuffer [35].Dauer = 2*TaktMass; Notenpuffer [36].Loch = B10010001; Notenpuffer [36].Dauer = 2*TaktMass; Notenpuffer [37].Loch = B10001111; Notenpuffer [37].Dauer = 2*TaktMass; // 12. Abschnitt Notenpuffer [38].Loch = B10000011; Notenpuffer [38].Dauer = 12*TaktMass; Notenpuffer [39].Loch = B01011111; Notenpuffer [39].Dauer = 4*TaktMass; // 13. Abschnitt Notenpuffer [40].Loch = B10010001; Notenpuffer [40].Dauer = 6*TaktMass; Notenpuffer [41].Loch = B10011111; Notenpuffer [41].Dauer = 2*TaktMass; Notenpuffer [42].Loch = B10010001; Notenpuffer [42].Dauer = 2*TaktMass; Notenpuffer [43].Loch = B10001111; Notenpuffer [43].Dauer = 2*TaktMass; Notenpuffer [44].Loch = B10010001; Notenpuffer [44].Dauer = 2*TaktMass; Notenpuffer [45].Loch = B10001111; Notenpuffer [45].Dauer = 2*TaktMass; // 14. Abschnitt Notenpuffer [46].Loch = B10010001; Notenpuffer [46].Dauer = 12*TaktMass; Notenpuffer [47].Loch = B10110011; Notenpuffer [47].Dauer = 2*TaktMass; Notenpuffer [48].Loch = B10010001; Notenpuffer [48].Dauer = 2*TaktMass; // 15. Abschnitt Notenpuffer [49].Loch = B10001111; Notenpuffer [49].Dauer = 8*TaktMass; Notenpuffer [50].Loch = B00000000; Notenpuffer [50].Dauer = 2*TaktMass; // Pause Notenpuffer [51].Loch = B10001111; Notenpuffer [51].Dauer = 2*TaktMass; Notenpuffer [52].Loch = B10010001; Notenpuffer [52].Dauer = 2*TaktMass; Notenpuffer [53].Loch = B10001111; Notenpuffer [53].Dauer = 2*TaktMass; // 16. Abschnitt Notenpuffer [54].Loch = B10000011; Notenpuffer [54].Dauer = 8*TaktMass; Notenpuffer [55].Loch = B00000000; Notenpuffer [55].Dauer = 2*TaktMass; Notenpuffer [56].Loch = B10000011; Notenpuffer [56].Dauer = 2*TaktMass; Notenpuffer [57].Loch = B11011111; Notenpuffer [57].Dauer = 2*TaktMass; Notenpuffer [58].Loch = B01011111; Notenpuffer [58].Dauer = 2*TaktMass; // 17. Abschnitt Notenpuffer [59].Loch = B00011111; Notenpuffer [59].Dauer = 8*TaktMass; Notenpuffer [60].Loch = B01011111; Notenpuffer [60].Dauer = 4*TaktMass; // 18. Abschnitt Notenpuffer [61].Loch = B00011111; Notenpuffer [61].Dauer = 12*TaktMass; // Hier endet der Song zum Glück.... serial.println ("Noten initialisiert..."); } // the setup function runs once when you press reset or power the board void setup() { // initialize digital pin 13 as an output. pinMode (Finger1, OUTPUT);digitalWrite(Finger1, LOW); pinMode (Finger2, OUTPUT);digitalWrite(Finger2, LOW); pinMode (Finger3, OUTPUT);digitalWrite(Finger3, LOW); pinMode (Finger4, OUTPUT);digitalWrite(Finger4, LOW); pinMode (Finger5, OUTPUT);digitalWrite(Finger5, LOW); pinMode (Finger6, OUTPUT);digitalWrite(Finger6, LOW); pinMode (Finger7, OUTPUT);digitalWrite(Finger7, LOW); pinMode (Finger8, OUTPUT);digitalWrite(Finger8, LOW); pinMode (Luefter, OUTPUT); analogWrite(Luefter, 255); analogWrite(Luefter, 255-Drehzahl); Serial.begin(9600); Serial.println ("Los gehts mit dem Quark..."); DotheElCondorPasa (); Serial.println ("Helm ab zum Gebet..."); } void Handsteuerung (void) { char c = Serial.read(); // Lüfter schneller if (c=='+') { if (Drehzahl < 250) Drehzahl += 5; Serial.print (Drehzahl); Serial.print ( " "); } // Lüfter langsamer if (c=='-') { if (Drehzahl > 5) Drehzahl -= 5; Serial.print (Drehzahl); Serial.print ( " "); } analogWrite(Luefter, 255-Drehzahl); } // the loop function runs over and over again forever void loop() { Handsteuerung (); Hoellensound (); delay (1000); /* digitalWrite(Finger8, HIGH); // turn the LED on (HIGH is the voltage level) delay(100); // wait for a second digitalWrite(Finger8, LOW); // turn the LED off by making the voltage LOW delay(100); // wait for a second */ }