Forum: Mikrocontroller und Digitale Elektronik Nach Durchlauf Motor soll nicht mehr anspringen


von Hendrik H. (hheinema)


Lesenswert?

Hallo zusammen,

ich habe ein Problem.
Ich will einen Motor mittels Sensor (Arduino) ansteuern.
Wenn der Sensor einen bestimmten Wert übersteigt soll, soll der Motor 
anspringen. Dieser soll bis einem bestimmten Wert laufen bis ein höhere 
Sensorwert erreicht wird. Dann soll der Motor ausgehen.
Das läuft auch alles.
Der Motor soll aber nicht mehr angehen. Erst wenn der Sensorwert einmal 
auf 0 war.
Das Problem ist wenn der Sensorwert wieder unter den höheren Sensorwert 
sinkt, fängt der Motor wieder an zu laufen und das soll er nicht.

Die Werte frage ich mit einer while Schleife ab.

Gibt es einen Befehl, indem ich dem Programm sagen kann, das der Motor 
nicht mehr anspringen soll, bis der Wert wieder 0 ist?

Danke im voraus.

von Leonhard K. (leonhard_k)


Lesenswert?

Du benötigst einen Automaten:

http://de.wikipedia.org/wiki/Endlicher_Automat

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Hendrik Heinemann schrieb:
> Gibt es einen Befehl, indem ich dem Programm sagen kann, das der Motor
> nicht mehr anspringen soll, bis der Wert wieder 0 ist?

Du setzt einfach eine Flagge, wenn der Motor einmal gelaufen ist. 
Solange die Flagge gesetzt ist, sperrst du den Motor und löschst die 
Flagge erst dann, wenn der Sensor wieder mal 0 liefert.

von Tlol (Gast)


Lesenswert?

Hendrik Heinemann schrieb:
> Der Motor soll aber nicht mehr angehen. Erst wenn der Sensorwert einmal
> auf 0 war.

In dem Fall ein Flag setzen und if-Schleife (http://www.if-schleife.de/) 
verwenden.

von hheinema (Gast)


Lesenswert?

Hi danke für die Antworten,
Wie funktioniert das denn genau mit dem flag. Ist das ein spezieller 
Befehl? Oder wie programmiert so eine Flag.

Danke

von H.Joachim S. (crazyhorse)


Lesenswert?

Das ist einfach ne Variable. Mindestgrösse 1Bit. Üblicherweise verwendet 
man ein char. 0: gelöscht, ansonsten gesetzt.

von npn (Gast)


Lesenswert?

hheinema schrieb:
> Hi danke für die Antworten,
> Wie funktioniert das denn genau mit dem flag. Ist das ein spezieller
> Befehl? Oder wie programmiert so eine Flag.
>
> Danke

Beispielsweise einfach eine Variable auf 1 setzen, wenn er angelaufen 
ist. Dann diese Variable testen, und wenn sie immer noch 1 ist, nicht 
anlaufen lassen. Erst bei Drehzahl 0 setzt du die Variable auf 0 zurück. 
Beim nächsten Test der Variablen stellst du fest, daß sie nicht mehr 1 
ist und der Motor darf wieder anlaufen.

von Falk B. (falk)


Lesenswert?

Siehe Statemachine. Da lernst du auch gleich was Grundlegendes.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.