Exercice : Utilisation de la directive #if (2/2)

Simulateur

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

Schéma du montage

Schéma à deux LEDInformations[1]

Dans le programme suivant, on souhaite tester deux versions, l'une avec deux LED, l'autre avec une seule LED (la rouge). En modifiant la valeur de la constante DEUXLED (avec les valeurs 0 ou 1), on pourra ainsi tester l'une ou l'autre version.

1
#include "constantes.h"
2
#define DEUXLED 0
3
4
void setup() {
5
    pinMode(RED_LED_PIN, OUTPUT);
6
    pinMode(GRN_LED_PIN, OUTPUT);
7
}
8
int level = ETEINT;
9
void loop() {
10
    digitalWrite(GRN_LED_PIN, level);
11
    digitalWrite(RED_LED_PIN, !level );
12
    level = !level;
13
    delay(1000);
14
}
1
// fichier constantes.h
2
#define RED_LED_PIN 4
3
#define GRN_LED_PIN 5
4
#define ALLUME 1
5
#define ETEINT 0

Question

Modifiez le programme fourni pour qu'il réponde au cahier des charges

Solution

1
#define RED_LED_PIN 4
2
#define GRN_LED_PIN 5
3
#define ALLUME 1
4
#define ETEINT 0
5
6
#define DEUXLED 1
7
void setup() {
8
    pinMode(RED_LED_PIN, OUTPUT);
9
    pinMode(GRN_LED_PIN, OUTPUT);
10
}
11
int level = ETEINT;
12
void loop() {
13
  //La directive #if permet de compiler ou pas l'instruction d'allumage de la LED verte
14
#if DEUXLED
15
    digitalWrite(GRN_LED_PIN, level); //Allumage de la LED verte (quand level = 1)
16
#endif
17
    digitalWrite(RED_LED_PIN, !level ); //Allumage de la LED rouge (quand level=0)
18
    level = !level; //Inversion de la valeur de level : si level était à 1, alors il devient égal à 0.
19
    delay(1000);
20
}