Collegamento relè e temporizzazione

Buongiorno, è da poco che ho iniziato ad usare arduino, sto cercando di fare un programma, che mi azioni a turno 3 relè, quindi relè 1 On, relè 1 Off, relè 2 on, relè 2 off, relè 3 on, relè 3 off. questo ciclo deve ripetersi per n volte. e la velocità tra ogni on e off, vorrei impostarla di default.

qualcuno riesce a darmi una dritta? grazie :slight_smile:

finora sono riuscito a fare questo.

const int rele2 = 1;
const int rele3 = 2;
const int rele4 = 3;

void setup(void) {

pinMode(rele1, OUTPUT);
pinMode(rele2, OUTPUT);
pinMode(rele3, OUTPUT);

digitalWrite (rele1, HIGH);
digitalWrite (rele2, HIGH);
digitalWrite (rele3, HIGH);

}

void loop(void) {

digitalWrite(rele1, LOW);
delay(1000);

digitalWrite(rele1, HIGH);
digitalWrite(rele2, LOW);

delay(1000);
digitalWrite(rele2, HIGH);
digitalWrite(rele3, LOW);
delay(1000);
digitalWrite(rele3, HIGH);
delay(1000);
}

Ciao, di solito consigliano di usare millis() al posto di delay(), che ha il vantaggio di non "bloccare" il
programma e inoltre di stabilire tempi diversi per ciascun relè.

Si dovrebbe sapere più completamente cosa vorresti realizzare. Nel senso la funzione loop() viene ripetuta in continuazione, quindi le istruzioni che inserisci al suo interno verranno ripetute un numero infinito di volte. Se tu hai bisogno di ripetere un numero limitato di volte, dovresti usare una funzione richiamata dal setup(), in cui è presente un ciclo finito, esempio un for() che ripete n volte.

Prima di dare soluzioni a casaccio, descrivi cosa vuoi fare in completo, perché una soluzione può andare molto bene per un problema parziale, come accendere e spegnere 3 relé un certo numero di volte, ma poi non sarebbe adatta se devi fare altre cose. Da qui LA DESCRIZIONE di cosa vuoi fare nel complesso.

Comunque per ripetere un numero limitato di volte, e solo per questo problema, non se il problema è più articolato e prevede altre cose...

const int rele2 = 1;
const int rele3 = 2;
const int rele4 = 3;



void setup(void) {


   pinMode(rele1, OUTPUT); 
   pinMode(rele2, OUTPUT);
   pinMode(rele3, OUTPUT);


   digitalWrite (rele1, HIGH);
   digitalWrite (rele2, HIGH);
   digitalWrite (rele3, HIGH);

   sequenza();
   

}


void loop(void) {


    
}


void sequenza(){
     
        int i=0;

        for(i=0;i<5;i++){//ripete 5 volte

              digitalWrite(rele1, LOW);
              delay(1000);

              digitalWrite(rele1, HIGH);
              digitalWrite(rele2, LOW);

              delay(1000);
              digitalWrite(rele2, HIGH);
              digitalWrite(rele3, LOW);
              delay(1000);
              digitalWrite(rele3, HIGH);
              delay(1000);

        }//end for   
}

ross94:
Buongiorno,

Ti invitiamo a presentarti (dicci quali conoscenze hai di elettronica e di programmazione) qui: Presentazioni
e a leggere il regolamento se non lo hai già fatto: Regolamento
Qui una serie di link utili, non inerenti al tuo problema:

Il codice devi racchiuderlo nei tag code, vedi sezione 7 del regolamento, spiega bene come fare ( pulsante </> ).
Altrimenti parte del codice può essere visualizzata male o mancare perchè interpretato come attributo del testo stesso.