Hallo Gemeinde
Ich möchte eine ziemlich simple Steuerung für einen DC-Motor realisieren. Der Motor soll per PWM angesteuert werden (Die Pulsbreite lässt sich per Poti einstellen) Der Motor dreht zu Beginn in die eine Richtung, bis der Endschalter Switch1 geschlossen wird. Nach einer Pause von 10 Sekunden dreht der Motor in die andere Richtung (Relais wird aktiviert für Umpolung), bis Endschalter 2 geschlossen wird.
Das Programm funktioniert soweit. Nur das mit den Endschaltern läuft noch nicht optimal. Manchmal stoppt der Motor erst nach einigen Sekunden, nachdem der Endschalter geschlossen wurde. Der sollte aber unmittelbar stoppen, wenn ein Endschalter aktiviert wird.
Jemand ne Idee, was ich falsch mache?
int Val;
int PotVal = A0; // Potentiometer attached to A0
int Motor = 9; // PWM Output for Motor attached to pin 9 (PWM Pin)
int Switch1 = 4; // End switch 1
int Switch2 = 7; // End switch 2
int Relais = 8;
int StateSwitch1 = LOW;
int StateSwitch2 = LOW;
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
pinMode(PotVal, INPUT);
pinMode(Motor, OUTPUT);
pinMode(Switch1, INPUT);
pinMode(Switch2, INPUT);
pinMode(Relais, OUTPUT);
}
void loop() {
Val = analogRead(PotVal); //read Pot value
while(digitalRead(Switch1) == LOW){ //while Switch 1 LOW, turn Motor
digitalWrite(Relais, LOW);
analogWrite(Motor, Val/4); //PWM Output for Motor
//delay(100);
}
analogWrite(Motor, 0);
delay(10000);
while(digitalRead(Switch2) == LOW){ //while Switch 2 LOW, turn Motor in other direction
digitalWrite(Relais, HIGH);
analogWrite(Motor, Val/4);
//delay(100);
}
analogWrite(Motor, 0);
delay(10000);
}