-
-
Neuer Benutzer
Öfters hier
Anfängerprobleme
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
-
Erfahrener Benutzer
Roboter-Spezialist
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
-
Neuer Benutzer
Öfters hier
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 ]
-
Erfahrener Benutzer
Roboter-Spezialist
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:
Code:
Hier steht der Code
EDIT: Zum I2C schau mal hier: https://www.roboternetz.de/wissen/in...com_I2C_Master
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen