PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Anfängerprobleme



paul-stanley
29.02.2008, 21:40
ich lasse meinen ad wert als balkenanzeige auf dem display anzeigen. geht auch alles schön hoch wenn ich den ad wert erhöhe. allerdings wenn ich den wert verringere werden die farbigen balken nicht durch die schwarzen überschrieben. kann mir nicht erklären warum.
kann mir da jemand bitte weiterhelfen ?

danke im voraus.

gruss martin

If Spannung < 9 Then
Call Lcd_box(62 , 7 , 64 , 25 , Black) ' 9 , 0 V
If Spannung < 9.5 Then
Call Lcd_box(66 , 7 , 68 , 25 , Black) ' 9 , 5 V
If Spannung < 10 Then
Call Lcd_box(70 , 7 , 72 , 25 , Black) '10 , 0 V
If Spannung < 10.5 Then
Call Lcd_box(74 , 7 , 76 , 25 , Black) '10 , 5 V
If Spannung < 11 Then
Call Lcd_box(78 , 7 , 80 , 25 , Black) '11 , 0 V
If Spannung < 11.5 Then
Call Lcd_box(82 , 7 , 84 , 25 , Black) '11 , 5 V
If Spannung < 12 Then
Call Lcd_box(86 , 7 , 88 , 25 , Black) '12 , 0 V
If Spannung < 12.5 Then
Call Lcd_box(90 , 7 , 92 , 25 , Black) '12 , 5 V
If Spannung < 13 Then
Call Lcd_box(94 , 7 , 96 , 25 , Black) '13 , 0 V
If Spannung < 13.5 Then
Call Lcd_box(98 , 7 , 100 , 25 , Black) '13 , 5 V
If Spannung < 14 Then
Call Lcd_box(102 , 7 , 104 , 25 , Black) '14 , 0 V
If Spannung < 14.5 Then
Call Lcd_box(106 , 7 , 108 , 25 , Black) '14 , 5 V
If Spannung < 15 Then
Call Lcd_box(110 , 7 , 112 , 25 , Black) '15 , 0 V
If Spannung < 15.5 Then
Call Lcd_box(114 , 7 , 116 , 25 , Black) '15 , 5 V
If Spannung < 16 Then
Call Lcd_box(118 , 7 , 120 , 25 , Black) '16 , 0 V
If Spannung < 16.5 Then
Call Lcd_box(122 , 7 , 124 , 25 , White) '16 , 5 V


End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If



'Balken Volt

If Spannung >= 9 Then
Call Lcd_box(62 , 7 , 64 , 25 , Dark_red) ' 9 , 0 V
If Spannung >= 9.5 Then
Call Lcd_box(66 , 7 , 68 , 25 , Red) ' 9 , 5 V
If Spannung >= 10 Then
Call Lcd_box(70 , 7 , 72 , 25 , Red) '10 , 0 V
If Spannung >= 10.5 Then
Call Lcd_box(74 , 7 , 76 , 25 , Red) '10 , 5 V
If Spannung >= 11 Then
Call Lcd_box(78 , 7 , 80 , 25 , Yellow) '11 , 0 V
If Spannung >= 11.5 Then
Call Lcd_box(82 , 7 , 84 , 25 , Yellow) '11 , 5 V
If Spannung >= 12 Then
Call Lcd_box(86 , 7 , 88 , 25 , Green) '12 , 0 V
If Spannung >= 12.5 Then
Call Lcd_box(90 , 7 , 92 , 25 , Green) '12 , 5 V
If Spannung >= 13 Then
Call Lcd_box(94 , 7 , 96 , 25 , Green) '13 , 0 V
If Spannung >= 13.5 Then
Call Lcd_box(98 , 7 , 100 , 25 , Green) '13 , 5 V
If Spannung >= 14 Then
Call Lcd_box(102 , 7 , 104 , 25 , Green) '14 , 0 V
If Spannung >= 14.5 Then
Call Lcd_box(106 , 7 , 108 , 25 , Yellow) '14 , 5 V
If Spannung >= 15 Then
Call Lcd_box(110 , 7 , 112 , 25 , Yellow) '15 , 0 V
If Spannung >= 15.5 Then
Call Lcd_box(114 , 7 , 116 , 25 , Red) '15 , 5 V
If Spannung >= 16 Then
Call Lcd_box(118 , 7 , 120 , 25 , Red) '16 , 0 V
If Spannung >= 16.5 Then
Call Lcd_box(122 , 7 , 124 , 25 , Red) '16 , 5 V


End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If

zerush
29.02.2008, 21:49
Bei den schwarzen Balken fragst du zuerst ab, ob Spannung < 9.
Wenn das der Fall ist, ist auch alles andere wahr (Spannung < 10, < 11 ...).
Wenn die Spannung aber > 9 ist, geht er gar nicht erst rein.

Du musst die REihenfolge also genau umkehren und erst die großen Werte abfragen.

P.S.: Mach den Code am besten in [ code ] ... [ /code ] Klammern.

mfg
zerush

paul-stanley
29.02.2008, 22:03
hallo zerush,

vielen dank für deine hilfe. jetzt funktioniert es.
hab aber allerdings noch mehr probleme die für einen erfahrenen programmierer sicher kein problem darstellen wird.
ich habe an meinem controller einen ds1621 angeschlossen und er liefert auch fleissig die werte. im moment bekomme ich den wert nicht in den minusbereich. hab allerdings mal den value wert -190 gemacht und da kommt dann eine ganz hohe zahl auf dem display. wollte eigentlich schauen ob meine formatierung stimmt und auch das vorzeichen angezeigt wird. vielleicht weis du da rat. ausserdem möchte ich den ic2 bus etwas langsamer takten, da ich eine längere leitung benötige und ich angst hab, dass der bus zusammenbricht.

gruss martin

anbei code:
[ code ]

I2cstart
I2cwbyte Device
I2cwbyte &HEE 'Temperaturmessung anstoßen
I2cstop

I2cstart
I2cwbyte Device
I2cwbyte &HAA 'Temperaturmessung Lesekommando
I2cstop

I2cstart
I2cwbyte Deviceread
I2crbyte Lowtemp , Ack 'LSB holen
I2crbyte Hightemp , Nack 'MSB holen

I2cstop

Value = Lowtemp * 10
If Hightemp = 128 Then
Value = Value + 5

End If


Convert_strg = Str(value)
Convert_strg = Format(convert_strg , " 0.0")






Call Lcd_print(convert_strg , 1 , 113 , 2 , 1 , 1 , Yellow , Black)



Waitms 3000 'kurze Pause
Loop
End

[ /code ]

zerush
29.02.2008, 23:03
also es ist so:

Intern werden negative werte so abgespeichert, dass der wertebereich halbiert wird, und das höchste bit dann als vorzeichen benutzt wird.
Wenn man den Wert nun ohne Vorzeichen betrachtet erhält man also einen ziemlich großen Wert!
In C müsstest du der Variable den Typ signed int zuweisen.
In Basic kenne ich mich da leider nicht so aus.

Nochmal zum Code: du musst die Leerzeichen bei [ code ] weglassen, das sieht dann so aus:



Hier steht der Code


EDIT: Zum I2C schau mal hier: https://www.roboternetz.de/wissen/index.php/Bascom_I2C_Master