Bauvorschlag 3:
In dieser Schaltung wird beim DHT11 die Umgebungstemperatur und die Luftfeuchtigkeit gemessen. Sobald der Taster gedrückt wird, werden die Messwerte jeweils abwechselnd drei Mal 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.
Der Programmcode kann nach Belieben verändert werden. Lass dich inspirieren!
///////////////////////////////////*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 /*TASTER-DEFINITIONEN*/ #define TASTER A1 //Der Begriff TASTER hat den Wert A1 ///////////////////////////////////*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 /*TASTER*/ pinMode(TASTER, INPUT_PULLUP); //Definiert den Pin A1 als Input, wo Daten gelesen werden } ///////////////////////////////////*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 /*Taster*/ AnzeigeDerMesswerte(); //Startet eine Funktion, in der die Anzeige der Messwerte ausgeführt wird } ///////////////////////////////////*WEITERE FUNKTIONEN*/////////////////////////////////// void AnzeigeDerMesswerte(){ /*In dieser Funktion wird geprüft, ob der Taster gedrückt wurde. Ist das der Fall, wird eine for-Schlafe 3x durchlaufen. In dieser wird 3sec lang die Temperatur und 3sec lang die Luftfeuchtigkeit angezeigt.*/ if (digitalRead(TASTER) == LOW){ for (int i = 0; i < 3; i++){ 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 } } /*Nach dem Anzeigen der Messwerte werden alle Digits auf leer gestellt.*/ tm1637.display(0,16); //Digit Nr0 zeigt keinen Hexwert (16 und 23 sind typische Leerstellen) tm1637.display(1,16); //Digit Nr1 zeigt keinen Hexwert (16 und 23 sind typische Leerstellen) tm1637.display(2,16); //Digit Nr2 zeigt keinen Hexwert (16 und 23 sind typische Leerstellen) tm1637.display(3,16); //Digit Nr3 zeigt keinen Hexwert (16 und 23 sind typische Leerstellen) }