thomas_boehmer:
Bis move 3 ist es angepasst so das die servos nirgendwo anstöhsen aber ob das mit dem mp3 Player überhaupt funktioniert soweit bin ich noch garnicht?!
Ok,
ich hab da mal kurz drüber geschaut - sieht recht zum aufräumen aus 
Was auffällt, neben den vielen delay(), ist das if else Konstrukt im loop. Dazu dann auch noch im setup() doppelte Initialisierungen...
sd.begin (SD_SEL, SPI_HALF_SPEED);
MP3player.begin();
if (MP3player.begin() != 0) Serial.print (F ("Error"));
if (!sd.begin (SD_SEL, SPI_HALF_SPEED)) sd.initErrorHalt();
Du solltest Dich für eine der Varianten entscheiden. Entweder die ersten beiden oder die letzten beiden Zeilen.
Dann fängst Du im loop an mit:
if (digitalRead (switch_pin) == HIGH)
{
if (selectedMove > 10)
{
selectedMove = 0; //when all moves are played, repeat the moves from beginning
}
if (selectedMove == 0)
{
switchoff();
}
else
if (selectedMove == 1)
{
switchoff();
}
else
[...]
um später unten dann:
if (selectedMove == 0)
{
switchoff();
}
else
if (selectedMove == 1)
{
switchoff();
}
zu schreiben.
Die Frage der Fragen: welche der 77 delays können raus? (Ja alle... müssen raus) Die restlichen bekommt man dann auch noch aufgelöst.
Und: Was passiert, wenn der Schalter nicht ein ist?
Das Ding soll doch sicher in eine Ausgangsposition...
Ich hab mal Dein loop() umgeschrieben, wie ich es mir denke.
void loop()
{
if (Testmove != 0)
{
selectedMove = Testmove;
}
//if the switch is on, then move door and hand to switch it off...
if (digitalRead (switch_pin) == HIGH)
{
if (selectedMove > 10)
{
selectedMove = 0; //when all moves are played, repeat the moves from beginning
}
switch (selectedMove)
{
case 0:
switchoff();
break;
case 1:
switchoff();
break;
case 2:
switchoffbitaraddod();
break;
case 3:
crazydoor();
break;
case 4:
crazyslow();
break;
case 5:
m7anika7anika();
break;
case 6:
m3alla2();
break;
case 7:
switchoff();
break;
case 8:
matrix();
break;
case 9:
sneak();
break;
case 10:
zee7();
break;
default:
selectedMove = 0;
break;
}
if (!Testmove) selectedMove++; //swith to next move if not in test mode
}
// EDIT
else // Wenn Schalter aus
{
switchoff();
selectedMove = 0;
}
}
Hinweis: Ich benutze eine etwas andere Formatierung - wenn den Code übernommen hast, einfach STRG-T drücken...