INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 1 Bewertungen - 2 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Thermometer mit 7 Segment Anzeige
27.05.2016, 21:01 (Dieser Beitrag wurde zuletzt bearbeitet: 27.05.2016 21:01 von Mathias.)
Beitrag #41
RE: Thermometer mit 7 Segment Anzeige
Code:
byte dec_digits[] = {0b10111111,0b00000110,0b11011011,0b01001111,
    0b11100110,0b01101101,0b11111101,0b00000111,0b11111111,0b01101111 };
Der erster Wert 0b10111111, ist schon mal falsch, das vorderste Bit ist das '-'.

Was passiert, bei folgendem Code ?

Code:
void displayNumber(int n) {
    digitalWrite(LATCH, LOW);
    shiftOut(DATA, CLOCK, LSBFIRST, digits[1]);
    shiftOut(DATA, CLOCK, LSBFIRST, digits[2]);
    shiftOut(DATA, CLOCK, LSBFIRST, digits[3]);
    shiftOut(DATA, CLOCK, LSBFIRST, digits[4]);
    digitalWrite(LATCH, HIGH);
}

Kommt bei dir da auch 1234 ?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
29.05.2016, 09:06
Beitrag #42
RE: Thermometer mit 7 Segment Anzeige
Nein, es kommt 4 und dann keine richtigen Zahlen mehr.
Ich habe am ersten Segment, also links den Data Pin vom 595 als Eingang, dann wird es nach rechts weiter gegeben.
Der letzte shiftOut steht dann an erster Stelle, also links.
Wenn ich die Deklaration so schreibe bekomme ich schon mal eine 1 und 2!
0B01100000, // = 1
0B11011011, // = 2

Deine lautet
0B00000110, // = 1
0B01011011, // = 2

gruß....ottii50

Und Allen einen schönen Sonntag Smile
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
29.05.2016, 17:12
Beitrag #43
RE: Thermometer mit 7 Segment Anzeige
Zitat:Wenn ich die Deklaration so schreibe bekomme ich schon mal eine 1 und 2!
0B01100000, // = 1
0B11011011, // = 2

Deine lautet
0B00000110, // = 1
0B01011011, // = 2
Anstelle alles zu ändern, hättest du nur MSBFIRST anstelle LSBFIRST schreiben müssen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
29.05.2016, 17:13
Beitrag #44
RE: Thermometer mit 7 Segment Anzeige
Hab jetzt den Zahlen Code so und sie werden auch angezeigt
Code:
const unsigned char digits[] = {
        0B11111100,  // = 0
        0B01100000,  // = 1
        0B11011010,  // = 2
        0B11110010,  // = 3
        0B01100110,  // = 4
        0B10110110,  // = 5
        0B10111110,  // = 6
        0B11100000,  // = 7
        0B11111110,  // = 8
        0B11110110,  // = 9
        };
Aber irgendwas stimmt noch nicht, die Anzeige ist im ersten, zweiten und dritten Segment. Die ganz rechte also eigentlich die Stelle nach dem Komma bleibt aus.
Geht es in den Minusbereich, wird bei der dritten Stelle das Minus angezeigt. Ab minus 10°C erlischt dann die erste Stelle und in der zweiten wird nur noch der Wert nach dem Komma angezeigt. Dritte Stelle das Minus und vierte ausAngry
Ich komm einfach nicht weiterSad

gruß...ottii50
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
29.05.2016, 17:17
Beitrag #45
RE: Thermometer mit 7 Segment Anzeige
Hast du dies jetzt probiert, was ist die Ausgabe ?
Hast du das obige Post mit dem LSBFIRST und MSBFIRST auch gesehen ?

