Problèmes projet personnel

Bonjours,

voila alors depuis quelques jours j’essaye de réalisé un bout de programme nécessitant deux potar

l’idée est:

si le potar2 = potar1 alors LED1 et LED2 éteinte
si potar2 < potar1 alors LED1 allumé et LED2 éteinte
si potar2 > potar1 alors LED1 éteinte et LED2 allumé

mais voila j’ai écrit un programme mais quand une condition est vrai elle reste toujours vrais même si la conditions change
si quelqu’un peut m’aider merci , le programme si join:

const int potar0 = A0;
const int potar1 = A1;
const int transistor13 = 13;
const int transistor12 = 12;

void setup() {
pinMode(transistor13, OUTPUT);
pinMode(transistor12, OUTPUT);
Serial.begin(9600);
}

void loop() {
int valeurpotar0 = analogRead(potar0);
int valeurpotar1 = analogRead(potar1);

do{
digitalWrite(transistor13, HIGH);
digitalWrite(transistor12, LOW);
}while (valeurpotar0 > valeurpotar1);

do{
digitalWrite(transistor13, LOW);
digitalWrite(transistor12, HIGH);
}while (valeurpotar0 < valeurpotar1);

if (valeurpotar0 = valeurpotar1) {
digitalWrite(transistor13, LOW);
digitalWrite(transistor12, LOW);
}

}

Bonjour,

Pourquoi des DO :astonished: une simple cascade de if suffit !

des if ne fonctionne pas , donc j'ai essayer des DO

Il y a une erreur aussi au dernier if : il faut écrire if (valeurpotar0 == valeurpotar1) {

B@tto:
Il y a une erreur aussi au dernier if : il faut écrire if (valeurpotar0 == valeurpotar1) {

bien vu !

Sinon pourquoi des if ne fonctionneraient pas :astonished:

#define pinPotar1 A0
#define pinPotar2 A1
#define pinTransistor1 13
#define pinTransistor2 12

int valeurPotar1 = 0;
int valeurPotar2 = 0;

void setup() {
	pinMode(pinTransistor1, OUTPUT);
	pinMode(pinTransistor2, OUTPUT);
} 

void loop() {
	valeurPotar1 = analogRead(pinPotar1);
	valeurPotar2 = analogRead(pinPotar2);

	if((valeurPotar1 >= (valeurPotar2 - margeAnalog)) && (valeurPotar1 <= (valeurPotar2 + margeAnalog))){
	digitalWrite(pinTransistor2, LOW);
	digitalWrite(pinTransistor1, LOW);
	}

	if(valeurPotar1 < (valeurPotar2 - margeAnalog)){
	digitalWrite(pinTransistor2, LOW);
	digitalWrite(pinTransistor1, HIGH);
	}

	if(valeurPotar1 > (valeurPotar2 + margeAnalog)){
	digitalWrite(pinTransistor2, HIGH);
	digitalWrite(pinTransistor1, LOW);
	}
}

Il faut aussi penser à la précision du can :wink: je suis certain que potar1 == potar2 est quasi impossible, il faudrait prévoir une marge à ±n valeur.
Edit: J’ai ajouté une marge de ±20 dans le code ci dessus.