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
4
5
6
7
8
9
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
108
109
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
}