wie Programmiere ich in folgenden Code um das erst der Freuchigkeitssensor ausgelöst werden muss und der Motor in eine Richtung dreht und dann muss der Taster gedrückt werden das der Motor in die andere Richtung dreht und dann erst wieder der Feuchtigkeitssensor.
Aktuell ist es so, dass egal welche Auslösung man drückt dreht er sich. Dies soll aber nicht so sein, sondern immer nacheinander.
Habt ihr vielleicht eine Idee.
Hier der Aktuelle Code von uns:
#include <Stepper.h>
int SPMU = 32;
int messwert=0;
const int tasterPin=11;
bool tasterStatus;
Stepper myStepper(SPMU, 2,3,4,5);
void setup(){
Serial.begin(9600);
pinMode (tasterPin,INPUT);
myStepper.setSpeed(500);
}
void loop() {
messwert=analogRead(A4);
Serial.print("Feuchtigkeits-Messwert:");
Serial.println(messwert);
if (messwert > 200 ){
myStepper.step(2048);
}
tasterStatus=digitalRead(tasterPin);
if (tasterStatus == HIGH )
myStepper.step(-2048);
}
Kommt mir das Thema nicht irgendwie bekannt vor? Hier hatte ich etwas geschrieben, was ich im aktuellen Programm nicht finden kann. Ist aber der springende Punkt.
agmue:
Kommt mir das Thema nicht irgendwie bekannt vor? Hier hatte ich etwas geschrieben, was ich im aktuellen Programm nicht finden kann. Ist aber der springende Punkt.
Ja das haben wir probiert aber der Sketch zeigt irgendwie einen fehler an. Könntest du uns hier evtl zeigen wie der Code richtig lauten muss (komplett)
Der Sketch lässt sich zwar Hochladen, doch der Motor dreht sich weder in die eine Richtung noch in die andere Richtung, sprich er regiert jetzt auf keine Auslösung mehr.
Feuchtesensor auslesen, wenn > 200, dann dreht Motor
Programm soll jetzt auf Tastendruck warten, wenn gedrückt, Motor dreht anders herum
wenn das erfolgt ist, darf wieder der Sensor ausgelesen werden und der Motor wieder richtig herum drehen.
So korrekt? Wenn ja, erkläre ich dir was dein Programm aktuell wirklich macht.
TanjaGoldrain:
Zum Monitor können wir dir nicht viel sagen der ist bei uns nicht angeschlossen. Wir testen es gleich in der Schaltung.
Ist es immer noch der Nano? Der hat doch eine USB-Schnittstelle, über die er mittels IDE programmiert wird, oder wie machst Du das? In der IDE, ich habe 1.6.5, dann "Werkzeuge/Serieller Monitor".
Zwischen "Start" und "Stop" vergeht immer etwas Zeit. Bei mir "dreht" also der Motor.
Wenn das bei Dir anders aussieht, wäre eine Fehlersuche notwendig.
auch wenn sich argmue schon mächtig ins Zeug legt, sollte man dir erstmal dein Problem im Code erklären. Sonst nützt das wohl alles nichts. Ich habe dafür 3 Dinge rot markiert.
Das steht alles in der loop. Die loop wird ständig ohne Pause durchlaufen von oben nach unten, springt wieder nach oben und arbeitet wieder alles nach unten ab.
Das bedeutet für deinen Code. Das auch ebenfalls ständig der Feuchtesensor ausgelesen wird und wenn sein Meßwert > 200 ist, dann wird damit auch jedesmal der Motor angesteuert. Klingt logisch, oder?
Und wenn du in der IDE den seriellen Monitor öffnen würdest, dann bekommst Du ohne Pause die Serial.print Ausgaben. Hättest du das mal probiert und nicht nur reingeschrieben, wäre dir das gesagte dabei schon aufgefallen.
Desweiteren fragst Du ständig den Taster ab. Erstmal richtig, auch wenn noch die Entprellung fehlt, wobei die bestimmt vom myStepper verdeckt wird. Und hast du einen Pulldown Widerstand dran oder nicht?
Erst wenn der Tasterpegel High ist, dreht für diesen Moment der Motor anders herum. Ist der Taster nicht mehr gedrückt, was passiert dann? Richtig, dann erfolgt wieder die Abfrage Meßwert > 200, wenn ja, Motor dreht wieder fleißig in die vorherige Richtung.
Programmablauf verstanden? Problem erkannt?
@ agmue: du mußt auch daran denken das der Meßwert zappeln kann. Ich würde nicht mit einem vorherigen Meßwert vergleichen. Ich würde bool Statusvariablen einsetzen.
Doc_Arduino:
@ agmue: du mußt auch daran denken das der Meßwert zappeln kann. Ich würde nicht mit einem vorherigen Meßwert vergleichen. Ich würde bool Statusvariablen einsetzen.
Danke erstmal an agmue und auch an Doc Arduino für die tatkräftige Unterstützung
Wir haben jetzt ca. 1 Woche das Programm, da stellt man sich am Anfang natürlich etwas blöd an. Ok den Monitor haben wir jetzt auch gefunden. Habe jetzt auch den Fehler im Sketch gefunden.
Und wenn ich die Aussage von Doc richtig verstehe geht es nicht wirklich die Abfrage nacheinander zu legen da der Sketch den Taster und den Feuchtigkeit Sensor permanent ausliest. Sobald halt eine neue "Auslösung" erfolgt, dreht der Motor in die entsprechende Richtung.
Korrekt formuliert?
Da wir wie gesagt noch nicht so viel Ahnung haben, kann man dieses umgehen oder nicht?
Danke und wir hoffen das ihr nicht mit uns Verzweifelt.