Relais allumés directement et HIGH = eteindre

Bonjour,

Je suis entrain de faire un programme pour un escalier, j'ai voulu le condenser avec une boucle for (je vais avoir 15 marches donc 15 bandeaux). Seulement, mon faible niveau malgrès mes recherche, je n'arrive pas a démarrer le programme pour que de base toutes les leds soient éteintes. Lorsque je charge mon programme elles sont d'office allumées et je dois mettre en high pour qu'elles s'éteignent.
Je ne sais pas comment déclarer de base au programme pour les éteindres.

const byte pinMarches[4]={3,4,5,6}; //relais HIGH=eteindre // déclare le nombre et les pins
int MONTER=2;// capteur
int DESCENTE=8;

long tempspasse=0;
int ledmillis=500;

int JEMONTE = 0;
int JEDESCENDS = 0;

void setup() {
Serial.begin(9600);
pinMode(JEMONTE,INPUT);
pinMode(JEDESCENDS,INPUT);
for (int i=0; i<=4;i++)pinMode(pinMarches[i],OUTPUT); //declare le nombre de led en tout en partant de zero
//digitalWrite(pinMarches[i],HIGH); 

}


/*void bashaut(){
                          {
 for (int i=0; i<=4; i++)     //nombre de led c-a-d les leds sont sur les pins 3 4 5 6 mais il y en a 4 donc la n°3 sur 0 la n°4 sur 1...  
    digitalWrite(pinMarches[i], HIGH);
    delay(1000);                            
                          }
              }*/

/*void hautbas() {
  for (int i=4; i>=0; i--){
    digitalWrite(pinMarches[i], LOW);
    delay(1000); 
                          }
                }*/
void loop()   
{
 for (int i=0; i<4; i++) {    //nombre de led c-a-d les leds sont sur les pins 3 4 5 6 mais il y en a 4 donc la n°3 sur 0 la n°4 sur 1...  
    digitalWrite(pinMarches[i], HIGH);
    delay(1000);      
    Serial.println("boucle loop");                      
                          }
}

J'ai un doute sur cette partie

for (int i=0; i<=4;i++)pinMode(pinMarches[i],OUTPUT); //declare le nombre de led en tout en partant de zero
//digitalWrite(pinMarches[i],HIGH);

De plus le serial.print m'affiche le message plus de 4fois, il continu a l'infini
Une âme charitable serait-elle m'aider?

Merci d'avance

Bonjour,

Il suffit de les mettre à HIGH en même temps que tu les mets en OUTPUT

  for (int i = 0; i < 4; i++)
  {
    pinMode(pinMarches[i], OUTPUT);
    digitalWrite(pinMarches[i], HIGH);
  }

Remarque: c'est i<4 et non i<=4
La boucle sera exécutée 4 fois pour 0,1,2,3

Deuxième remarque: tu aurais tout intérêt à définir une constante pour le nombre de marches (surtout si ça doit évoluer)

const byte pinMarches[4] = {3, 4, 5, 6}; //relais HIGH=eteindre // déclare le nombre et les pins
const byte NBMARCHES=sizeof pinMarches;

Ensuite tu utilises cette constantes dans tes boucles

  for (int i = 0; i < NBMARCHES; i++)
  {
    pinMode(pinMarches[i], OUTPUT);
    digitalWrite(pinMarches[i], HIGH);
  }

Si je peux me permettre - je dirais qu'il vaudrait mieux ne pas mettre le 4 et donc déclarer cela comme ça:

const byte pinMarches[] = {3, 4, 5, 6}; //relais HIGH=eteindre // déclare le nombre et les pins
const byte NBMARCHES=sizeof(pinMarches) / sizeof(pinMarches[0]); // juste au cas où un jour un byte ne serait pas sur un octet :)

Effectivement, ça permet d'être toujours cohérent entre le nombre de pins défini et le nombre de pins effectif.