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

Gehe zu:


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