Exercice : Structure "switch...case"

Schéma

Nous utiliserons un schéma équivalent au suivant :

Soit le programme suivant :

1
/* Principaux réglages */
2
3
#define PORT_LED_ROUGE 4
4
#define PORT_LED_VERTE 5
5
#define PORT_BP_1 7
6
#define PORT_BP_2 6
7
#define ALLUME 1
8
#define ETEINT 0
9
10
/* Variables */
11
byte port;
12
13
/* Initialisations */
14
void setup() {
15
  DDRD = DDRD | B00110000;
16
  DDRD = DDRD & B00111111;
17
}
18
19
/* Boucle pricipale */
20
void loop() {
21
  port = PIND & B11000000;
22
  port = port >> 6;
23
  switch(port){
24
   case 1 : {
25
      digitalWrite(PORT_LED_ROUGE, ALLUME);   
26
      delay(100);                       
27
      digitalWrite(PORT_LED_ROUGE, ETEINT);    
28
      delay(1000);                       
29
      break;
30
    }
31
    case 3 : {
32
      digitalWrite(PORT_LED_ROUGE, ALLUME);   
33
      delay(100);                       
34
      digitalWrite(PORT_LED_VERTE, ALLUME);   
35
      delay(1000);
36
      digitalWrite(PORT_LED_ROUGE, ETEINT);    
37
      delay(1000); 
38
      digitalWrite(PORT_LED_VERTE, ETEINT);  
39
      delay(100);
40
      break;
41
    }
42
  }
43
}

Question

Il est demandé de compléter le programme précédent pour que les cas non prévus conduisent à l'affichage d'un message d'erreur sur le moniteur. A noter que deux solutions sont possibles.