Stap 7: Het samenstellen van de Code
De volgende stap is het wijzigen van die twee stukken code en plaats vervolgens een lus in het dat het Relais wordt ingeschakeld wanneer bodemvocht op een bepaald punt valt. Wanneer dat is alles gezegd en gedaan, kijkt het als dit:
Dit eerste deel onze variabelen ingesteld en initialiseert het LCD-scherm
int bodem = 0;
int Relay = 7;
int relay_level = 60;
#include
LiquidCrystal lcd (12, 11, 5, 4, 3, 2);
de setup-routine wordt uitgevoerd zodra wanneer u drukt op reset:
VOID Setup {}
Initialiseer seriële communicatie met 9600 bits per seconde:
Serial.begin(9600); de LCD's aantal kolommen en rijen instellen:
}
de routine van de lus wordt uitgevoerd over en weer forever:
void loop {}
Lees de input op analoge pin 0:
int sensorValue = analogRead(A0);
sensorValue = beperken (sensorValue, 485, 1023);
de waarde die u wilt afdrukken: Serial.println(sensorValue);
Initialiseer de digitale pin als uitgang.
pinMode (Relais, uitvoer);
de waarde toewijzen aan een percentage
bodem = kaart (sensorValue, 485, 1023, 100, 0);
print uit de bodem water percentage die u berekend op het LCD-scherm:
Serial.Print(Soil);
Serial.println("%");
Stel de cursor op de kolom 0, lijn 1
(Opmerking: lijn 1 is de tweede rij, aangezien tellen met 0 begint):
LCD.begin (16, 2);
Een bericht op het LCD-scherm afdrukt.
LCD.Clear();
LCD.Print ("bodem verzadiging:");
lcd.setCursor (0, 1);
het aantal seconden sinds reset afdrukken
LCD.Print(Soil);
LCD.Print ("%");
vertraging in tussen leest voor stabiliteit
delay(1000);
Deze next-lus draait op het Relais want één minuut als het vocht onder het niveau dat we willen (in dit geval 60%), als het vocht is boven dat niveau, het houdt het testen. Als de hoeveelheid vocht onder dat niveau is blijkt de estafette (en vervolgens het water valve voor zo lang als u wenst (in dit geval 60000 milliseconden (1 minuut) zijn ingesteld). Het wacht nog een minuut voordat de grond opnieuw te testen om te zien of het NAT genoeg is.
Als (bodem < relay_level) {}
digitalWrite (Relais, hoge);
de estafette inschakelen (HIGH is het spanningsniveau)
delay(60000);
een ogenblikje wachten
digitalWrite (Relais, laag);
de LED uitschakelen door de spanning laag
delay(60000);
een ogenblikje wachten
}
}