bonjour, je dois mi prendre comme un pied...
mon cahier des charges:
3 boutons : Fire, plus et moins; une del commandée par un mosfet
- le bouton fire allume la del, si il est appuyé plus de 10s la del s'éteind
- un triple clic sur fire verrouille/déverrouille l'allumage de la del
- les boutons + et - règlent l'intensité de la del
- un triple clic sur + ou - verrouille/déverrouille le réglage de l'intensité de la del
1er problème comment déclarer le même bouton avec simpleBouton et boutonAction ?
conflicting declaration 'boutonAction boutonFire'
simpleBouton boutonFire(fire); pour pouvoir tester vientDEtreEnfonce,vientDEtreRelache et estEnfonceDepuisPlusDe
boutonAction boutonFire(fire); pour gérer le triple clic
2ème problème lors de la compilation il n'arrive pas à traduire
error: invalid conversion from 'void ()()' to 'void (*)()' [-fpermissive]
boutonFire.attacher(clicFire, doubleClicFire, tripleClicFire);
Arduino : 1.8.5 (Windows 10), Carte : "Digispark (Default - 16.5mhz)"
box_tiny:16: error: conflicting declaration 'boutonAction boutonFire'
boutonAction boutonFire(fire);
^
box_tiny:15: error: 'boutonFire' has a previous declaration as 'simpleBouton boutonFire'
simpleBouton boutonFire(fire);
^
d:\Users\Buldo.buldo-PC\Desktop\diy\box_tiny\box_tiny.ino: In function 'void setup()':
box_tiny:27: error: 'class simpleBouton' has no member named 'attacher'
boutonFire.attacher(clicFire, doubleClicFire, tripleClicFire);
^
box_tiny:28: error: invalid conversion from 'void (*)()' to 'void* (*)()' [-fpermissive]
boutonPlus.attacher(clicPlus, doubleClicPlus, tripleClicPlus);
^
In file included from d:\Users\Buldo.buldo-PC\Desktop\diy\box_tiny\box_tiny.ino:1:0:
D:\Program Files (x86)\Arduino\libraries\simpleBouton/simpleBouton.h:64:10: error: initializing argument 2 of 'void boutonAction::attacher(void (*)(), void* (*)(), void* (*)())' [-fpermissive]
void attacher(void (*clic)(), void (*clicClic()) = NULL, void (*clicClicClic()) = NULL);
^
box_tiny:28: error: invalid conversion from 'void (*)()' to 'void* (*)()' [-fpermissive]
boutonPlus.attacher(clicPlus, doubleClicPlus, tripleClicPlus);
^
In file included from d:\Users\Buldo.buldo-PC\Desktop\diy\box_tiny\box_tiny.ino:1:0:
D:\Program Files (x86)\Arduino\libraries\simpleBouton/simpleBouton.h:64:10: error: initializing argument 3 of 'void boutonAction::attacher(void (*)(), void* (*)(), void* (*)())' [-fpermissive]
void attacher(void (*clic)(), void (*clicClic()) = NULL, void (*clicClicClic()) = NULL);
^
box_tiny:29: error: invalid conversion from 'void (*)()' to 'void* (*)()' [-fpermissive]
boutonMoins.attacher(clicMoins, doubleClicMoins, tripleClicMoins);
^
In file included from d:\Users\Buldo.buldo-PC\Desktop\diy\box_tiny\box_tiny.ino:1:0:
D:\Program Files (x86)\Arduino\libraries\simpleBouton/simpleBouton.h:64:10: error: initializing argument 2 of 'void boutonAction::attacher(void (*)(), void* (*)(), void* (*)())' [-fpermissive]
void attacher(void (*clic)(), void (*clicClic()) = NULL, void (*clicClicClic()) = NULL);
^
box_tiny:29: error: invalid conversion from 'void (*)()' to 'void* (*)()' [-fpermissive]
boutonMoins.attacher(clicMoins, doubleClicMoins, tripleClicMoins);
^
In file included from d:\Users\Buldo.buldo-PC\Desktop\diy\box_tiny\box_tiny.ino:1:0:
D:\Program Files (x86)\Arduino\libraries\simpleBouton/simpleBouton.h:64:10: error: initializing argument 3 of 'void boutonAction::attacher(void (*)(), void* (*)(), void* (*)())' [-fpermissive]
void attacher(void (*clic)(), void (*clicClic()) = NULL, void (*clicClicClic()) = NULL);
^
exit status 1
conflicting declaration 'boutonAction boutonFire'
Ce rapport pourrait être plus détaillé avec
l'option "Afficher les résultats détaillés de la compilation"
activée dans Fichier -> Préférences.
le code fautif
#include "simpleBouton.h"
const int mosfet=0;
const int led=1;
const int fire=2;
const int plus=3;
const int moins=4;
int pwm=70;
int pas=10;
bool blocageFire=false;
bool blocagePwm=false;
unsigned long tempsFire=0;
unsigned long dureFire=10000;
simpleBouton boutonFire(fire);
boutonAction boutonFire(fire);
boutonAction boutonPlus(plus);
boutonAction boutonMoins(moins);
void setup() {
pinMode(led, OUTPUT);
pinMode(mosfet, OUTPUT);
clignoteLed(6);
stopFire();
boutonFire.attacher(clicFire, doubleClicFire, tripleClicFire);
boutonPlus.attacher(clicPlus, doubleClicPlus, tripleClicPlus);
boutonMoins.attacher(clicMoins, doubleClicMoins, tripleClicMoins);
boutonPlus.activerRepetition();
boutonMoins.activerRepetition();
}
void loop()
{
boutonFire.actualiser();
boutonPlus.actualiser();
boutonMoins.actualiser();
if (boutonFire.vientDEtreEnfonce()) debutFire();
if (boutonFire.vientDEtreRelache()) stopFire();
if (boutonFire.estEnfonceDepuisPlusDe(dureFire)) stopFire();
}
// bouton fire
void debutFire() {
if (blocageFire==false){
analogWrite(mosfet,pwm);
digitalWrite(led,HIGH);
} else stopFire();
}
void stopFire() {
digitalWrite(mosfet,LOW);
digitalWrite(led,LOW);
}
void clicFire() {
}
void doubleClicFire() {
}
void tripleClicFire() {
blocageFire=!blocageFire;
clignoteLed(3);
}
// bouton fire
// bouton plus
void clicPlus() {
if (blocagePwm==false){
pwm=pwm+pas;
digitalWrite(led,HIGH);
delay(10);
digitalWrite(led,LOW);
}else digitalWrite(led,LOW);
}
void doubleClicPlus() {
}
void tripleClicPlus() {
blocagePwm=!blocagePwm;
clignoteLed(4);
}
// bouton plus
// bouton moins
void clicMoins() {
if (blocagePwm==false){
pwm=pwm-pas;
digitalWrite(led,HIGH);
delay(10);
digitalWrite(led,LOW);
}else digitalWrite(led,LOW);
}
void doubleClicMoins() {
}
void tripleClicMoins() {
blocagePwm=!blocagePwm;
clignoteLed(4);
}
// bouton moins
uint8_t clignoteLed(int cligno){
uint8_t y=0;
while (y < cligno){
digitalWrite(led,HIGH);
delay(200);
digitalWrite(led,LOW);
delay(200);
y++;
}
}
// End