-
-
Erfahrener Benutzer
Begeisterter Techniker
Ubat
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
-
Erfahrener Benutzer
Roboter Experte
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).
-
Erfahrener Benutzer
Begeisterter Techniker
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
-
Erfahrener Benutzer
Roboter Experte
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.
-
Erfahrener Benutzer
Robotik Einstein
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
-
Erfahrener Benutzer
Begeisterter Techniker
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
-
Erfahrener Benutzer
Robotik Einstein
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
-
Foren-Regeln
Lesezeichen