Faites le cours c++
mieux vaut commencer par le cours C, ensuite C++
Je n’ai pas d’avis particulier
Personnellement j’ai commencé par le C parce que C++ n’existait pas ![]()
Merci encore
le problème de ces fonctions c'est qu'elles ne se généralisent pas. tout est câblé en dur.
un exemple avec une classe
#include <Keypad.h>
enum t_mode {allumage, extinction} mode = extinction;
const int ROW_NUM = 4;
const int COLUMN_NUM = 4;
char keys[ROW_NUM][COLUMN_NUM] = {
{'1', '2', '3', 'A'},
{'4', '5', '6', 'B'},
{'7', '8', '9', 'C'},
{'*', '0', '#', 'D'}
};
byte pin_rows[ROW_NUM] = {34, 36, 38, 40};
byte pin_column[COLUMN_NUM] = {42, 44, 46, 48};
Keypad clavier = Keypad( makeKeymap(keys), pin_rows, pin_column, ROW_NUM, COLUMN_NUM );
class Lampe {
private:
const char * nom;
byte pin;
char commande;
public:
Lampe(const char * n, const byte p, const char c) : nom(n), pin(p), commande(c) {}
void configure() {pinMode(pin, OUTPUT);}
void allumer() {digitalWrite(pin, HIGH);}
void eteindre() {digitalWrite(pin, LOW);}
void executer(const char c, const t_mode m) {
if (c == commande) { // si la commande est pour moi
if (m == allumage) allumer();
else if (m == extinction) eteindre();
}
}
};
/*--------------------------------------declaration des lampes--------------------------------------*/
Lampe lampes[] = {
{"Salon", 22, '1'}, // nom, N° de pin, caractère de commande sur le clavier
{"Chambre", 24, '2'},
{"Cuisine", 26, '3'},
{"Garage", 28, '4'},
{"Douche", 30, '5'},
};
void gestion_clavier() {
char c = clavier.getKey();
if (c != NO_KEY) {
if (c == '*') mode = allumage;
else if (c == '#') mode = extinction;
else for (auto&l : lampes) l.executer(c, mode);
}
}
void setup() {
for (auto&l : lampes) l.configure();
}
void loop() {
gestion_clavier();
}
(tapé ici, je n'ai pas testé)
on n'a pas à écrire 10 fois les fonctions d'allumage et d'extinction d'une pièce, au final c'est le même code qui s'applique sur un broche différente. et si vous voulez rajouter des pièces, il suffit de rallonger le tableau lampes et tout est pris en compte
@J-M-L De manière globale, je comprend ce que fait le code que vous avez écrit. Mais il y a des lignes de code que je ne comprends pas, certainement parceque je ne maitrise pas encore la syntaxe d'une structure.
Merci encore pour vos réponses.
This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.