Das Open-Control-Projekt - Die Alternative zur C-Control-I


Das Forum zur C-Control-1
Welche C-Control-Varianten existieren?
Übersicht - Suchen - Neueste 50 Beiträge - Neuer Beitrag - Login - Registrieren
INFO - FAQ - CC2-Forum - CCPro-Forum 

 Re: Minustemperaturen auf Display ausgeben Kategorie: Programmierung Basic (von Heino - 11.02.2004 21:28)
 Als Antwort auf Minustemperaturen auf Display ausgeben von Rene - 11.02.2004 20:27
> > Hallo
> > Ich habe ein kleines Problem mit der Darstellungen von Aussentemperaturen im Minusbereich. Ich benutze folgendes Programm zur Anzeige auf dem Display:
> >  Â    lcd_param = NULL + Temp2_LCD / 1000 : gosub LCD_WRITECHAR
> >  Â    lcd_param = NULL + (Temp2_LCD mod 1000) / 100 : gosub LCD_WRITECHAR
> >  Â    lcd_param = PUNKT : gosub LCD_WRITECHAR
> >  Â    lcd_param = NULL + (Temp2_LCD mod 100) / 10: gosub LCD_WRITECHAR
> >  Â    lcd_param = GRAD : gosub LCD_WRITECHAR
> >  Â    lcd_param = C_ : gosub LCD_WRITECHAR
> > mit einer Temperaturtabelle in der Art:
> > -250
> > -170
> > -90
> > -10
> > 70
> > 150
> > 230
> > 310
> > Bis 150 herunter (1,5 °C) zeigt es richtig an. 70 (0,7°C) und die Minusgrade zeigt es aber nicht mehr an. Wie könnte man sowas lösen?
> >
> > MfG
> > Hardy
>
>
> Nachfolgend Beispiel Unterprogramm #WRITEVALUE aus der Sammlung von Conrad   mit dem deine Probleme gelöst sein müßten
>
> define LEERZ &H20
> define MINUS &H2D
>
> #WRITEVALUE
>
>   output = abs(value)
>
>   ' negatives Vorzeichen oder Leerzeichen
>   if value < 0 then lcd_param = MINUS else lcd_param = LEERZ
>   gosub LCD_WRITECHAR
>
>   ' Zehntausender-Dezimalstelle oder Leerzeichen (Ausblenden fuehrender Nullen)
>   if abs(value) >= 10000 then lcd_param = NULL + output/10000 else lcd_param = LEERZ
>   gosub LCD_WRITECHAR
>   output = output mod 10000
>
>   ' Tausender-Dezimalstelle oder Leerzeichen
>   if abs(value) >= 1000 then lcd_param = NULL + output/1000 else lcd_param = LEERZ
>   gosub LCD_WRITECHAR
>   output = output mod 1000
>
>   ' Hunderter-Dezimalstelle oder Leerzeichen
>   if abs(value) >= 100 then lcd_param = NULL + output/100 else lcd_param = LEERZ
>   gosub LCD_WRITECHAR
>   output = output mod 100
>
>   ' Zehner-Dezimalstelle oder Leerzeichen
>   if abs(value) >= 10 then lcd_param = NULL + output/10 else lcd_param = LEERZ
>   gosub LCD_WRITECHAR
>
>   ' einer Dezimalstelle oder Leerzeichen
>   lcd_param = NULL + output mod 10
>   gosub LCD_WRITECHAR
> return
>
> MfG
> Rene
>

Hallo zusammen !

Glaubt es mir bitte - in der mir ausgelieferten Software zum Board fehlte auch das abs( ) vor der Funktion "value" ! Daran habe ich lange herumgerödelt , denn in die Richtigkeit der mitgelieferten Programme hat man als Laie ja erst einmal Vertrauen . Aber es hat dann auch den Unsinn bei negativen Zahlen gegeben . Mit der Einführung von " abs(value) " gemäss der vorigen Antwort war das Problem dann aber behoben .
Grüsse an die CC-ler...................Heino

 Antwort schreiben

Bisherige Antworten: