Arduino Weerstation (6 / 6 steg)
Steg 6: Lägga till LCD
Benodigdheden:
-LCD scherm 16 x 2
-soldeerbout
-stift
-10 k potmeter
Sluit de lcd aan zoals op de foto är aangegeven.
LÅT OP! ZORG DAT DE LCD GOED ÄR GESOLDEERD!!!
De koden: LiquidCrystal lcd(12,11,7,6,5,4); zijn de datapins i volgorde van länkar naar rechts. Zorg dat d'Eze ook goed ingesteld zijn.
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;
LCD #include LiquidCrystal lcd(12,11,7,6,5,4);
DHT dht (DHTPIN, DHTTYPE); void setup() {/ / lägga installationen koden här, om du vill köra en gång: dht.begin (); //start dht bibliotek pinMode (ledPin, produktionen); //setup ledpin utgång lcd.begin (16,2); //setup LCD-skärm 16 x 2 format lcd.setCursor(0,1); lcd.print("Welkom...");}
void loop() {/ / sätta din huvudsakliga kod här, för att köra flera gånger: Serial.begin(9600); Rain(); Delay(3000); Light(); Delay(3000); Temp(); Delay(3000); }
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: sträng status = ""; Switch (range) {fall 0: / / Sensor blir våt status = "Översvämning"; Serial.println("Flood"); bryta; fall 1: / / Sensor får våt Serial.println ("regn varning"); status = "Regn varning"; bryta; fall 2: / / Sensor torr - att hålla käften detta ta bort "Serial.println ("inte regnar")," nedan. Serial.println ("inte regnar"); status = "Inte regnar"; bryta; } lcd.clear(); lcd.setCursor(0,0); LCD.Print(status); }
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 ("Temp:"); Serial.Print(t); Serial.println ("* C");
skriva ut till LCD lcd.clear(); lcd.setCursor(0,0); LCD.Print ("luftfuktighet:"); lcd.setCursor(10,0); LCD.Print(h); lcd.setCursor(0,1); LCD.Print ("Temp:"); lcd.setCursor(6,1); LCD.Print(t); }
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);} //print till LCD lcd.clear(); lcd.setCursor(0,0); LCD.Print ("ljus:"); lcd.setCursor(8,0); LCD.Print(lightSensivity); }