Enkelt - automatisk plantera vattning (5 / 5 steg)
Steg 5: Koden
Void slingan kontrollerar sonderna varje 60 minuter och om marken är torr börjar den waterOn funktion som sätter pumpen på tills den fuktiga höga nås eller 5 sekunder förflutna.
om fuktig nivå nådde stänger av pumpen och går tillbaka till ogiltiga slingan, om 5: e sekund förflutna och nivån inte nådde sedan stänger av pumpen och blink fel (pumpErr funktion) till fuktig nivå reched (manuell vattning)
Obs: Kommandona seriell kommunikation har lagts till för felsökning skäl och kan släppas.
/*
Enkelt lyder luftfuktigheten genom 2 sonder, en skickar 5V puls genom marken (Digital Pin 8) outher
läser på pulsen från marken (A3), weter marken mer pulsen överförs genom den.
När marken är torr vänder enkelt en 5V pump för att lägga till vatten till växten (genom Digital Pin 9)
*/
int probeVal;
#define wetnessLow 500
#define wetnessHigh 800
#define waterTime 5000
void setup() {
pinMode (13, OUTPUT); / * Ledde Indecator * /
pinMode (9, OUTPUT); / * Pumpen på/av * /
pinMode (8, OUTPUT); / * Probe Transmiter * /
pinMode (A3, indata); / * Sond Reciver * /
Serial.BEGIN (9600);
}
void loop() {
Serial.println ("loop");
digitalWrite 8, hög.
probeVal = analogRead (A3);
digitalWrite (8, låg);
om (probeVal < = wetnessLow) {
waterOn();
}
fördröjning (60000);
}
void waterOn() {
Serial.println ("waterOn");
digitalWrite 13, hög.
digitalWrite (9, hög).
digitalWrite 8, hög.
lång tid = (millis());
lång pumpTime = millis();
/ * Pump på, fyller vattnet tills sonden reciver matcher waternessHigh * /
medan (analogRead (A3) < = wetnessHigh) {
om (millis() == tid + 700) {
digitalWrite (13,! digitalRead (13));
Tid = millis();
}
/ * Om ingen matchning av waternessHigh tills waterTime kör funktionen pumpErr * /
om (millis() > = pumpTime + waterTime) {
Serial.println ("iffff");
pumpErr();
}
}
digitalWrite (13, låg);
digitalWrite (9, låg);
digitalWrite (8, låg);
}
void pumpErr() {
Serial.println ("pump Err");
digitalWrite (9, låg);
medan (analogRead (A3) < = wetnessHigh) {
digitalWrite 13, hög.
fördröjning (200);
digitalWrite (13, låg);
fördröjning (200);
digitalWrite 13, hög.
fördröjning (200);
digitalWrite (13, låg);
fördröjning (1000);
}
}