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
  Anzeige von Daten FreDicnc 9 247 24.06.2017 11:09
Letzter Beitrag: FreDicnc
  DS18B20 Pool-Thermometer mit 7Seg.-Anzeige Evilgnievel 19 363 23.06.2017 09:27
Letzter Beitrag: Tommy56
  Zeitabhängige LED Anzeige mit 2x4 Input Abfrage do1xxy 2 164 05.03.2017 19:25
Letzter Beitrag: do1xxy
  TFT Anzeige Tellen 7 392 14.02.2017 22:04
Letzter Beitrag: hotsystems
  Anzeige ruhiger halten Franz54 9 627 19.12.2016 01:28
Letzter Beitrag: SkobyMobil
  merkwürdige Anzeige bei lektion 17 lecker16 7 702 20.11.2016 22:40
Letzter Beitrag: Tommy56
Smile Datum Anzeige mit 7 Segmentanzeige ottii50 11 1.129 16.05.2016 19:12
Letzter Beitrag: Mathias
  Leonardo- Anzeige von MIDI-Daten an ws2812b Modinox 7 644 26.01.2016 13:11
Letzter Beitrag: Bitklopfer
  OLED Display anzeige von Logo falsch ! b3ta 0 513 23.01.2016 15:12
Letzter Beitrag: b3ta
  8 LED , 7-Segment-Elemente einzeln ansteuern beim tm1638 und die Buttons arduinofan 0 789 15.01.2016 22:37
Letzter Beitrag: arduinofan

Gehe zu:


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