DHT11-4x7-Displayanzeige:
Um ein Display mit vier 7-Segment Anzeigen anzusteuern, braucht man viele Kabel, wenn dies nicht über eine I2C-Schnittstelle erledigt wird. Das hier verwendete Display hat die Herstellernummer 5461AS und besitzt eine gemeinsame Kathode. Über die Verbindungskabel werden die Segmente der Reihe nach angesteuert und zeigen in den ersten beiden Digits die Luftfeuchtigkeit und in den letzten beiden Digits die Umgebungstemperatur, welche vom DHT11 stammen, an.
Da jede 7-Segment Anzeige einzeln der Reihe nach angesteuert wird, kann es gegebenenfalls zu leichtem Flackern auf der Anzeige kommen.
///////////////////////////////////*DEFINITIONEN*/////////////////////////////////// /*DHT 11*/ #include <DHT.h> //DHT11-Bibliothek wird eingebunden #define DHTPIN A0 //Der DHT11 wird am Pin A0 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 /*4x7*/ #include "SevSeg.h" //SevenSegment-Bibliothek wird eingebunden SevSeg sevseg; //Das Siebensegment Objekt wird initialisiert ///////////////////////////////////*SETUP*/////////////////////////////////// void setup() { /*4x7*/ byte numDigits = 4; //Hier wird die Anzahl der Ziffern angegeben byte digitPins[] = {2, 3, 4, 5}; //Die Pins am Artduino werden zu den Ziffern definiert byte segmentPins[] = {6, 7, 8, 9, 10, 11, 12, 13}; //Die Pins am Arduino werden zu den Segmenten definiert sevseg.begin(COMMON_CATHODE, numDigits, digitPins, segmentPins); //In diesem Abschnitt kann man nun entweder testen welche Art von Display man besitzt oder wenn man es schon weiss, angeben ob es sich um ein COMMON_CATHODE oder COMMON_ANODE Display handelt. Das Display funktioniert nur wenn die richtige Art eingetragen ist. Ansonsten werden alle Segmente gleichzeitig leuchten sevseg.setBrightness(90); //Dieser Teil passt die Helligkeit der Segmente an. Möglich ist 0-100, wobei 100 das Hellste ist. /*DHT 11*/ 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*/ Anzeige7seg(); //Startet eine Funktion, in der die Luftfeuchtigkeit und die Temperatur auf 4 Digits angezeigt werden //Anzeige7segAlternativ(); //Stertet eine alternative Funktion, in der die Luftfeuchtigkeit und die Temperatur auf 4 Digits angezeigt werden und Flimmern verhindern könnte. } ///////////////////////////////////*WEITERE FUNKTIONEN*/////////////////////////////////// /*4x7*/ void Anzeige7seg(){ sevseg.setNumber(hum * 100 + temp, 2); //Hier wird die anzuzeigende Zahl eingetregen Die 2 ersten Digits zeigen die Luftfeuchtigkeit, dann kommt ein Komma und mit den beiden letzten Digits wird die Temperatur angezeigt. sevseg.refreshDisplay(); //Die Zahl auf dem Display wird erneut angezeigt } /*void Anzeige7segAlternativ(){ sevseg.setNumber(hum * 100 + temp, 2); for (int i = 0; i < 300; i++){ sevseg.refreshDisplay(); //Die Zahl auf dem Display wird erneut angezeigt delay(10); //Pause von 0.01 Sekunden } }*/