Bonsoir pathy2023
On va procéder par étapes, tout d'abord, il te faut changer la pin 1 qui est utilisée par la communication série comme indiqué ici.
Ensuite, dans chaque test if(led==n){
mettre led = 0;
sinon une fois une LED sélectionnée, à chaque tour de loop()
on trouvera la condition comme vraie.
La lecture du port de communication se fait par;
if (Serial.available()){
String mensaj=Serial.readStringUntil('\n');
Info sur readStringUntil et trim()
Il faut que le moniteur aie
comme terminaison.
Il y a une nouvelle variable:
long delaisMinute = 500; // 60000
qui permet d'accélérer les essais, quitte à remettre 60000 pour retrouver des minutes.
Voici le programme corrigé:
String mensaj;
String data;
int led;
long mins;
//long delai1=0;
//long delai2=0;
//long delai3=0;
//long delai4=0;
//long delai5=0;
//long delai6=0;
//long delai7=0;
//long delai8=0;
//long delai9=0;
long delaisMinute = 500; // 60000 // Delais pour une minute, a diminuer pour accélérer l'attente pour le développement
void setup() {
Serial.begin(9600);
pinMode(1,OUTPUT);
pinMode(2,OUTPUT);
pinMode(3,OUTPUT);
pinMode(4,OUTPUT);
pinMode(5,OUTPUT);
pinMode(6,OUTPUT);
pinMode(7,OUTPUT);
pinMode(8,OUTPUT);
}
void loop() {
if (Serial.available()){
String mensaj=Serial.readStringUntil('\n');
mensaj.trim(); // Pour nettoyer mensaj
data=mensaj;
led=data.substring(0,1).toInt();
mins=data.substring(1,3).toInt();
}
if (led != 0)
{
Serial.println(led);
}
if(led==1){
//delai1+=mins*delaisMinute;
digitalWrite(1,HIGH);
delay(mins*delaisMinute);
digitalWrite(1,LOW);
led = 0;
}
if(led==2){
//delai2+=mins*delaisMinute;
digitalWrite(2,HIGH);
delay(mins*delaisMinute);
digitalWrite(2,LOW);
led = 0;
}
if(led==3){
//delai3+=mins*delaisMinute;
digitalWrite(3,HIGH);
delay(mins*delaisMinute);
digitalWrite(3,LOW);
led = 0;
}
if(led==4){
//delai4+=mins*delaisMinute;
digitalWrite(4,HIGH);
delay(mins*delaisMinute);
digitalWrite(4,LOW);
delay(mins*delaisMinute);
led = 0;
}
if(led==5){
//delai5+=mins*delaisMinute;
digitalWrite(5,HIGH);
delay(mins*delaisMinute);
digitalWrite(5,LOW);
led = 0;
}
if(led==6){
//delai6+=mins*delaisMinute;
digitalWrite(6,HIGH);
delay(mins*delaisMinute);
digitalWrite(6,LOW);
led = 0;
}
if(led==7){
//delai7+=mins*delaisMinute;
digitalWrite(7,HIGH);
delay(mins*delaisMinute);
digitalWrite(7,LOW);
led = 0;
}
if(led==8){
//delai8+=mins*delaisMinute;
digitalWrite(8,HIGH);
delay(mins*delaisMinute);
digitalWrite(8,LOW);
led = 0;
}
}
Prochaines étapes, mettre les pin des diodes en tableau et créer une fonction unique pour allumer n'importe quelle LED.
A+
Cordialement
jpbbricole