- LiFePO4 Speicher Test         
Ergebnis 1 bis 4 von 4

Thema: Anfängerprobleme

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    29.02.2008
    Beiträge
    18

    Anfängerprobleme

    Anzeige

    Praxistest und DIY Projekte
    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

  2. #2
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    15.11.2004
    Ort
    Aachen
    Alter
    39
    Beiträge
    246
    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

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    29.02.2008
    Beiträge
    18
    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 ]

  4. #4
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    15.11.2004
    Ort
    Aachen
    Alter
    39
    Beiträge
    246
    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
  •  

Solar Speicher und Akkus Tests