Temperaturanzeige / 7Segment

StartHardware-Forum Temperaturanzeige / 7Segment

Ansicht von 2 Beiträgen - 1 bis 2 (von insgesamt 2)
  • Autor
    Beiträge
  • #6634
    Timm
    Teilnehmer

    Hallo, Ich bin leider noch ein Anfänger beim Programmieren. Zurzeit versuche ich über eine
    vierstellige 7-Segment anzeige die Temperatur und die Luftfeuchtigkeit im Wechsel anzuzeigen.
    Die Temperatur funktioniert schonmal, leider ist das Display nur am blinken da die Segmente nur der reihe nach
    aufleuchten.

    #include "SevSeg.h" 
    #include <SimpleDHT.h>
    SevSeg sevseg;
    
    int pinDHT11 = A4;
    
    SimpleDHT11 dht11(pinDHT11);
    void setup() 
    {
       Serial.begin(9600);
    
    byte numDigits = 4; 
    byte digitPins[] = {2, 3, 4, 5}; 
    byte segmentPins[] = {6, 7, 8, 9, 10, 11, 12, 13}; 
    sevseg.begin(COMMON_CATHODE, numDigits, digitPins, segmentPins);
    }
    
    void loop() 
    {
    byte temperature;
    
    int err = SimpleDHTErrSuccess;
    if ((err = dht11.read(&temperature, &humidity, NULL)) != SimpleDHTErrSuccess){
      
    sevseg.setNumber(temperature);
    
    Serial.print((int)temperature); Serial.print(" *C, "); 
    Serial.print((int)humidity); Serial.println(" H");
    }
     
    sevseg.refreshDisplay(); 
    }

    Vielleicht könnt ihr mir Helfen,
    Gruß Timm

    • Dieses Thema wurde geändert vor 2 weeks, 4 days von Stefan Hermann.
    #6635
    Stefan Hermann
    Keymaster

    Hm, gute Frage. Ich kann es leider nicht nachbauen, aber das Hin- und Her-Schalten kannst du mit einem Timer machen. So sieht der Code dann aus. Wie gesagt, testen kann ich den leider nicht.

    #include <SevSeg.h>
    #include <SimpleDHT.h>
    SevSeg sevseg;
    
    int pinDHT11 = A4;
    
    SimpleDHT11 dht11(pinDHT11);
    void setup()
    {
      Serial.begin(9600);
    
      byte numDigits = 4;
      byte digitPins[] = {2, 3, 4, 5};
      byte segmentPins[] = {6, 7, 8, 9, 10, 11, 12, 13};
      sevseg.begin(COMMON_CATHODE, numDigits, digitPins, segmentPins);
    }
    
    void loop()
    {
      byte temperature;
    
      int err = SimpleDHTErrSuccess;
      if ((err = dht11.read(&temperature, &humidity, NULL)) != SimpleDHTErrSuccess) {
    
        if (millis()%10000<5000) {
          sevseg.setNumber((int)temperature);
        } else {
          sevseg.setNumber((int)humidity);
        }
    
        Serial.print((int)temperature); Serial.print(" *C, ");
        Serial.print((int)humidity); Serial.println(" H");
      }
    
      sevseg.refreshDisplay();
    }
Ansicht von 2 Beiträgen - 1 bis 2 (von insgesamt 2)
  • Du musst angemeldet sein, um auf dieses Thema antworten zu können.