Pages: [1]   Go Down
Author Topic: Problème de calcul  (Read 543 times)
0 Members and 1 Guest are viewing this topic.
0
Offline Offline
Newbie
*
Karma: 0
Posts: 2
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonjour,

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

Code:
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?
Logged

0
Offline Offline
Full Member
***
Karma: 0
Posts: 145
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonjour,
il faut faire un "cast" sur ta valeur avant l'affectation :
Code:
long inter = (long) iRead * 270;
Logged

0
Offline Offline
Newbie
*
Karma: 0
Posts: 2
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

France
Online Online
Faraday Member
**
Karma: 39
Posts: 3562
There is an Arduino for that
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

Pages: [1]   Go Up
Jump to: