boucle if bloqué à la première condition

Bonjour.

J’ai commencé à jouer avec mon arduino en faisant les montages et programmes de base.
J’aissaie de mixer 3 programmes en un.
Celui du buzzer, du RSF05 et des leds.
Le but et que le buzzer émette un son plus ou moins aiguë en fonction de la distance mesurée par le capteur RSF05.
Et j’ai voulu ajouter 6 leds qui doivent s’allumer individuellement en fonction de la distance aussi.
Le problème c’est que quelque soit la distance j’entends bien mon buzzer changer de fréquence et l’interface qui affiche de différentes distance mais seulement la led 1 reste allumée.
je ne comprend pas pourquoi…

Et il possible de faire du pas à pas?

const unsigned int TRIG_PIN=9;
const unsigned int ECHO_PIN=8;
const unsigned int BAUD_RATE=9600;
int led1 = 2;
int led2 = 3;
int led3 = 4;
int led4 = 5;
int led5 = 6;
int led6 = 7;

void setup() {
pinMode(TRIG_PIN, OUTPUT);
pinMode(ECHO_PIN, INPUT);
Serial.begin(BAUD_RATE);
pinMode(led1,OUTPUT); // Défini la variable en tant que sortie (OUTPUT)
pinMode(led2,OUTPUT); // Défini la variable en tant que sortie (OUTPUT)
pinMode(led3,OUTPUT); // Défini la variable en tant que sortie (OUTPUT)
pinMode(led4,OUTPUT); // Défini la variable en tant que sortie (OUTPUT)
pinMode(led5,OUTPUT); // Défini la variable en tant que sortie (OUTPUT)
pinMode(led6,OUTPUT); // Défini la variable en tant que sortie (OUTPUT)
}

void loop() {
digitalWrite(TRIG_PIN, LOW);
delayMicroseconds(2);
digitalWrite(TRIG_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_PIN, LOW);

const unsigned long duration= pulseIn(ECHO_PIN, HIGH);
int distance= duration/29/2;
if(duration==0){
Serial.println(“Warning: no pulse from sensor”);
}
else{
Serial.print(“distance to nearest object:”);
Serial.println(distance);
Serial.println(“cm”);}

int frequence= 300*distance;
int buzzer = 11;

tone(buzzer,frequence,500);
delay(50);

if (distance = 3){
digitalWrite(led1, HIGH);
digitalWrite(led2, LOW);
digitalWrite(led3, LOW);
digitalWrite(led4, LOW);
digitalWrite(led5, LOW);
digitalWrite(led6, LOW);
Serial.println(“led2”);}

else if (distance = 4){
digitalWrite(led1, LOW);
digitalWrite(led2, HIGH);
digitalWrite(led3, LOW);
digitalWrite(led4, LOW);
digitalWrite(led5, LOW);
digitalWrite(led6, LOW);
Serial.println(“led2”);}

else if (distance = 5){
digitalWrite(led1, LOW);
digitalWrite(led2, LOW);
digitalWrite(led3, HIGH);
digitalWrite(led4, LOW);
digitalWrite(led5, LOW);
digitalWrite(led6, LOW);
Serial.println(“led3”);}

else if (distance = 6){
digitalWrite(led1, LOW);
digitalWrite(led2, LOW);
digitalWrite(led3, LOW);
digitalWrite(led4, HIGH);
digitalWrite(led5, LOW);
digitalWrite(led6, LOW);
Serial.println(“led4”);}

else if (distance = 7){
digitalWrite(led1, LOW);
digitalWrite(led2, LOW);
digitalWrite(led3, LOW);
digitalWrite(led4, LOW);
digitalWrite(led5, HIGH);
digitalWrite(led6, LOW);
Serial.println(“led5”);}

else if (distance = 7){
digitalWrite(led1, LOW);
digitalWrite(led2, LOW);
digitalWrite(led3, LOW);
digitalWrite(led4, LOW);
digitalWrite(led5, LOW);
digitalWrite(led6, HIGH);
Serial.println(“led5”);}

}

const unsigned long duration= pulseIn(ECHO_PIN, HIGH);

Une constante ?

Cordialement, bidouilleelec

Dans tes if il faut mettre ' == ' au lieu de ' = ' . Comme pour ton test à zéro.

Merci !

En effet j'ai complétement zapé le détail du ==.