Hallo,
Ik ben voor het toneel van mijn kinderen een grote klok aan het maken welke gewoon draait (Sneller dan 1 uur.) snel vooruit, snel achteruit en stil kan staan. Dit is mij als leek gelukt via de diverse fora's.
Echter kan ik niet vinden hoe ik zodra ik op een knop druk meteen versneld of terug laat draaien. Hij maakt eerst zijn loop af. graag zou ik het hebben dat hij meteen op de knop reageert.
Voor de grote en de kleine wijzer heb ik een eigen stappenmotor en een eigen Arduino UNO gebruikt. Dus beide worden apart geprogrammeerd met andere delays.
Dit is hoe het schema van 1 wijzer er nu uit ziet.
int PinButton3 = 4; //klok stilstaan
int PinButton1 = 5; // snel vooruit
int PinButton2 = 6; //snel achteruit
int Pin0 = 8; //motor grote wijzer
int Pin1 = 9;
int Pin2 = 10;
int Pin3 = 11;
int msDelay = 400; //snelheid klok (12 min.circa 1 uur.)
int snelDelay = 4; // klok versneld laten draaien
void setup()
{
pinMode(Pin0, OUTPUT); //motor grote wijzer
pinMode(Pin1, OUTPUT);
pinMode(Pin2, OUTPUT);
pinMode(Pin3, OUTPUT);
pinMode(PinButton1, INPUT); // versnel
pinMode(PinButton2, INPUT); //stop
pinMode(PinButton3, INPUT); // draai terug
}
void loop()
{start:
{
if (digitalRead (PinButton3)==HIGH){ // stop klok
}
if (digitalRead (PinButton1)==HIGH && digitalRead(PinButton2)==LOW && digitalRead (PinButton3)==LOW)
{ // snel vooruit
digitalWrite(Pin3, HIGH); //motor grote wijzer
digitalWrite(Pin2, LOW);
digitalWrite(Pin1, LOW);
digitalWrite(Pin0, LOW);
delay(snelDelay);
digitalWrite(Pin3, LOW); //motor grote wijzer
digitalWrite(Pin2, HIGH);
digitalWrite(Pin1, LOW);
digitalWrite(Pin0, LOW);
delay(snelDelay);
digitalWrite(Pin3, LOW); //motor grote wijzer
digitalWrite(Pin2, LOW);
digitalWrite(Pin1, HIGH);
digitalWrite(Pin0, LOW);
delay(snelDelay);
digitalWrite(Pin3, LOW); //motor grote wijzer
digitalWrite(Pin2, LOW);
digitalWrite(Pin1, LOW);
digitalWrite(Pin0, HIGH);
delay(snelDelay);
goto start;
}
if (digitalRead (PinButton1)==LOW && digitalRead(PinButton2)==LOW && digitalRead (PinButton3)==LOW)
{
digitalWrite(Pin3, HIGH); //motor grote wijzer
digitalWrite(Pin2, LOW);
digitalWrite(Pin1, LOW);
digitalWrite(Pin0, LOW);
delay(msDelay);
digitalWrite(Pin3, LOW); //motor grote wijzer
digitalWrite(Pin2, HIGH);
digitalWrite(Pin1, LOW);
digitalWrite(Pin0, LOW);
delay(msDelay);
digitalWrite(Pin3, LOW); //motor grote wijzer
digitalWrite(Pin2, LOW);
digitalWrite(Pin1, HIGH);
digitalWrite(Pin0, LOW);
delay(msDelay);
digitalWrite(Pin3, LOW); //motor grote wijzer
digitalWrite(Pin2, LOW);
digitalWrite(Pin1, LOW);
digitalWrite(Pin0, HIGH);
delay(msDelay);
goto start;
}
if (digitalRead (PinButton1)==LOW && digitalRead(PinButton2)==HIGH && digitalRead (PinButton3)==LOW)
{ // versneld terug draaien
digitalWrite(Pin0, HIGH); //motor grote wijzer
digitalWrite(Pin1, LOW);
digitalWrite(Pin2, LOW);
digitalWrite(Pin3, LOW);
delay(snelDelay);
digitalWrite(Pin0, LOW); //motor grote wijzer
digitalWrite(Pin1, HIGH);
digitalWrite(Pin2, LOW);
digitalWrite(Pin3, LOW);
delay(snelDelay);
digitalWrite(Pin0, LOW); //motor grote wijzer
digitalWrite(Pin1, LOW);
digitalWrite(Pin2, HIGH);
digitalWrite(Pin3, LOW);
delay(snelDelay);
digitalWrite(Pin0, LOW); //motor grote wijzer
digitalWrite(Pin1, LOW);
digitalWrite(Pin2, LOW);
digitalWrite(Pin3, HIGH);
delay(snelDelay);
goto start;
}
}
}