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
  merkwürdige Anzeige bei lektion 17 lecker16 7 166 20.11.2016 22:40
Letzter Beitrag: Tommy56
Smile Datum Anzeige mit 7 Segmentanzeige ottii50 11 903 16.05.2016 19:12
Letzter Beitrag: Mathias
  Leonardo- Anzeige von MIDI-Daten an ws2812b Modinox 7 483 26.01.2016 13:11
Letzter Beitrag: Bitklopfer
  OLED Display anzeige von Logo falsch ! b3ta 0 339 23.01.2016 15:12
Letzter Beitrag: b3ta
  8 LED , 7-Segment-Elemente einzeln ansteuern beim tm1638 und die Buttons arduinofan 0 503 15.01.2016 22:37
Letzter Beitrag: arduinofan
  8x7 Segment LED Anzeige / Sketch verändern w1ck3d 3 657 23.11.2015 17:56
Letzter Beitrag: hotsystems
  7-Segment Multiplex, überblendet Mathias 4 719 18.11.2015 17:22
Letzter Beitrag: Mathias
  Drehzahl Anzeige Analog (neuling) Kuxii 9 1.113 30.10.2015 12:01
Letzter Beitrag: hotsystems
  Sieben Segment LED Anzeige Tellen 10 1.824 18.06.2015 21:21
Letzter Beitrag: Tellen
  fehler in anzeige von float avoid 11 1.912 12.04.2015 16:32
Letzter Beitrag: HaWe

Gehe zu:


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