Je pense avoir trouvé un programme (Commande du servo-moteur par bouton poussoir)
qui semble très proche voir similaire. (Il faudra je pense revoir l'angle du servo..)
j'ai modifier le code pour adapter à mon cas le voici :
#include <SCServo.h>
const byte SERVO_A_ANGLE_MIN = 0;
const byte SERVO_A_ANGLE_MAX = 1;
const byte SERVO_EN_MOUVEMENT_VERS_ANGLE_MAX = 2;
const byte SERVO_EN_MOUVEMENT_VERS_ANGLE_MIN = 3;
const int angleMin = 1250;
const int angleMax = 1750;
SCServo SERVO;
int vitesse = 0;
int angle = angleMin;
byte etatServo = SERVO_A_ANGLE_MIN;
const int pinBouton = 8; /* le bouton est connecté à la broche A0 */
const boolean PRESSE = true;
const boolean RELACHE = false;
boolean etatBouton = RELACHE;
const byte AUCUN_EVENEMENT = 0;
const byte EVENEMENT_PRESSE = 1;
const byte EVENEMENT_RELACHE = 2;
/*
- fonctions de gestion du poussoir
*/
boolean lirePoussoir()
{
boolean resultat = RELACHE;
if (analogRead(pinBouton) > 512) {
resultat = PRESSE;
}
return resultat;
}
byte lireEvenement()
{
byte evenement;
boolean nouvelEtat = lirePoussoir();
if (nouvelEtat == etatBouton)
evenement = AUCUN_EVENEMENT;
if (nouvelEtat == PRESSE && etatBouton == RELACHE)
evenement = EVENEMENT_PRESSE;
if (nouvelEtat == RELACHE && etatBouton == PRESSE)
evenement = EVENEMENT_RELACHE;
etatBouton = nouvelEtat;
return evenement;
}
/*
- La fonction setup() est exécutée 1 fois
- au démarrage du programme
*/
void setup()
{
SCServo SERVO;
}
/*
-
La fonction loop() est exécutée
-
répétitivement
*/
void loop()
{angle = angle + vitesse;
if (angle > angleMax) {
angle = angleMax;
vitesse = 0;
etatServo = SERVO_A_ANGLE_MAX;
}
else if (angle < angleMin) {
angle = angleMin;
vitesse = 0;
etatServo = SERVO_A_ANGLE_MIN;
}/* lecture de la commande de l'utilisateur */
byte evenement = lireEvenement();if (evenement == EVENEMENT_PRESSE) {
switch (etatServo) {
case SERVO_A_ANGLE_MIN:
case SERVO_EN_MOUVEMENT_VERS_ANGLE_MIN:
vitesse = 1;
etatServo = SERVO_EN_MOUVEMENT_VERS_ANGLE_MAX;
break;
case SERVO_A_ANGLE_MAX:
case SERVO_EN_MOUVEMENT_VERS_ANGLE_MAX:
vitesse = -1;
etatServo = SERVO_EN_MOUVEMENT_VERS_ANGLE_MIN;
break;
}
}delay(3);
}
J'ai aucun message d'erreur lors du téléversment mais cela ne fonctionne pas... J'ai aucun réaction du servo le BP
Avez vous une idée sur le souci ?
Merci