Go Down

Topic: Problème de calcul (Read 586 times) previous topic - next topic

thibaud

Bonjour,

J'ai branché un potentiometre de 10k sur l'entrée analogique 2 et j'ai un souci avec le code suivant :

Code: [Select]
void loop(){
 int iRead = 0;
 Serial.print("potentiometer getValue ");
 iRead = analogRead(2);
 Serial.print(iRead,DEC);
 Serial.print(" ");
 long inter = iRead * 270;
 long inter2 = 1023 -iRead;
 float inter3 = inter / inter2;
 Serial.print(inter,DEC);
 Serial.print(" ");
 Serial.print(inter2,DEC);
 Serial.print(" ");
 Serial.println(inter3, DEC);
 Serial.println();
 delay(1000);
}


Le problème est que la la variable inter me retourne une valeur négative alors que iRead = 663

Merci d'avance de vos réponses

Comment celà ce fait il? comment 663 * 270 peut donner un négatif?

Oliv4945

Bonjour,
il faut faire un "cast" sur ta valeur avant l'affectation :
Code: [Select]

long inter = (long) iRead * 270;


thibaud

Ok donc pas de conversion implicite durant le calcul d'où le petit souci :)
Merci !

fdufnews

En fait ton écriture demande le produit de 2 entiers et la conversion du résultat en long. Pour que la multiplication se fasse sur des long, il faut qu'un des opérateurs soit lui même un long

Go Up