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
  Hilfe bei der Programmierung Digitaluhr ,mit Anzeige 32x8 Lora 1 319 10.03.2018 11:44
Letzter Beitrag: hotsystems
  NTC für LCD-Anzeige.Weiter bekomme ich nicht hin malsehen 17 1.060 09.03.2018 20:28
Letzter Beitrag: malsehen
  Wieder 7 Segment LED daja64 2 279 21.02.2018 22:41
Letzter Beitrag: daja64
  ILI9341 MEGA2560 keine BMP anzeige tillmg 4 377 08.02.2018 20:18
Letzter Beitrag: georg01
  LED riesen 7 Segment Uhr mit Thermometer wolfi_FL 6 400 05.02.2018 21:11
Letzter Beitrag: Tommy56
  Hilfe!!! bei 7-Segment Anzeige Markus2018 9 764 31.01.2018 21:14
Letzter Beitrag: Tommy56
  Anzeige von Daten FreDicnc 9 1.525 24.06.2017 11:09
Letzter Beitrag: FreDicnc
  DS18B20 Pool-Thermometer mit 7Seg.-Anzeige Evilgnievel 19 1.907 23.06.2017 09:27
Letzter Beitrag: Tommy56
  Zeitabhängige LED Anzeige mit 2x4 Input Abfrage do1xxy 2 759 05.03.2017 19:25
Letzter Beitrag: do1xxy
  TFT Anzeige Tellen 7 1.187 14.02.2017 22:04
Letzter Beitrag: hotsystems

Gehe zu:


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