// Voeg de bibliotheekcodes toe:
#include <LiquidCrystal.h>
#include <DHT.h>
#define DHT_PIN 10 // De pin waarop de DHT-sensor is aangesloten
#define DHT_TYPE DHT22 // Het type DHT-sensor dat je gebruikt
#define LED_AAN 6 // LED voor arduino aan
#define LED_ERROR 7 // LED voor error
// Temperatuur en luchtvochtigheid instellingen
const int temphoog = 24; // maximale graden celcius
const int templaag = 19; // minimale graden celcius
const int vochthoog = 90; // maximale percentage luchtvochtigheid
const int vochtlaag = 70; // minimale percentage luchtvochtigheid
// Speciale tekens
byte PijlHoog[8] = {0b00100,0b01110,0b11111,0b00100,0b00100,0b00100,0b00100,0b00100};
byte PijlLaag[8] = {0b00100,0b00100,0b00100,0b00100,0b00100,0b11111,0b01110,0b00100};
byte GradenIcoon[8] = {0b01110,0b01010,0b01110,0b00000,0b00000,0b00000,0b00000,0b00000};
// Initialiseren van de bibliotheek door de benodigde LCD-interfacepin te associëren
// met het Arduino-pinnummer waarop deze is aangesloten
const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
DHT dht(DHT_PIN, DHT_TYPE);
void setup() {
// LED's en serial console configureren
Serial.begin(9600);
pinMode(LED_AAN, OUTPUT);
pinMode(LED_ERROR, OUTPUT);
// Instellen van het aantal kolommen en rijen van de LCD:
lcd.begin(16, 2);
dht.begin();
// Opstart scherm laten zien
lcd.setCursor(0, 0);
lcd.print("....Opstarten...");
lcd.setCursor(0, 1);
lcd.print(".....Arduino....");
lcd.createChar(0, PijlHoog); // Pijl omhoog karakter maken (index 0)
lcd.createChar(1, PijlLaag); // Pijl omlaag karakter maken (index 1)
lcd.createChar(2, GradenIcoon); // Pijl omlaag karakter maken (index 1)
}
void loop() {
delay(2000); // Wacht 2 seconden tussen metingen
lcd.clear();
float temperatuur = dht.readTemperature();
float luchtvochtigheid = dht.readHumidity();
// check of er geen storing zit bij de DHT-sensor
if (isnan(temperatuur) || isnan(luchtvochtigheid)) {
// Rood LED aan doen, groen uit
digitalWrite(LED_AAN, LOW);
digitalWrite(LED_ERROR, HIGH);
lcd.setCursor(0, 0);
lcd.print("DHT-sensor:");
lcd.setCursor(0, 1);
lcd.print("Fout bij lezen");
//Serial.println("Fout bij het lezen van de DHT-sensor.");
delay(500);
} else {
// Groen LED aan doen, rood uit
digitalWrite(LED_AAN, HIGH);
digitalWrite(LED_ERROR, LOW);
// Schrijf de temperatuur en luchtvochtigheid op de LCD scherm
lcd.setCursor(0, 0);
lcd.print("Temp: ");
lcd.print(temperatuur);
lcd.print(" ");
lcd.write(byte(2));
lcd.print("C");
lcd.setCursor(0, 1);
lcd.print("Vocht: ");
lcd.print(luchtvochtigheid);
lcd.print(" %");
// Controleer de temperatuur en stuur de LCD aan met juiste icoon
if (temperatuur > temphoog) {
lcd.setCursor(15, 0);
lcd.write(byte(0));
} else if (temperatuur >= templaag && temperatuur <= temphoog) {
lcd.setCursor(15, 0);
lcd.write("-");
} else {
lcd.setCursor(15, 0);
lcd.write(byte(1));
}
// Controleer de luchtvochtigheid en stuur de LCD aan met juiste icoon
if (luchtvochtigheid > vochthoog) {
lcd.setCursor(15, 1);
lcd.write(byte(0));
} else if (luchtvochtigheid >= vochtlaag && luchtvochtigheid <= vochthoog) {
lcd.setCursor(15, 1);
lcd.write("-");
} else {
lcd.setCursor(15, 1);
lcd.write(byte(1));
}
}
}