#include <Bounce2.h>
#include <Servo.h>
#include <SlowMotionServo.h>
class Remise {
private: SMSSmoothBounce mPorteDroite;
private: SMSSmoothBounce mPorteGauche;
private: Bounce mBoutonOverture;
private: bool mPosition; /* false = fermé, true = ouvert */
public: void demarre(const byte pinBouton, const byte pinServoPorteDroite, const byte pinServoPorteGauche);
public: void gereRemise();
};
void Remise::demarre(const byte pinBouton, const byte pinServoPorteDroite, const byte pinServoPorteGauche)
{
pinMode(pinBouton, INPUT_PULLUP);
mBoutonOverture.attach(pinBouton);
mBoutonOverture.interval(5); /* rafraichissement toutes les 5ms */
mPorteDroite.setMin(900);
mPorteDroite.setMax(1750);
mPorteDroite.setSpeed(1.7);
mPorteGauche.setMin(1100);
mPorteGauche.setMax(2000);
mPorteGauche.setSpeed(1.7);
mPorteGauche.setReverted(true); /* La porte gauche a un mouvement inverse */
mPorteDroite.setInitialPosition(0.1);
mPorteGauche.setInitialPosition(0.1);
mPorteDroite.setPin(pinServoPorteDroite);
mPorteGauche.setPin(pinServoPorteGauche);
mPosition = false;
/* ferme les porte au démarrage */
mPorteDroite.goTo(0.0);
mPorteGauche.goTo(0.0);
}
void Remise::gereRemise()
{
mBoutonOverture.update(); /* met à jour l'état du bouton */
if (mPorteDroite.isStopped() && mPorteGauche.isStopped())
{
/* si un mouvement était en cours, il est terminé */
if (mBoutonOverture.fell()) {
/* appui sur le bouton, on démarre le mouvement */
if (mPosition) {
/* la remise est ouverte, la cible pour la fermer est 0.0 */
mPorteDroite.goTo(0.0);
mPorteGauche.goTo(0.0);
mPosition = false;
}
else {
/* la remise est fermée, la cible pour l'ouvrir est 1.0 */
mPorteDroite.goTo(1.0);
mPorteGauche.goTo(1.0);
mPosition = true;
}
}
}
}
/* Instance de Remise */
Remise remise1;
/* les broches */
const byte pinServoDroitRemise1 = 2;
const byte pinServoGaucheRemise1 = 3;
const byte pinBoutonRemise1 = 4;
Remise remise2;
/* les broches */
const byte pinServoDroitRemise2 = 5;
const byte pinServoGaucheRemise2 = 6;
const byte pinBoutonRemise2 = 7;
Remise remise3;
/* les broches */
const byte pinServoDroitRemise3 = 8;
const byte pinServoGaucheRemise3 = 9;
const byte pinBoutonRemise3 = 10;
Remise remise4;
/* les broches */
const byte pinServoDroitRemise4 = 11;
const byte pinServoGaucheRemise4 = 12;
const byte pinBoutonRemise4 = 13;
Remise remise5;
/* les broches */
const byte pinServoDroitRemise5 = A0;
const byte pinServoGaucheRemise5 = A1;
const byte pinBoutonRemise5 = A3;
void setup()
{
remise1.demarre(pinBoutonRemise1, pinServoDroitRemise1, pinServoGaucheRemise1);
remise2.demarre(pinBoutonRemise2, pinServoDroitRemise2, pinServoGaucheRemise2);
remise3.demarre(pinBoutonRemise3, pinServoDroitRemise3, pinServoGaucheRemise3);
remise4.demarre(pinBoutonRemise4, pinServoDroitRemise4, pinServoGaucheRemise4);
remise5.demarre(pinBoutonRemise5, pinServoDroitRemise5, pinServoGaucheRemise5);
}
void loop()
{
SlowMotionServo::update();
remise1.gereRemise();
}
voila je m'étais trompé de programme, excusez moi
il doit manquer quelque chose car seule la remise1 fonctionne