Forum: Mikrocontroller und Digitale Elektronik Temperaturanzeige negative Werte


von Gross M. (grossmeisterb)


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!!

von cazy horse (Gast)


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).

von Gross M. (grossmeisterb)


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?

von André K. (andre-)


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

von André K. (andre-)


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

von Gross M. (grossmeisterb)


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?!?!

von amoc (Gast)


Lesenswert?

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

von Gross M. (grossmeisterb)


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..

von AxelR. (Gast)


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.

von GrossmeisterB (Gast)


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

von André K. (andre-)


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

von AxelR. (Gast)


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.

von GrossmeisterB (Gast)


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... ;-)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.