Code:
void displayNumber(int n) {
    digitalWrite(LATCH, LOW);
    shiftOut(DATA, CLOCK, LSBFIRST, digits[1]);
    shiftOut(DATA, CLOCK, LSBFIRST, digits[2]);
    shiftOut(DATA, CLOCK, LSBFIRST, digits[3]);
    shiftOut(DATA, CLOCK, LSBFIRST, digits[4]);
    digitalWrite(LATCH, HIGH);
}
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
29.05.2016, 17:22
Beitrag #46
RE: Thermometer mit 7 Segment Anzeige
Oha, hab ich übersehen.
Ja hab ich ausprobiert, Anzeige ist, wie ich schon geschrieben habe, von links nach rechts 4,3,2,1!
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
29.05.2016, 17:35 (Dieser Beitrag wurde zuletzt bearbeitet: 29.05.2016 17:37 von Mathias.)
Beitrag #47
RE: Thermometer mit 7 Segment Anzeige
Jetzt probiere folgenden Code nochmals.

Code:
void displayNumber(int n) {
    const unsigned char blank = 0B00000000;
    const unsigned char minus = 0B01000000;
    const unsigned char punkt = 0B10000000;

    int na = abs(n);
    digitalWrite(LATCH, LOW);
    if (n >= 100) {
        if (n < 0) {
            shiftOut(DATA, CLOCK, MSBFIRST, minus);
        } else {
            shiftOut(DATA, CLOCK, MSBFIRST, blank);
        }
        shiftOut(DATA, CLOCK, MSBFIRST, digits[na % 10]);
        shiftOut(DATA, CLOCK, MSBFIRST, digits[na % 100 / 10] | punkt);
        shiftOut(DATA, CLOCK, MSBFIRST, digits[na / 100]);
    } else {
        shiftOut(DATA, CLOCK, MSBFIRST, blank);
        if (n < 0) {
            shiftOut(DATA, CLOCK, MSBFIRST, minus);
        } else {
            shiftOut(DATA, CLOCK, MSBFIRST, blank);
        }
        shiftOut(DATA, CLOCK, MSBFIRST, digits[na % 10]);
        shiftOut(DATA, CLOCK, MSBFIRST, digits[na / 10] | punkt);
    }
    digitalWrite(LATCH, HIGH);
}

Dazu rufst du es verschieden auf.

Code:
displayNumber(123);  // 12.3
displayNumber(-123); // -12.3
displayNumber(12);   // 1.2
displayNumber(-12);  // -1.2
Somit sehe vielleicht eher wo dein Problem liegt,
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
29.05.2016, 17:54
Beitrag #48
RE: Thermometer mit 7 Segment Anzeige
Vielen Dank Mathias, sorry ich bin einfach zu hecktisch und übersehe dadurch viele kleine Details.Angry Ich hab jetzt noch mal alles neu geschrieben und den vorher gehenden Code auf MSBFIRST geändert!
Und nun funktioniert alles....Big Grin
Nochmals vielen, vielen Dank für deine MÜHE!!!

gruß...ottii50
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Hilfe bei der Programmierung Digitaluhr ,mit Anzeige 32x8 Lora 1 315 10.03.2018 11:44
Letzter Beitrag: hotsystems
  NTC für LCD-Anzeige.Weiter bekomme ich nicht hin malsehen 17 1.049 09.03.2018 20:28
Letzter Beitrag: malsehen
  Wieder 7 Segment LED daja64 2 275 21.02.2018 22:41
Letzter Beitrag: daja64
  ILI9341 MEGA2560 keine BMP anzeige tillmg 4 371 08.02.2018 20:18
Letzter Beitrag: georg01
  LED riesen 7 Segment Uhr mit Thermometer wolfi_FL 6 398 05.02.2018 21:11
Letzter Beitrag: Tommy56
  Hilfe!!! bei 7-Segment Anzeige Markus2018 9 760 31.01.2018 21:14
Letzter Beitrag: Tommy56
  Anzeige von Daten FreDicnc 9 1.517 24.06.2017 11:09
Letzter Beitrag: FreDicnc
  DS18B20 Pool-Thermometer mit 7Seg.-Anzeige Evilgnievel 19 1.904 23.06.2017 09:27
Letzter Beitrag: Tommy56
  Zeitabhängige LED Anzeige mit 2x4 Input Abfrage do1xxy 2 755 05.03.2017 19:25
Letzter Beitrag: do1xxy
  TFT Anzeige Tellen 7 1.184 14.02.2017 22:04
Letzter Beitrag: hotsystems

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste