je travail sur l'élaboration d'une bibliothèque personnelle (blink.h) qui me permettra de faire clignoter une ou plusieurs Leds sans être bloquée par une autre boucle longue.
Pour ce faire j'ai réaliser un "blink" sur base d'interruption (à l'aide de la bibliothèque "Ticker.h") qui marche très bien.
Par contre avant d'en faire une bibliothèque et afin de rendre cet outils plus souple à utiliser, je souhaite en faire un objet.
Si ce n'est pas mon premier objet, j'avoue toucher les limites de mes compétences et j'aurais besoin d'un coup de main pour me permettre de comprendre là où je bloque.
voici ma maquette fonctionnelle :
#include <Ticker.h>
Ticker blinker;
int led=2;
void blinky() {
digitalWrite(led, !digitalRead(led)); // set pin to the opposite state
}
void blinkOn (float duree) {
blinker.attach(duree, blinky); // blinck the pin every duree
}
void blinkOff () {
blinker.detach();
}
void setup() {
pinMode(led, OUTPUT);
blinkOn (0.25);
delay (20000);
blinkOff ();
digitalWrite(led, HIGH);
}
void loop() {
}
Et voici mon Objet qui ne fonctionne pas :
#include <Ticker.h>
Ticker blinker;
class Blink {
public :
int pinLed;
float duree;
void init () {
pinMode(pinLed, OUTPUT);
}
void blinky() {
digitalWrite(pinLed, !digitalRead(pinLed)); // set pin to the opposite state
}
void On () {
// blinker.attach(duree, blinky); // blink the pin every duree
}
void Off () {
blinker.detach();
}
};
Blink blink {13, 0.25};
void setup() {
blink.init ();
blink.On ();
delay (20000);
blink.Off ();
}
void loop() {
}
Ce qui ne fonctionne pas est passé en commentaire (ligne 16).
Je reçois un code d'Overload que je ne sais pas interpréter.
Merci d'avance à l’âme charitable qui saura m'expliquer comment y remédier.
Comme toutes les méthodes de classe, ta fonction blinky a en réalité un paramètre passé en appel, bien qu'il soit masqué.
Il s'agit de Blink *this : un pointeur vers l'objet associé à l'exécution en cours.
Ce qui la rend incompatible avec le second paramètre de la fonction attach()
Je te remercie beaucoup, Bricoleau de t'être penché sur mon PB.
Toutefois, si je ne doute pas du bien fondé de ton analyse, je ne maitrise pas suffisamment l'utilisation des pointeurs et encore moins leur utilité.
Du coups, je suis perdu et je n'arrive pas à voir comment intégrer tes remarques dans ma maquette "objet".
Sans vouloir abuser de ta gentillesse, pourrai-tu STP me montrer comment faire cette intégration.
Je tenterai de comprendre mes lacunes à partir d'une base fonctionnelle en faisant des tests et modifs.
Concernant l'utilisation abusive du mot "blink" dans mes déclaration, j'en ai bien conscience, mais étant encore au stade de la maquette, je travaillerai la simplification, la clarté et les commentaires, dès son bon fonctionnement.