PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Spannung in Volt ausgeben



Stephan90
08.08.2013, 18:11
Hallo,
ich habe ein Programm geschrieben mit dem ich die Akkuspannung auslesen kann und diese in Volt darstellen kann.
Das Programm funktioniert soweit jedoch habe ich das Problem das keine Nachkomma stellen ausgegen werden (derzeit laut RobotLoader 7,95 V und 7 werden mir im Terminal angezeigt). Was muss geändert werden? Ziel soll es sein das ganze am ende über das LCD Display des M32 Moduls auszugeben.
Hier erstmal den code:



#include "RP6RobotBaseLib.h"

int main(void)
{
initRobotBase();
setLEDs(0b111111);

startStopwatch1();

uint16_t ubat = readADC(ADC_BAT);
uint16_t spannung = (ubat *= 9.765625);
uint16_t spannung2 = (spannung /= 1000);

while(true)
{
if(getStopwatch1() > 300)
{
writeString_P("\nAkkuspannung: ");
writeInteger(spannung2, DEC);
setStopwatch1(0);
}
task_ADC();
}
return 0;
}


9.765625(mV) diesen wert habe ich von RN wissen Batteriespannungs-Sensor dann durch 1000 teilen um auf Volt zu kommen da es Milivolt sind.
Danke im vorraus

redround
08.08.2013, 19:08
ich kenn zwar die RP6RobotBaseLib nicht, aber writeInteger() läßt vermuten, dass sie den übergebenen Parameter als Interger und damit ohne Nachkommastellen überträgt. Guck mal in die Header-Datei RP6RobotBaseLib.h ob es da auch eine writeFloat() oder sowas gibt.

shedepe
08.08.2013, 20:51
Außerdem kann deine Variable 2 als Integer auch keine Nachkommastellen aufnehmen.
Nur mal kurz zur Wiederholung:
signed Integer: Vorzeichenbehaftete Ganzzahl
unsinged Integer: Vorzeichenlose Ganzzahl
float: Floating Point Number- Fließ Komma Zahl

Dirk
08.08.2013, 21:43
Hi Stephan90,

wie die anderen schon gesagt haben, kann man das mit float Variablen machen.
Eine andere Möglichkeit mit Integer Variablen zeigt die Funktion printUBat() in der RP6Base_SELFTEST.c Demo.

Stephan90
09.08.2013, 17:32
So habe es jetzt nochmal versucht mit float funktioniert es nicht, da kommt eine Fehlermeldung bei make all. Ich habe mir jetzt den Selbsttest angeguckt und davon die printUBat funktion verwendet damit funktioniert es. Danke