Désolé pour les informations manquantes, mon projet ce porte sur un allumage d'escaliers successive ( il ya pas mal d'exemple sur YouTube) et je voudrai le faire en commandant ces lumières (une vingtaine sa peut etre des spots ou ruban led en (12V) ) avec 2 boutton poussoir situer en bas et en haut des escaliers , pour allumer et éteindre en meme temps , et 2 detecteur de passage pour que si on passe sur l'un des deux détecteur (du haut ou du bas)sa s'allume , et après un passage devant le deuxième détecteur sa s'éteint (avec une priorité pour le bouton poussoir qui allume et éteint ) .
j'ai utiliser un atmega328p qui est limité en nombre de sortie , pour régler le problème des nombres de sortie manquantes jai pensé a utiliser un demux mais ils n'est pas adapté a mon cas d'escalier lumineux et a mon programme, si il ya une autres alternative a me conseiller je suis preneur, mon second problème c'est que j'aimerais faire un système pour la configuration du nombre de marche ( par exemple je pourrais brancher 1,2 ,3 ...15 etc lumières avec ce circuit sans qu'il y'est de retard car si je déclare 20 sortie (marche) et que je branche 10 sortie en laissant les 10 autres sorties en cercuit ouvert on vas constater une perte de temps lors de l'allumage de l'escalier ce qui est normale vu que j'ai déclarer 20 sortie (marche) , j'aimerais remidier a ce problème )@al1fch ma conseiller de mettre un dipswtitches pour introduire un nombre de sortie dans le programme , j'aimerai savoir si c'est la meilleure solution dans mon cas et dans ce que je cherche a faire, j'espère avoir été clair dans mes propos.
je mets aussi le code qui n'est pas finit et qui est configurer pour 10 sortie (marche), le programme a été tester il fonctionne bien mais il n'est ni finis ni optimiser en terme de nombre de lignes , j'aurais pu déclarer une variable qui change en fonction du nombre de marche voulu mais ce n'est que des testes j'attends d'avoir la finalité du programme pour l'optimiser... si vous avez d'autres astuces a me donner pour optimiser le programme ou l'ensemble de ce projet je suis preneur.
Merci d'avance.
boolean etat = false;
void setup(){
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
pinMode(10, OUTPUT);
pinMode(11, OUTPUT);
pinMode(A1, INPUT);
digitalWrite(A1, HIGH);
pinMode(A2, INPUT_PULLUP);
digitalWrite(A2, HIGH);
pinMode(A3, INPUT);
digitalWrite(A3, HIGH);
pinMode(A4, INPUT_PULLUP);
digitalWrite(A4, HIGH);
}
void loop(){
if (digitalRead(A1) == HIGH){
while( digitalRead(A1) == HIGH)
{digitalWrite(2, etat ? HIGH : LOW);}
{digitalWrite(3, etat ? HIGH : LOW);}
{digitalWrite(4, etat ? HIGH : LOW);}
{digitalWrite(5, etat ? HIGH : LOW);}
{digitalWrite(6, etat ? HIGH : LOW);}
{digitalWrite(7, etat ? HIGH : LOW);}
{digitalWrite(8, etat ? HIGH : LOW);}
{digitalWrite(9, etat ? HIGH : LOW);}
{digitalWrite(10, etat ? HIGH : LOW);}
{digitalWrite(11, etat ? HIGH : LOW);}
etat = !etat;
{digitalWrite(2, etat ? HIGH : LOW);}
delay(300);
{digitalWrite(3, etat ? HIGH : LOW);}
delay(300);
{digitalWrite(4, etat ? HIGH : LOW);}
delay(300);
{digitalWrite(5, etat ? HIGH : LOW);}
delay(300);
{digitalWrite(6, etat ? HIGH : LOW);}
delay(300);
{digitalWrite(7, etat ? HIGH : LOW);}
delay(300);
{digitalWrite(8, etat ? HIGH : LOW);}
delay(300);
{digitalWrite(9, etat ? HIGH : LOW);}
delay(300);
{digitalWrite(10, etat ? HIGH : LOW);}
delay(300);
{digitalWrite(11, etat ? HIGH : LOW);}
}
else if (digitalRead(A2) == HIGH){
while( digitalRead(A2) == HIGH)
{digitalWrite(2, etat ? HIGH : LOW);}
{digitalWrite(3, etat ? HIGH : LOW);}
{digitalWrite(4, etat ? HIGH : LOW);}
{digitalWrite(5, etat ? HIGH : LOW);}
{digitalWrite(6, etat ? HIGH : LOW);}
{digitalWrite(7, etat ? HIGH : LOW);}
{digitalWrite(8, etat ? HIGH : LOW);}
{digitalWrite(9, etat ? HIGH : LOW);}
{digitalWrite(10, etat ? HIGH : LOW);}
{digitalWrite(11, etat ? HIGH : LOW);}
etat = !etat;
{digitalWrite(2, etat ? HIGH : LOW);}
delay(300);
{digitalWrite(3, etat ? HIGH : LOW);}
delay(300);
{digitalWrite(4, etat ? HIGH : LOW);}
delay(300);
{digitalWrite(5, etat ? HIGH : LOW);}
delay(300);
{digitalWrite(6, etat ? HIGH : LOW);}
delay(300);
{digitalWrite(7, etat ? HIGH : LOW);}
delay(300);
{digitalWrite(8, etat ? HIGH : LOW);}
delay(300);
{digitalWrite(9, etat ? HIGH : LOW);}
delay(300);
{digitalWrite(10, etat ? HIGH : LOW);}
delay(300);
{digitalWrite(11, etat ? HIGH : LOW);}
}
else if (digitalRead(A3) == LOW){
while( digitalRead(A3) == LOW)
{digitalWrite(2, etat ? HIGH : LOW);}
{digitalWrite(3, etat ? HIGH : LOW);}
{digitalWrite(4, etat ? HIGH : LOW);}
{digitalWrite(5, etat ? HIGH : LOW);}
{digitalWrite(6, etat ? HIGH : LOW);}
{digitalWrite(7, etat ? HIGH : LOW);}
{digitalWrite(8, etat ? HIGH : LOW);}
{digitalWrite(9, etat ? HIGH : LOW);}
{digitalWrite(10, etat ? HIGH : LOW);}
{digitalWrite(11, etat ? HIGH : LOW);}
etat = !etat;
{digitalWrite(2, etat ? HIGH : LOW);}
delay(300);
{digitalWrite(3, etat ? HIGH : LOW);}
delay(300);
{digitalWrite(4, etat ? HIGH : LOW);}
delay(300);
{digitalWrite(5, etat ? HIGH : LOW);}
delay(300);
{digitalWrite(6, etat ? HIGH : LOW);}
delay(300);
{digitalWrite(7, etat ? HIGH : LOW);}
delay(300);
{digitalWrite(8, etat ? HIGH : LOW);}
delay(300);
{digitalWrite(9, etat ? HIGH : LOW);}
delay(300);
{digitalWrite(10, etat ? HIGH : LOW);}
delay(300);
{digitalWrite(11, etat ? HIGH : LOW);}
}
else if (digitalRead(A4) == LOW){
while( digitalRead(A4) == LOW)
{digitalWrite(2, etat ? HIGH : LOW);}
{digitalWrite(3, etat ? HIGH : LOW);}
{digitalWrite(4, etat ? HIGH : LOW);}
{digitalWrite(5, etat ? HIGH : LOW);}
{digitalWrite(6, etat ? HIGH : LOW);}
{digitalWrite(7, etat ? HIGH : LOW);}
{digitalWrite(8, etat ? HIGH : LOW);}
{digitalWrite(9, etat ? HIGH : LOW);}
{digitalWrite(10, etat ? HIGH : LOW);}
{digitalWrite(11, etat ? HIGH : LOW);}
etat = !etat;
{digitalWrite(2, etat ? HIGH : LOW);}
delay(300);
{digitalWrite(3, etat ? HIGH : LOW);}
delay(300);
{digitalWrite(4, etat ? HIGH : LOW);}
delay(300);
{digitalWrite(5, etat ? HIGH : LOW);}
delay(300);
{digitalWrite(6, etat ? HIGH : LOW);}
delay(300);
{digitalWrite(7, etat ? HIGH : LOW);}
delay(300);
{digitalWrite(8, etat ? HIGH : LOW);}
delay(300);
{digitalWrite(9, etat ? HIGH : LOW);}
delay(300);
{digitalWrite(10, etat ? HIGH : LOW);}
delay(300);
{digitalWrite(11, etat ? HIGH : LOW);}
}
}