Remplacer les delay pour ne plus avoir la temporisation

Bonsoir à tous !

J'ai un petit soucis dans mon apprentissage du remplacement des delay pour ne plus "bloquer mon programme".
Voiçi mon rapide code:

const int r1 = A0;
const int r2 = A1;
const int r3 = A2;
const int r4 = A3;
long interval = 1000;
const int BAS = HIGH;
const int HAUT = LOW;
unsigned long temps1 = 0;

void setup() {
pinMode (r1, OUTPUT);
digitalWrite (r1, BAS);
pinMode (r2, OUTPUT);
digitalWrite (r2, BAS);
pinMode (r3, OUTPUT);
digitalWrite (r3, BAS);
pinMode (r4, OUTPUT);
digitalWrite (r4, BAS);
}

void loop() {

temps1 = millis();
if (temps1 == 1000) {
digitalWrite (r1, HAUT);
}
if (temps1 == 2000) {
digitalWrite (r1, BAS);
temps1 = 0;
}
/*
digitalWrite (r2, HAUT);
delay (1000);
digitalWrite (r2, BAS);
digitalWrite (r3, HAUT);
delay (1000);
digitalWrite (r3, BAS);
digitalWrite (r4, HAUT);
delay (1000);
digitalWrite (r4, BAS);
*/

}

Une idée pourquoi il ne tourne pas en boucle (le temps1 après avoir été mit à 0 ne reprend plus le temps de millis) ?

Merci d'avance à tous !!!! =D

Regarde ici :

void loop() {
 
  temps1 = millis();
  .
  .
  .

Tu réinitialises ton "temps1" à chaque tour de la fonction loop (assimile cette fonction comme une boucle infinie), met le dans un if par exemple.

if(condition de départ de la temporisation)
{ 
  temps1=millis();
  condition de départ de la temporisation = false; //pour évité la répétition  
}

Vouiiii j’ai tout compris !!! Merci encore à vous !

voilà mon nouveau exemple, c’est ok non ?

const int r1 = A0;
const int r2 = A1;
const int r3 = A2;
const int r4 = A3;
const int BAS = HIGH;
const int HAUT = LOW;
unsigned long temps = 0;
boolean passage = 0;
unsigned long tempsa = 0;


void setup() {
  pinMode (r1, OUTPUT);
  digitalWrite (r1, BAS);
  pinMode (r2, OUTPUT);
  digitalWrite (r2, BAS);
  pinMode (r3, OUTPUT);
  digitalWrite (r3, BAS);
  pinMode (r4, OUTPUT);
  digitalWrite (r4, BAS);
}

void loop() {
  
  temps = millis();
  delay(2465);
  
  if (temps - tempsa > 1000 && passage == 0 || temps - tempsa < 0) {
   digitalWrite (r1, HAUT);
   passage = 1;
   tempsa = temps;
  }
  if (temps - tempsa > 1000 && passage == 1 || temps - tempsa < 0) {
   digitalWrite (r1, BAS);
   passage = 0;
   tempsa = temps;
  }
  /*
  digitalWrite (r2, HAUT);
  delay (1000);
  digitalWrite (r2, BAS);
  digitalWrite (r3, HAUT);
  delay (1000);
  digitalWrite (r3, BAS);
  digitalWrite (r4, HAUT);
  delay (1000);
  digitalWrite (r4, BAS);
  */
  
}

Ça me semble correct.
Moi je fais comme ça, c’est kif kif.

  if(passage  && millis() >= delay1) 
  {
   digitalWrite (r1, HAUT);
   passage = 1;
   delay1 = millis()+1000;
  }