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
16.05.2016, 18:20
Beitrag #17
RE: Thermometer mit 7 Segment Anzeige
Wie kommst du bei 22.6 auf 4 Stellen, ich sehe nur 3 ?
Oder meinst du mit dem - die 4. Stelle ?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
16.05.2016, 19:02
Beitrag #18
RE: Thermometer mit 7 Segment Anzeige
ja, dass "-" soll minus sein!
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
16.05.2016, 19:05
Beitrag #19
RE: Thermometer mit 7 Segment Anzeige
Somit kannst meinen Code probieren, das 4. shiftOut ist für das "-" .
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
16.05.2016, 19:20
Beitrag #20
RE: Thermometer mit 7 Segment Anzeige
Ja, ja habs widermal in der Eile falsch gelesen, SORRY!

Soweit so gut, nur die negativen Zahlen werden nicht angezeigt.
Hab ich das was mit dem " abs " falsch gemacht??

gruß ... ottii50

Code:
void displayNumber(int n)
{
byte zahl[4];
zahl[0] = n % 10;
zahl[1] = n % 100 / 10;
zahl[2] = n / 1000;

int abs = n;
if(abs < 0) {
  zahl[3] = 2; // diese beiden Zeilen sollten das
  abs *= -1;  // minus Zeichen ausgeben! ODER?
}

    digitalWrite(LATCH, LOW);
    shiftOut(DATA, CLOCK, LSBFIRST, digits[zahl[0]]);
    shiftOut(DATA, CLOCK, LSBFIRST, digits[zahl[1]]);
    shiftOut(DATA, CLOCK, LSBFIRST, digits[zahl[2]]);
    if (n < 0){
    shiftOut(DATA, CLOCK, LSBFIRST, 0B01000000);
  }
  else {
    shiftOut(DATA, CLOCK, LSBFIRST, 0B00000000);
    }
digitalWrite(LATCH, HIGH);
}
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
16.05.2016, 19:33 (Dieser Beitrag wurde zuletzt bearbeitet: 16.05.2016 19:39 von Mathias.)
Beitrag #21
RE: Thermometer mit 7 Segment Anzeige
So sollte es gehen.
Code:
byte zahl[3];
int na = abs(n);
zahl[0] = na % 10;
zahl[1] = na % 100 / 10;
zahl[2] = na / 1000;

//int abs = n;  // Wird alles nicht gebraucht.
//if(abs < 0) {
//  zahl[3] = 2;
//  abs *= -1;  
//}

zahl[3] wird nicht gebracht,

abs(); ist übrigens eine fertige Funktion, welche dir das Vorzeichen entfernt.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
16.05.2016, 19:48
Beitrag #22
RE: Thermometer mit 7 Segment Anzeige
ok,

zahl[2] = na / 1000; musste ich durch zahl[2] = n % 1000 / 100; ersetzen, sonst war nur eine Null zu sehen.
Aber das mit den negativen Zahlen macht mir Probleme!

[/code]byte zahl[3];
zahl[0] = n % 10;
zahl[1] = n % 100 / 10;
zahl[2] = n % 1000 / 100;

int abs = n;

digitalWrite(LATCH, LOW);
shiftOut(DATA, CLOCK, LSBFIRST, digits[zahl[0]]);
shiftOut(DATA, CLOCK, LSBFIRST, digits[zahl[1]]);
shiftOut(DATA, CLOCK, LSBFIRST, digits[zahl[2]]);
if (n < 0){
shiftOut(DATA, CLOCK, LSBFIRST, 0B00000010);
}
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
16.05.2016, 19:58
Beitrag #23
RE: Thermometer mit 7 Segment Anzeige
Hier der Code mal komplett.

Code:
void displayNumber(int n)
{
  byte zahl[3];
  int na = abs(n);
  zahl[0] = na % 10;
  zahl[1] = na % 100 / 10;
  zahl[2] = na / 100;

  digitalWrite(LATCH, LOW);
  shiftOut(DATA, CLOCK, LSBFIRST, digits[zahl[0]]);
  shiftOut(DATA, CLOCK, LSBFIRST, digits[zahl[1]]);
  shiftOut(DATA, CLOCK, LSBFIRST, digits[zahl[2]]);
  if (n < 0) {
    shiftOut(DATA, CLOCK, LSBFIRST, 0B01000000);
  }  else {
    shiftOut(DATA, CLOCK, LSBFIRST, 0B00000000);
  }
digitalWrite(LATCH, HIGH);
}
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
17.05.2016, 08:18
Beitrag #24
RE: Thermometer mit 7 Segment Anzeige
Vielen, vielen Dank Mathias!!!Smile
Darauf werde ich nie gekommen, Danke.
Bei der zweiten Stelle, habe ich es so gemacht, wenn Null, dann aus.
Jetzt noch eine Frage, könnte man das minus bei Temperaturen kleiner (-10)
um eine Stelle nach rechts verschieben?

gruß...ottii50

Code:
digitalWrite(LATCH, LOW);
  shiftOut(DATA, CLOCK, LSBFIRST, digits[zahl[0]]);
  shiftOut(DATA, CLOCK, LSBFIRST, digits[zahl[1]]);
  if (zahl[2] > 0)
    {
    shiftOut(DATA, CLOCK, LSBFIRST, digits[zahl[2]]);
    }
    else
    {
      shiftOut(DATA, CLOCK, LSBFIRST, digits[96]);
      }
  if (n < 0) {
    shiftOut(DATA, CLOCK, LSBFIRST, 0B00000010);
  }  else {
    shiftOut(DATA, CLOCK, LSBFIRST, 0B00000000);
  }
digitalWrite(LATCH, HIGH);
}
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 560 24.06.2017 11:09
Letzter Beitrag: FreDicnc
  DS18B20 Pool-Thermometer mit 7Seg.-Anzeige Evilgnievel 19 848 23.06.2017 09:27
Letzter Beitrag: Tommy56
  Zeitabhängige LED Anzeige mit 2x4 Input Abfrage do1xxy 2 232 05.03.2017 19:25
Letzter Beitrag: do1xxy
  TFT Anzeige Tellen 7 461 14.02.2017 22:04
Letzter Beitrag: hotsystems
  Anzeige ruhiger halten Franz54 9 727 19.12.2016 01:28
Letzter Beitrag: SkobyMobil
  merkwürdige Anzeige bei lektion 17 lecker16 7 930 20.11.2016 22:40
Letzter Beitrag: Tommy56
Smile Datum Anzeige mit 7 Segmentanzeige ottii50 11 1.186 16.05.2016 19:12
Letzter Beitrag: Mathias
  Leonardo- Anzeige von MIDI-Daten an ws2812b Modinox 7 684 26.01.2016 13:11
Letzter Beitrag: Bitklopfer
  OLED Display anzeige von Logo falsch ! b3ta 0 570 23.01.2016 15:12
Letzter Beitrag: b3ta
  8 LED , 7-Segment-Elemente einzeln ansteuern beim tm1638 und die Buttons arduinofan 0 885 15.01.2016 22:37
Letzter Beitrag: arduinofan

Gehe zu:


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