Arduino Weerstation (4 / 6 steg)
Steg 4: Satt allt ihop
Kod:
Regn
CONST int sensorMin = 0; sensor minsta const int sensorMax = 1024; sensor maximal
Temp #include "DHT.h" #define DHTPIN 2 / / vad digital pin vi är ansluten till #define DHTTYPE DHT11 / / DHT 11
Ljus int ledPin = 13. int lightPin = 1; int lightSensivity = 0; int lightBarier = 600;
DHT dht (DHTPIN, DHTTYPE); void setup() {/ / lägga installationen koden här, om du vill köra en gång: dht.begin(), pinMode (ledPin, produktionen);}
void loop() {/ / sätta din huvudsakliga kod här, för att köra flera gånger: Serial.begin(9600); Rain(); Delay(1000); Light(); Delay(2000); Temp(); Delay(1000); }
void Rain() {/ / Läs sensorn på analoga A0: int sensorReading = analogRead(A0); / / karta sensor spänna (fyra alternativ): / / ex: "long int karta (lång int, lång int, lång int, lång int, lång heltal)" int utbud = karta (sensorReading, sensorMin, sensorMax, 0, 3); / / range värde: switch (range) {fall 0: / / Sensor få våta Serial.println("Flood"), paus, fall 1: / / Sensor blir våt Serial.println ("regn varning"), paus, fall 2 : / / Sensor torr - att hålla käften detta ta bort "Serial.println ("inte regnar")," nedan. Serial.println ("inte regnar"); bryta; } }
void Temp() {
Läst temperatur eller fuktighet tar cirka 250 millisekunder! Sensormätningar kan också vara upp till 2 sekunder "gamla" (det är en mycket långsam sensor) flyta h = dht.readHumidity(); Läs temperatur som Celsius (standard) flyta t = dht.readTemperature(); Läs temperatur som Fahrenheit (isFahrenheit = true) flyta f = dht.readTemperature(true);
Kontrollera om någon läser misslyckades och avsluta tidigt (för att försöka igen). om (isnan(h) || isnan(t) || isnan(f)) {Serial.println ("kunde inte läsa från DHT sensorn!"); return;}
Beräkna Värmeindex i Fahrenheit (standard) flyta hif = dht.computeHeatIndex (f, h); Beräkna Värmeindex i Celsius (isFahreheit = false) flyta hic = dht.computeHeatIndex (t, h, false);
Serial.Print ("luftfuktighet:"); Serial.Print(h); Serial.Print ("% \t"); Serial.Print ("temperatur:"); Serial.Print(t); Serial.Print ("* C"); Serial.Print(f); Serial.Print ("* F\t"); Serial.Print ("Värmeindex:"); Serial.Print(HIC); Serial.Print ("* C"); Serial.Print(HIF); Serial.println ("* F"); }
void Light() {/ / sätta din huvudsakliga kod här, för att köra flera gånger: lightSensivity = analogRead(lightPin); Serial.println(lightSensivity); IF(lightSensivity < lightBarier) {digitalWrite (ledPin, hög);} annat {digitalWrite (ledPin, låg);}}