Message d'erreur sur IF

Portrait de francky

Bonjour,

Je m'amuse a faire une jauge avec 5 LEDS et un Potentiomètre. Quand je tourne le potentiomètre, je veux que les leds s'allume ou s'eteigne suivant la valeur du potentiomètre.

Voila le code

long PortLed1 = 6;
long PortLed2 = 5;
long PortLed3 = 4;
long PortLed4 = 3;
long PortLed5 = 2;
long Potentiometre = A0;
long ValeurPoten;

void setup() {
  // put your setup code here, to run once:
  pinMode(PortLed1,OUTPUT); //led verte 1
  pinMode(PortLed2,OUTPUT); //led verte 2
  pinMode(PortLed3,OUTPUT); //led verte 3
  pinMode(PortLed4,OUTPUT); //led verte 4
  pinMode(PortLed5,OUTPUT); //led rouge
  Serial.begin(9600);
}

void loop() {
  //Valeur du potentiometre
  ValeurPoten = analogRead(Potentiometre);
  delay(1);
  Serial.println(ValeurPoten);
  if (ValeurPoten > 1023*0.80) {
    //Entre 100 et 80
    digitalWrite(PortLed1,HIGH);
    digitalWrite(PortLed2,HIGH);
    digitalWrite(PortLed3,HIGH);
    digitalWrite(PortLed4,HIGH);
    digitalWrite(PortLed5,HIGH);
  }else if (ValeurPoten <= 1023*0.80 && ValeurPoten > 1023*0.60 ) {
    //Entre 80 et 60
    digitalWrite(PortLed1,LOW);
    digitalWrite(PortLed2,HIGH);
    digitalWrite(PortLed3,HIGH);
    digitalWrite(PortLed4,HIGH);
    digitalWrite(PortLed5,HIGH);
   }else if (ValeurPoten <= 1023*0.60 && ValeurPoten > 1023*0.40){
    // entre 60 et 40
    digitalWrite(PortLed1,LOW);
    digitalWrite(PortLed2,LOW);
    digitalWrite(PortLed3,HIGH);
    digitalWrite(PortLed4,HIGH);
    digitalWrite(PortLed5,HIGH);
   }
}

Quand je compile j'ai le message d'erreur suivant

Arduino : 1.6.8 (Windows XP), Carte : "Arduino/Genuino Uno"

collect2.exe: error: ld returned 5 exit status

exit status 1
Error compiling for board Arduino/Genuino Uno.

Ce rapport pourrait être plus détaillé avec
l'option "Afficher les résultats détaillés de la compilation"
activée dans Fichier -> Préférences.

Je ne comprend pas l'erreur.

Le message se fait sur la compilation du code. Cela ne vient pas de la carte.

Merci d'avance pour votre aide.

Francky

Portrait de fram

Bonsoir Francky et bienvenue sur le forum.

Première "mauvaise nouvelle", je n'ai aucun problème à la compilation de ton code avec l'IDE 1.6.7 sous Lubuntu...
Bon, je n'ai comme solution que te proposer quelques légères modifications:

int PortLed1 = 6;
int PortLed2 = 5;
int PortLed3 = 4;
int PortLed4 = 3;
int PortLed5 = 2;
int Potentiometre = A0;
int ValeurPoten;

void setup() {
  // put your setup code here, to run once:
  pinMode(PortLed1,OUTPUT); //led verte 1
  pinMode(PortLed2,OUTPUT); //led verte 2
  pinMode(PortLed3,OUTPUT); //led verte 3
  pinMode(PortLed4,OUTPUT); //led verte 4
  pinMode(PortLed5,OUTPUT); //led rouge
  Serial.begin(9600);
}

void loop() {
  //Valeur du potentiometre
  ValeurPoten = analogRead(Potentiometre);
  delay(1);
  Serial.println(ValeurPoten);
  if (ValeurPoten > (1023*0.80)) {
    //Entre 100 et 80
    digitalWrite(PortLed1,HIGH);
    digitalWrite(PortLed2,HIGH);
    digitalWrite(PortLed3,HIGH);
    digitalWrite(PortLed4,HIGH);
    digitalWrite(PortLed5,HIGH);
  }else if (ValeurPoten <= (1023*0.80) && ValeurPoten > (1023*0.60)) {
    //Entre 80 et 60
    digitalWrite(PortLed1,LOW);
    digitalWrite(PortLed2,HIGH);
    digitalWrite(PortLed3,HIGH);
    digitalWrite(PortLed4,HIGH);
    digitalWrite(PortLed5,HIGH);
   }else if (ValeurPoten <= (1023*0.60) && ValeurPoten > (1023*0.40)){
    // entre 60 et 40
    digitalWrite(PortLed1,LOW);
    digitalWrite(PortLed2,LOW);
    digitalWrite(PortLed3,HIGH);
    digitalWrite(PortLed4,HIGH);
    digitalWrite(PortLed5,HIGH);
   }
}

Dans le détail:
 - j'ai remplacé tes déclarations long en int, les entiers étant nettement inférieurs à 32 767, tu gagnera en espace mémoire (ouais, bon, d'accords, 1% tout de même !),
- j'ai parenthésé tes tests pour lever toute ambiguité sur la comparaison de ValeurPotent (entier) avec un calcul incluant un décimal (0.40, 0.60...).

Dit moi que ça marche ;-P

Fram

Portrait de francky

Bonjour,

J'ai fais les petites modifs et j'ai toujours le même soucis. Apparamment ça vient de windows et peut être des logiciels malveillants. C'est un PC que j'ai récupéré et qui a encore un XP, sans antivirus.

Je vais en profiter pour faire le grand pas vers le coté obscur Linuxien et installer sur un autre PC UBUNTU.

- UBUNTU 15.10 :téléchargé et installé.

-Arduino : on va voir ce soir.

Fram, as tu des conseils pour ce changement ??

Merci

Francky

Portrait de Alex

Salut,

Je confirme aucun problème à la compilation du code.

Windows 7  et Arduino 1.6.7.

Portrait de francky

Bonjour,

Je l'ai compilé sur un autre PC et tout ce passe bien. C'est bien le Pc qui merde.

Merci de votre expertise.

Francky