www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Temperaturanzeige negative Werte


Autor: Gross Meisterb (grossmeisterb)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Habe nur mal eine "kurze" Frage, möchte Temperaturen von -50°C bis
+50°C messen, die "äußere" Schaltung ist soweit fertig, ob gut oder
nicht weiß ich nicht, Auflösung soll/wird 0.5°C sein, jetzt meine
Frage:
Wenn ich negative Werte mit einem "-" anzeigen will, mache ich das
dann am besten mit einer if-Abfrage? Also wenn der Wert kleiner ist als
der für 0°C, dann Ausgabe "-" + Wert dahinter, ansonsten mit "+"
oder halt ganz ohne? Oder gibt's da noch andere Möglichkeiten?
Verwende einen mega8 mit Bascom als Programmiersoftware

Danke für jede Hilfe!!

Autor: cazy horse (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
die Frage ist, womit du anzeigen willst. Es gibt Funktionen, die das auf
Standard-Geräten (RS232 oder LCD) selbstätig machen (in C
printf/sprintf), in Basic wirds was ähnliches geben.
Auf nem Siebensegmentdisplay musst du das selbst machen, das nimmt dir
der Compiler nicht ab (weiss ja auch wie angeschlossen und wie
angesteuert).

Autor: Gross Meisterb (grossmeisterb)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich will es auf einem Display ausgeben, also einem LCD...ich denke aber
mit der if-Abfrage ist es doch am einfachsten, oder nicht?

Autor: André K. (andre-)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Warum sollte das am einfachsten sein?

LCD str(zahl)

Nach deiner Loesung:

if zahl < 0 then
lcd "-"
zahl = zahl * -1
end if

lcd zahl

Ich kann daran nix einfaches finden.


MfG

Autor: André K. (andre-)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
if zahl < 0 then
lcd "-"
zahl = zahl * -1
end if

lcd str(zahl)

So isses natuerlich richtig. Str() wandelt das Vorzeichen mit um.

MfG

Autor: Gross Meisterb (grossmeisterb)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was wäre denn dann einfach für dich? Und dein Beispiel verstehe ich auch
nicht ganz...
Ich würde es so machen:

If Zahl < 0 Then
Lcd "-" ; zahl
Else
Lcd zahl
End if


Also wenn der Wert "kleiner Null" ist, dann das "-" davor,
ansonsten halt nicht...

Was wäre denn noch einfacher?!?!

Autor: amoc (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hängt davon ab, in welcher Form deine Zahl jetzt überhaupt vorliegt !?

Autor: Gross Meisterb (grossmeisterb)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, als Wert vom ADC, also grob geschätzt irgendwo zwischen ca. 600 und
800...und bei 700 wäre es dann +/- 0°C...also kleiner 700 => "-"
davor, größer 700 => nix davor..

Autor: AxelR. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Guten Morgen,
wie man nun auf das Ergebnis kommt, hängt ja von den mathematischen
Fähigkeiten (heisst wohl jetzt "Skills") des jeweiligen ab. Darum
musst Du dich also selber kümmern - bin ich zu blöd für. Aber wenn Du
den Rückgabewert der Funktion als Integer deklarierst, formatiert der
LCD-Befehl die Zahl automatisch mit Vorzeichen. Ist zumindest bei
"meinem" FastAVR so. Bascom sollte sich da ähnlich verhalten, wage
gesprochen.

Viele Grüße, schönen Tag

AxelR.

Autor: GrossmeisterB (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mmmmh...mit deklarieren etc., das ist mir alles zu kompliziert... ;-)
Ich mache es mit der if-Abfrage und gut ist...bevor ich mir da jetzt
einen zurechthampel und so...hehe

Autor: André K. (andre-)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du ziehst einfach den Offset (bei 0°C anliegend) vom ADC-Wert ab.
Dadurch wird der sich ergebende Integer automatisch positiv oder
negativ und kann mit str() verarbeitet werden.

MfG

Autor: AxelR. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hää?

Dim messegebnis as Integer

wassn daran schwer?

dann misst Du isoliert in Eiswasser und merkst Dir den ADC-Wert.
Dann haust Du das Teil isoliert in kochendes Wasser und merkst Dir den
ADC Wert (schreibst ihn Dir auf).
So hast Du schonmal die Endpunkte.
Das kannst Du nun mit dem gemessenen ADC Wert ins Verhältnis setzen und
die untere Grenz abziehen(oder so?). Eigentlich, so wie andre sagte. Den
Messwert für 0Grad vom ADC-Wert abziehen. die Variable, wo Du
hineinspeicherst muss aber als Integer deklariert werden siehe oben.
DIM MESSERGEBNIS AS INTEGER

Kann ich nicht besser erklären, sorry

(da such ich schon wieder bei mir...)

AxelR.

Autor: GrossmeisterB (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mmmmh...das klingt auf jeden Fall plausibel...ich denke so bekommt man
auch die genauesten Werte hin, richtig?

Ich denke dann werde ich mein Programm mal dementsprechend ändern, mal
sehen ob ich das hinbekomme... ;-)

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.