Hallo,
Ich arbeite an meinem Projekt für die Uni und alles funktioniert einwandfrei... bis es das aus unerfindlichen Gründen nicht mehr tut...
Das hier ist mein Code, den ich mit Hilfe von einigen netten Forummitgliedern optimiert und zum funktionieren gebracht habe.
const byte pumpePin = 4;
void setup()
{
Serial.begin(9600);
pinMode(pumpePin, OUTPUT);
}
void loop()
{
unsigned int feuchte = analogRead(A0);
delay(1000);
Serial.println(feuchte); //Der analoge Pin A0 ist mit dem Feuchtigkeitssensor verbunden und liest die Werte ab
delay(100);
if (analogRead(feuchte) <= 400) // Feuchtigkeitswert unter 500 also Trocken
{
digitalWrite(pumpePin, LOW); // digital PIN 4 ist mit dem Schaltrelais verbunden und soll die Wasserpumpe anschalten
delay(2000);
digitalWrite(pumpePin, HIGH); // Das Schaltrelais soll den Motor ausschalten und solange der Wert über 150 ist soll die Wasserpumpe aus bleiben
}
else //Feuchtigkeitswert über 150 also Nass
{
}
}
Kurz gefasst soll der Code dafür sorgen, dass eine Wasserpumpe angeht sobald der Feuchtigkeitswert des Messgeräts UNTER 400 fällt.
Nun eigentlich funktioniert das, denn wenn ich das Messgerät trockne, also einen Feuchtigkeitswert von 0 habe, geht die Pumpe wie gewollt an und wenn ich das Messgerät in ein Glas Wasser halte stoppt die Pumpe so wie es soll.
Nun wenn ich das Messgerät aber in einen Topf mit Erde stecke und die Feuchtigkeitswerte 600-700 angeben geht die Pumpe einfach mal An, mal Aus und manchmal läuft sie minutenlang.
Währenddessen zeigt der serielle Monitor jedoch an, dass die Werte nie
unter 400 fallen.
Warum geschieht das ich kann mir das rein logisch nicht erklären, ich dachte vielleicht fällt das Messgerät für ein paar Millisekunden unter den Wert und sorgt damit dafür, dass die Pumpe angeht aber dagegen spricht, dass die Pumpe halt manchmal minutenlang läuft obwohl die Werte alle konstant weit über 400 sind...