Exercice : Constructeur avec paramètre

Simulateur

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

L'initialisation des numéros de ports s'effectue actuellement grâce à des fonctions membres pour chacune des deux classes

Question

Remplacez la fonction membre d'initialisation du port par un constructeur avec paramètre.

Solution

1
Programme principal
2
3
#define PORT_LED 7
4
5
#define PORT_BP 6
6
7
#include "Led.h"
8
9
#include "Bp.h"
10
11
12
Led diode(PORT_LED);
13
14
Bp bouton(PORT_BP);
15
16
17
//Programme principal
18
19
void setup() {
20
21
}
22
23
24
void loop() {
25
26
  //Lire Bp et allumer Led si Bp enfoncé, éteindre sinon
27
28
  if(bouton.getBpState()){diode.setOn();}
29
30
  else{diode.setOff();}
31
32
}
33
34
35
Led.h
36
37
class Led{
38
39
 private:
40
41
    int pinLed;
42
43
 public:
44
45
  Led(int);
46
47
  void setOn();
48
49
  void setOff();
50
51
};
52
53
Led.ino
54
55
Led::Led(int port_number){
56
57
  /*Avant d'affecter la valeur du port à pinLed, il faut
58
59
  vérifier que cette valeur est conforme*/
60
61
  if(port_number >=2 && port_number <=8){
62
63
      pinLed = port_number;
64
65
  }
66
67
  else{
68
69
    pinLed = 2;//En cas d'erreur, on peut par exemple utiliser une valeur par défaut
70
71
  }
72
73
  pinMode(pinLed, OUTPUT);
74
75
}
76
77
void Led::setOn(){
78
79
  digitalWrite(pinLed, HIGH);
80
81
}
82
83
void Led::setOff(){
84
85
  digitalWrite(pinLed, LOW);
86
87
}
88
89
Bp.h
90
91
class Bp{
92
93
  private:
94
95
    int pinBp;
96
97
  public:
98
99
    Bp(int);
100
101
    bool getBpState();
102
103
};
104
105
Bp.ino
106
107
#define PORT_MIN 5
108
109
#define PORT_MAX 7
110
111
112
Bp::Bp(int value){
113
114
  if(value >= PORT_MIN && value <= PORT_MAX){
115
116
        pinBp = value;
117
118
            pinMode(pinBp, INPUT);
119
120
121
      }
122
123
  else{
124
125
    Serial.println("Erreur");
126
127
  }
128
129
}
130
131
bool Bp::getBpState(){
132
133
  return(digitalRead(pinBp));
134
135
}