Go Down

Topic: Zahl mit Punkt versehen .. ??? <gelöst> (Read 465 times) previous topic - next topic

Cetax

May 24, 2013, 11:52 am Last Edit: May 24, 2013, 02:18 pm by Cetax Reason: 1
Hallo allerseits,
irgendwie stehe ich gerade auf dem Schlauch...

Also, ich habe eine Zahl (4635), was den Millivolt des Arduino entspricht,
wie bekomme ich da einen Punkt vor die zweite stelle ? --> 4.635

Ich habe einen Sketch, der mir die Spannung des Arduino ausgibt und
um die Zahl weiter verarbeiten zu können, muss da an zweiter stelle ein Punkt.
Aber ich weiß nicht wie :-( Kann jemand bitte Helfen ?

Dies ist der Sketch :
Code: [Select]
long readVcc() {
 long result;
 // Read 1.1V reference against AVcc
 ADMUX = _BV(REFS0) | _BV(MUX3) | _BV(MUX2) | _BV(MUX1);
 delay(2); // Wait for Vref to settle
 ADCSRA |= _BV(ADSC); // Convert
 while (bit_is_set(ADCSRA,ADSC));
 result = ADCL;
 result |= ADCH<<8;
 result = 1126400L / result; // Back-calculate AVcc in mV
 return result;
}

void setup() {
 Serial.begin(9600);
}

void loop() {
 Serial.println( readVcc(), DEC );
 delay(1000);
}


Das ist das SecretVoltmeter (http://code.google.com/p/tinkerit/wiki/SecretVoltmeter

Vielen Dank.
*greatz*

 CeTax

www dot blinkmann dot de

jurs


Also, ich habe eine Zahl (4635), was den Millivolt des Arduino entspricht,
wie bekomme ich da einen Punkt vor die zweite stelle ? --> 4.635


Du wandelst die Zahl in eine Gleitkommazahl um, indem Du die Integerzahl durch eine Gleitkommazahl dividiert (also in dem Fall 1000.0 statt 1000 als Teiler) und gibst die so erhaltene Gleitkommazahl dann mit drei Nachkommastellen aus:

  Serial.println( 4635/1000.0, 3 );

Cetax

Hallo jurs,
vielen Dank, das wars, jetzt klappt es. DANKE !!

Das hatte ich auch schon --> Serial.println( 4635/1000, 3 );
Aber leider kam da nie das raus, auf die 1000.0 wäre ich nicht gekommen! :smiley-red:

Nochmals Danke !!
*greatz*

 CeTax

www dot blinkmann dot de

jurs


Das hatte ich auch schon --> Serial.println( 4635/1000, 3 );
Aber leider kam da nie das raus, auf die 1000.0 wäre ich nicht gekommen! :smiley-red:


4635/1000 ist rechnen mit ganzen Zahlen. das geht vier ganze male, also Ergebnis 4.

Der Kompiler hat bestimmte Rechenregeln, was beim Rechnen mit Zahlen herauskommt, wenn die Zahlentypen unterschiedlich sind.

Integer geteilt durch Integer = reine Integer-Rechnung, Ergebnis Integer
Integer geteilt durch Float = rechnen mit Gleitkommazahl, Ergebnis Float

Du kannst die Umwandlung in float auch ausdrücklich angeben.
Die Schreibweise:
4635/1000.0
ist daher dasselbe wie
4635/float(1000)

Cetax

Ah.. wieder was gelernt. Danke!
*greatz*

 CeTax

www dot blinkmann dot de

Go Up