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
14.05.2016, 23:03
Beitrag #9
RE: Thermometer mit 7 Segment Anzeige
Was passiert, wen du displayNumber (1234); aufrufst ?

Jetzt habe ich noch was gesehen, bei shiftOut muss auf das richtige Element von Digits zugegriffen werden. Das habe ich vorhin übersehen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
15.05.2016, 09:15
Beitrag #10
RE: Thermometer mit 7 Segment Anzeige
Danke, war mein Fehler mit den digits!
So bekomme ich erstmal die ganzen Zahlen vor dem Komma angezeigt.
Nach dem Komma bleibt alles auf Null!
Wo ist hier der Fehler?
Code:
void displayNumber(int n)
{
byte zahl[4];
zahl[0] = n % 10;
zahl[1] = n % 100 / 10;
zahl[2] = n % 1000 / 100;
zahl[3] = n / 1000;

    digitalWrite(LATCH, LOW);
    shiftOut(DATA, CLOCK, LSBFIRST, digits[zahl[2]]);
    shiftOut(DATA, CLOCK, LSBFIRST, digits[zahl[3]]);
    shiftOut(DATA, CLOCK, LSBFIRST, digits[zahl[0]]);
    shiftOut(DATA, CLOCK, LSBFIRST, digits[zahl[1]]);
    digitalWrite(LATCH, HIGH);
}

void loop(void) {
float temperature = getTemp();
Serial.println(temperature);
displayNumber(temperature);
delay(5000);

}

Wenn ich displayNumber(1234); eingebe, bekomme ich 3412 angezeigt.
Also alle Segmente funktionieren.

gruß ottii50
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
15.05.2016, 11:56
Beitrag #11
RE: Thermometer mit 7 Segment Anzeige
Jetzt hast du es schon fast geschaft.


Jetzt noch das round mit den *100 und die Reihenfolge der shiftOut anpassen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
15.05.2016, 12:50
Beitrag #12
RE: Thermometer mit 7 Segment Anzeige
Sorry, hatte ich vergessen!!! " displayNumber(temperature*100);"
Super vielen Dank!
Zahlen im negativen Bereich wird es wohl nicht anzeigen, oder?

gruß...ottii50
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
15.05.2016, 16:45
Beitrag #13
RE: Thermometer mit 7 Segment Anzeige
Zitat:Zahlen im negativen Bereich wird es wohl nicht anzeigen, oder?
Ist im Prinzip schon möglich.

Ein if-Anweisung, ob die Zahle < 0 ist, wen ja ein auf dem vordersten Segment ein '-' ausgeben und anschliessen die Zahl mit abs() positiv machen.

Aber du wird ein Segment für das '-' opfern müssen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
15.05.2016, 19:06
Beitrag #14
RE: Thermometer mit 7 Segment Anzeige
Oh, vielen Dank!

Ja, ich wollte auch nur eine Stelle nach dem Komma haben.
Hab jetzt " int n = round(temperature*10);" auf 10 gesetz, nun habe ich die eine Stelle nach dem Komma.
Aber das mit dem minus bekomme ich einfach nicht hin.
Die letzte Stelle vor dem Komma und die Stelle nach dem Komma werden richtig angezeigt.
Die erste Stelle zeigt Null und die zweite eine gespiegelte 9.
Ich wollte eigentlich, dass die ersten beiden Stellen bei Null ausgehen, aber irgendwo ist der Wurm drinAngry

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

int abs = n;
if(abs < 0) {
  zahl[3] = 2; // diese beiden Zeilen sollten das
  abs *= -1;  // minus Zeichen ausgeben! ODER hab ich was falsch gelesen?
}
if(abs >= 10)  {
  zahl[2] = digits[(abs %1000) / 100 ];
  }else{
    zahl[2] = zahl[3];

    }
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
16.05.2016, 16:50 (Dieser Beitrag wurde zuletzt bearbeitet: 16.05.2016 16:57 von Mathias.)
Beitrag #15
RE: Thermometer mit 7 Segment Anzeige
Ich hoffe, das es so geht, habe den Text blind eingegeben.
Code:
    zahl[0] = n % 10;
    zahl[1] = n % 100 / 10;
    zahl[2] = n  / 100;

  digitalWrite(LATCH, LOW);
  shiftOut(DATA, CLOCK, LSBFIRST, digits[zahl[0]]);
  shiftOut(DATA, CLOCK, LSBFIRST, digits[zahl[1]] | 0B10000000); // Dezimalpunkt
  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, 17:36
Beitrag #16
RE: Thermometer mit 7 Segment Anzeige
Danke!
Aber ich brauch doch die vier Stellen. z.B. bei -22,6 °C.
Oder denke ich jetzt etwas falsch?
Das mit den Nullen abschalten habe ich schon hinbekommen, aber das mit dem minus klappt einfach nicht!!

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
  Hilfe bei der Programmierung Digitaluhr ,mit Anzeige 32x8 Lora 1 320 10.03.2018 11:44
Letzter Beitrag: hotsystems
  NTC für LCD-Anzeige.Weiter bekomme ich nicht hin malsehen 17 1.069 09.03.2018 20:28
Letzter Beitrag: malsehen
  Wieder 7 Segment LED daja64 2 280 21.02.2018 22:41
Letzter Beitrag: daja64
  ILI9341 MEGA2560 keine BMP anzeige tillmg 4 386 08.02.2018 20:18
Letzter Beitrag: georg01
  LED riesen 7 Segment Uhr mit Thermometer wolfi_FL 6 403 05.02.2018 21:11
Letzter Beitrag: Tommy56
  Hilfe!!! bei 7-Segment Anzeige Markus2018 9 768 31.01.2018 21:14
Letzter Beitrag: Tommy56
  Anzeige von Daten FreDicnc 9 1.530 24.06.2017 11:09
Letzter Beitrag: FreDicnc
  DS18B20 Pool-Thermometer mit 7Seg.-Anzeige Evilgnievel 19 1.915 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.188 14.02.2017 22:04
Letzter Beitrag: hotsystems

Gehe zu:


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