Pages: [1]   Go Down
Author Topic: Zahl mit Punkt versehen .. ??? <gelöst>  (Read 451 times)
0 Members and 1 Guest are viewing this topic.
Germany
Offline Offline
Sr. Member
****
Karma: 1
Posts: 309
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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:
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.
« Last Edit: May 24, 2013, 07:18:43 am by Cetax » Logged

*greatz*

 CeTax

www dot blinkmann dot de


Germany S-H
Offline Offline
Faraday Member
**
Karma: 174
Posts: 3275
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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 );
Logged

Germany
Offline Offline
Sr. Member
****
Karma: 1
Posts: 309
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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 !!
Logged

*greatz*

 CeTax

www dot blinkmann dot de


Germany S-H
Offline Offline
Faraday Member
**
Karma: 174
Posts: 3275
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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)
Logged

Germany
Offline Offline
Sr. Member
****
Karma: 1
Posts: 309
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Ah.. wieder was gelernt. Danke!
Logged

*greatz*

 CeTax

www dot blinkmann dot de


Pages: [1]   Go Up
Jump to: