-         

Ergebnis 1 bis 7 von 7

Thema: Ubat

  1. #1
    Erfahrener Benutzer Begeisterter Techniker Avatar von RobbyMartin
    Registriert seit
    31.12.2009
    Ort
    Leverkusen
    Alter
    24
    Beiträge
    206

    Ubat

    Anzeige

    hallo dieser auschnitt aus dirks code um die ubat zahl auf dem lcd auszugeben

    nun meine frage dort kommt immer ein wert wie z.B. 0823 kann man das nicht so ausgeben 08,23 ?? das wäre viel übersichtlicher da es die akkuspannung ungefähr ausdrückt

    void readUbatSensor(void)
    {
    uint8_t ubatSens[2];
    uint16_t ubat;

    I2CTWI_transmitByte(I2C_RP6_BASE_ADR, 21); // Start with register 21 (UBAT_L)...
    I2CTWI_readBytes(I2C_RP6_BASE_ADR, ubatSens, 2); // and read 2 registers

    ubat = ubatSens[0] + (ubatSens[1]<<8);

    setCursorPosLCD(0, 6);
    writeIntegerLengthLCD(ubat, DEC, 4);


    }

    Lg
    martin

  2. #2
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    13.05.2005
    Alter
    26
    Beiträge
    601
    Hi,

    ich kenn mich nicht mit dem Robby aus, denke aber, dass es sich bei dem
    Wert nicht um die Akkuspannung handelt sondern um den 10bit Wert des
    ADCs. Daher müsstest du den noch umrechnen. (Kann mich natürlich auch
    irren).
    Grüße Furtion

  3. #3
    Erfahrener Benutzer Begeisterter Techniker Avatar von RobbyMartin
    Registriert seit
    31.12.2009
    Ort
    Leverkusen
    Alter
    24
    Beiträge
    206
    das stimmt das es der adc wert ist aber die stimmen fast überein und um das feintuning kümmere ich ich später nur ich will es irgendwie als kommazahl ausgeben

    lg
    martin

  4. #4
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    13.05.2005
    Alter
    26
    Beiträge
    601
    Hi,

    wenn du die funktion hast:
    "writeIntegerLengthLCD(ubat, DEC, 4); "
    da steckt ja schon quasi drinne, dass du ein Int schreibst und keine
    Gleitkommazahle (double o.ä.).
    Daher würd ich schauen ob es iwas mit wirteDoubleLCD() gibt oder du
    wandelst dir den int in einen string um und baust noch ein Punkt
    dazwischen.
    Grüße Furtion

  5. #5
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.791
    Hallo RobbyMartin,

    sieh dir 'mal in der Demo "RP6Control_08_I2CMaster.c" die Funktion "batteryVoltageLow()" an. Da wird gezeigt, wie die Spannung ausgegeben werden kann.

    Gruß Dirk

  6. #6
    Erfahrener Benutzer Begeisterter Techniker Avatar von RobbyMartin
    Registriert seit
    31.12.2009
    Ort
    Leverkusen
    Alter
    24
    Beiträge
    206
    habe das jetzt mit batteryvoltagelow versucht aber ich kann es nich kompelieren es kommt immer eine fehlermeldung

    void readUbatSensor(uint8_t isVoltageLow)
    {
    if(isVoltageLow)
    {
    // Send Battery voltage to UART:
    writeIntegerLengthLCD((((adcBat/102.4f)+0.1f)), DEC, 6);
    showScreenLCD(" . ", "");
    writeIntegerLengthLCD((((adcBat/1.024f)+10)), DEC, 11);

    }

    }


    vielleicht findet ihr ja den fehler oder meinen denkfehler

    lg
    martin

  7. #7
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.791
    Hallo Martin,

    du brauchst die Funktion doch nicht komplett zu übernehmen, sondern nur die Ausgabe auf LCD:

    // Send Battery voltage to LCD:
    writeIntegerLengthLCD((((ubat/102.4f)+0.1f)), DEC, 2);
    writeCharLCD('.');
    writeIntegerLengthLCD((((ubat/1.024f)+10)), DEC, 2);
    writeStringLCD_P("V");

    Gruß Dirk

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •