Exercice : Chenillard : test de rebouclage

Simulateur

Cet exercice est à réaliser avec le simulateur en ligne Wokwi

Schéma

Nous utiliserons le schéma suivant :

Schéma pour réalisation d'un chenillardInformations[1]

Les 8 diodes électroluminescentes (LED) sont connectées aux bits de ports allant de 0 à 7

Question

Modifiez la version précédente du chenillard (allumage successif de chaque LED pendant une seconde) à l'aide d'un structure « if » pour que le défilement ne s'arrête jamais : lorsque la dernière LED est atteinte, on recommence à la première.

Question

Modifiez la version précédente pour que le défilement change de sens en fin de cycle comme dans la vidéo ci-dessous :

Chenillard avec cycle de fonctionnement (réalisé sous le simulateur Tinkercad)

Solution

Solution 1
1
#define PORT_LED 0
2
#define INITIALE B00000001
3
#define NB_LEDS 8
4
int i ;
5
void setup(){
6
  i = NB_LEDS - 1;
7
  DDRD = B11111111;
8
  PORTD = INITIALE;
9
}
10
11
void loop(){
12
  if(i>=0){
13
     delay(1000); // Wait for 1000 millisecond(s)
14
     PORTD = PORTD << 1;
15
  }
16
  else{
17
    i=NB_LEDS;
18
     PORTD = INITIALE;
19
  }
20
  i--;
21
}
Solution 2
1
#define PORT_LED 0
2
#define INITIALE B00000001
3
#define NB_LEDS 8
4
int i ;
5
void setup(){
6
  DDRD = B11111111;
7
  PORTD = INITIALE;
8
}
9
10
void loop(){
11
  for(i=0; i<NB_LEDS;i++) {
12
     delay(1000); // Wait for 1000 millisecond(s)
13
     PORTD = PORTD << 1;
14
  }
15
  PORTD = INITIALE;
16
}
Solution 3
1
#define INITIALE B00000001
2
void setup(){
3
DDRD = B11111111;
4
PORTD = INITIALE;
5
}
6
void loop(){
7
delay(1000); // Wait for 1000 millisecond(s)
8
PORTD = PORTD << 1;
9
if(PORTD == 0){PORTD = INITIALE;}
10
}