DHT11-4x7-Displayanzeige mit I2C-Schnittstelle:
In dieser Schaltung wird beim DHT11 die Umgebungstemperatur und die Luftfeuchtigkeit gemessen. Anschliessend werden die Messwerte jeweils abwechselnd für 3 Sekunden auf einem 7-Segmentdisplay mit 4 Digits angezeigt. In unserem Beispiel wird die Anzeige mit der Herstellernummer 3641BS verwendet.
Damit das Programmieren einfacher geht, wurden auch hier wieder Libraries verwendet.
///////////////////////////////////*DEFINITIONEN*///////////////////////////////////
/*4x7 i2c*/
#include "TM1637.h" //TM1637-Bibliothek wird eingebunden
#define CLK 3 //CLK wird am Pin3 angeschlossen
#define DIO 4 //DIO wird am Pin4 angeschlossen
TM1637 tm1637(CLK,DIO); //Das 4-Digit Display wird initialisiert
/*DHT 11*/
#include <DHT.h> //DHT11-Bibliothek wird eingebunden
#define DHTPIN 13 //Der DHT11 wird am Pin13 angeschlossen
#define DHTTYPE DHT11 //Hier wird angegeben, dass der verwendete DHT ein DHT11 ist
DHT dht(DHTPIN, DHTTYPE); //Der DHT wird initialisiert
int hum = 0; //Zu Beginn wird die Variable hum auf 0 gesetzt
int temp = 0; //Zu Beginn wird die Variable temp auf 0 gesetzt
///////////////////////////////////*SETUP*///////////////////////////////////
void setup() {
/*4x7 i2c*/
tm1637.init(); //Startet das 4-Digit Display
tm1637.set(BRIGHT_TYPICAL); //Lichtstärke der Segmente wird eingestellt (BRIGHT_TYPICAL = 2,BRIGHT_DARKEST = 0,BRIGHTEST = 7)
delay(1500); //Pause, damit sich das Programm booten kann
/*DHT11*/
dht.begin(); //Startet den DHT
}
///////////////////////////////////*LOOP*///////////////////////////////////
void loop() {
/*DHT 11*/
hum = dht.readHumidity(); //Hier wird die Luftfeuchtigkeit aus der Datenmatrix in die Variable hum abgespeichert
temp = dht.readTemperature(); //Hier wird die Temperatur aus der Datenmatrix in die Variable temp abgespeichert
/*4x7 i2c*/
int digitoneT = temp / 10; //Division ermöglicht die Speicherung der ersten Ziffer des Werts
int digittwoT = temp % 10; //Modulorechnung ermöglicht die Speicherung der zweiten Ziffer des Werts
int digitoneH = hum / 10; //Division ermöglicht die Speicherung der ersten Ziffer des Werts
int digittwoH = hum % 10; //Modulorechnung ermöglicht die Speicherung der zweiten Ziffer des Werts
tm1637.display(1,digitoneT); //Digit Nr1 zeigt den Hexwert, der als digitoneT gespeicht ist
tm1637.display(2,digittwoT); //Digit Nr2 zeigt den Hexwert, der als digittwoT gespeicht ist
tm1637.display(3,12); //Digit Nr3 zeigt den Hexwert C (soll für Celsius stehen)
delay (3000); //3 Sekunden Pause
tm1637.display(1,16); //Digit Nr1 zeigt keinen Hexwert (16 und 23 sind typische Leerstellen)
tm1637.display(2,digitoneH); //Digit Nr2 zeigt den Hexwert, der als digitoneH gespeicht ist
tm1637.display(3,digittwoH); //Digit Nr3 zeigt den Hexwert, der als digittwoH gespeicht ist
delay(3000); //3 Sekunden Pause
}