In Vorbereitung eines größeren Projekts – die Spannung steigt – hab ich mit verschiedenen Grundlagen-Themen beschäftigt und hier ist das Ergebnis:
Mit einem Arduino Mega 2560, einem 16×2 LCD-Display mit I2C-Ansteuerung, sowie mit einem DHT11-Sensor für Luftfeuchte und Temperatur habe ich eine minimalistische Anzeige realisiert.
Das Foto zeigt alle Komponenten:
- Arduino Mega 2560 mit Stromversorgung (und Programmierung) via USB
- 16×2 LCD-Display mit I2C-Ansteuerung basierend auf LCM1602
- DHT11-Sensor für Luftfeuchte und Temparatur mit 10kΩ-Wiederstand zu beschalten
So sieht die Beschaltung aus:
- Der DHT11-Sensor wird zwischen Pin 1(links) und Pin 2 mit einem 10kΩ-Widerstand überbrückt.
- Pin 1 wird dann auf 5V am Arduino geschaltet.
- Pin 2 geht auf A2 am Arduino (oder einen anderen Pin, dazu muss das Programm angepasst werden.
- Pin 3 bleibt frei
- Pin 4 geht auf GND
Das Display wird beim Arduino Mega 2560 jeweils mit den analogen Pins beschaltet. Bei anderen Arduino-Modellen muss hier ggfls. eine andere Beschaltung gewählt werden.
- 5V auf 5V (bzw. VCC genannt am Display)
- GND auf GND
- SCL and SCL (Clock)
- SDA an SDA (Signal)
Jetzt fehlt noch der Code für den Arduino:
#include <Wire.h> #include <LiquidCrystal_I2C.h> // Library fuer LCD #include <DHT.h> // Library für DHT11 #define DHTPIN A2 // DHT11 an PIN 2 #define DHTTYPE DHT11 // Sensortyp DHT dht(DHTPIN, DHTTYPE); //Der Sensor wird ab jetzt mit „dth“ angesprochen LiquidCrystal_I2C lcd(0x27, 16, 2); // I2C Addresse 0x27, 16x2 void setup() { lcd.init(); // LCD initialisieren lcd.backlight(); //Hintergrundbeleuchtung einschalten lcd.setCursor(0, 0); // Cursor oben links lcd.println("Temp 7C Luftf % "); // Überschrift setzen mit codiertem Grad-Zeichen lcd.setCursor(0, 1); // Cursor in zweite Zeile lcd.print("Init Sensor"); // Warten anzeigen Serial.begin(9600); // Serielle Verbindung initiieren dht.begin(); // Sensor starten delay(2000); //Zwei Sekunden warten bis der Sensor bereit ist } void loop() { lcd.setCursor(0, 0); // Cursor oben links lcd.println("Temp 7C Luftf % "); // Überschrift setzen mit codiertem Grad-Zeichen lcd.setCursor(0, 1); // Cursor in zweite Zeile delay(1000); // Eine Sekunde warten bis zur nächsten Messung float Luftfeuchtigkeit = dht.readHumidity(); //die Luftfeuchtigkeit auslesen und speichern float Temperatur = dht.readTemperature(); //die Temperatur auslesen und speichern lcd.print(" "+ String(Temperatur) + " " + String(Luftfeuchtigkeit) +" "); // Ausgabe }
Zur richtigen Funktion müssen die entsprechenden Libraries passend zu den Hardware-Komponenten hochgeladen werden.