Stap 9: Schrijf de code voor het groene huis
Dit is de code die ik schreef voor mijn groene huis die vragen om water als de luchtvochtigheid is lager dan 50%
Kopieer de code en deze te formatteren in de Aduino-IDE zo zijn gemakkelijker te lezen (ctrl + T)
#include "DHT.h" / / DHT & AM2302 bibliotheek
#include / / servo bibliotheek
De fVerNum van float versie nummer const = 0,03;
Gegevens pin verbonden met AM2302 #define DHTPIN 2
#define DHTTYPE DHT22 / / DHT 22 (AM2302)
DHT dht (DHTPIN, DHTTYPE); LED pinnen
Servo myservo; servo-object om te bepalen van een servo maken / / maximaal acht servo-objecten kan worden gemaakt
int pos = 0; variabele op te slaan van de servo positie
/ / / / SETUP / / void Setup {/ / Setup seriële monitor Serial.begin(9600);
Servo pin 9 myservo.attach(9);
Wacht 3 seconden delay(3000);
Serial.println (F ("\nAM2302-Sensor")); Serial.Print (F ("versie:")); Serial.println(fVerNum); Serial.println (F ("Arduino - Derek Erb\n")); delay(5000);
DHT.begin(); }
void loop {}
Lezing temperatuur of vochtigheid neemt ongeveer 250 milliseconden! Sensor lezingen kunnen ook worden maximaal 2 seconden 'oude' (het is een zeer langzame sensor) zweven h = dht.readHumidity(); zweven t = dht.readTemperature();
Controleer als opbrengsten geldig zijn, indien zij NaN (geen getal zijn) dan iets mis gegaan! Als (isnan(t) || isnan(h)) {Serial.println (F ("kon aflezen uit DHT"));} else {Serial.print (F ("vochtigheid:")); Serial.Print(h); Serial.Print (F ("% \t")); Serial.Print (F ("temperatuur:")); Serial.Print(t); Serial.println (F("C"));
Als (h < 50) {/ / als de luchtvochtigheid is lager dan 50 de planten moeten waterd voor (pos = 0; pos < 180; pos += 1) / / gaat van 0 graden tot 180 graden {/ / in stappen van 1 graad myservo.write(pos); / / vertellen servo naar positie in de variabele 'pos'}} anders {voor (pos = 180; pos > = 1; pos-= 1) / / gaat van 180 graden tot 0 graden {myservo.write(pos); / / servo naar positie in de variabele 'pos' vertellen / / wacht 15ms voor de servo te bereiken betreffendedepositie}}}
Wacht 3 seconden delay(3000); }