Hallo,
irgendwie stehe ich grad auf dem Schlauch bei einer eigentlich ganz einfachen Aufgabe.
Und zwar habe eine Schiene, einen Schlitten und je einen Endschalter am Ende. Wenn der Schlitten den Endschalter erreicht, soll der Motor ausgehen. Wenn ich den Einschalter drücke, soll der Motor wieder in die andere Richtung fahren.
Was ich bisher benutzt habe (Ein-/Ausschalten per Tastendruck, Richtungswechsel manuell über andere Taste):
if (einaus ==0) // Motor ausschalten, wenn Einschalter auf Aus ist
{
digitalWrite(rechtslauf,LOW);
digitalWrite(linkslauf,LOW);
analogWrite(motoreinaus, 0);
}
else
{
if( richtung == 0) // Rechtslauf einschalten
{
digitalWrite(linkslauf,LOW);
digitalWrite(rechtslauf,HIGH);
analogWrite(motoreinaus, pwmMotor);
}
else // Linkslauf einschalten
{
digitalWrite(rechtslauf,LOW);
digitalWrite(linkslauf,HIGH);
analogWrite(motoreinaus, pwmMotor);
}
}
case btnRICHTUNG: // Taste für Richtungswechsel
{
switch (richtung)
{
case 0:
{
lcd.clear();
richtung=1;
delay(300);
break;
}
case 1:
{
lcd.clear();
richtung=0;
delay(300);
break;
}
}
break;
}
Ich hatte schon probiert über eine Oder-Bedingung (Einschalter aus oder Endlage ein) das Problem zu lösen. Der Motor geht zwar dann aus, wie ich ihn aber wieder anbekomme, fällt mir bei besten Willen nicht ein.
Meine Idee war es eine Variable zu erstellen, die 1 ist, sobald die Endlage erreicht ist und durch den Einschalter wieder auf 0 resettet wird. Da es sich ja um einen Schalter handelt, wird ja permanent ein Signal gesendet, die Variable ist also immer 1, egal was ich mache. Ich bräuchte irgendwie ein "Tasterverhalten".
Das mit dem Richtungswechsel wäre dann nämlich auch zu realisieren, da ja die Aktion nur einmal ausgeführt wird.