/* Claude EMERY 16/03/2024
Controler un servomoteur avec des boutons poussoirs
Bouton Vert = INCREMENTATION
Bouton Rouge = DECREMENTATION
Bouton Bleu = RESET
*/
#include <Servo.h>
const int boutonPinReset = 3; // Broche du bouton poussoir RESET
const int boutonPinPlus = 4; // Broche du bouton poussoir PLUS
const int boutonPinMoins = 5; // Broche du bouton poussoir MOINS
Servo myServo;
int compteur = 90; // Valeur d'initialisation du compteur pour 90°
bool boutonEtatPrecPlus = LOW; // État précédent du bouton PLUS
bool boutonEtatPrecMoins = LOW; // État précédent du bouton MOINS
void setup() {
pinMode(boutonPinReset, INPUT_PULLUP); // Broche du bouton RESET en entrée
pinMode(boutonPinPlus, INPUT_PULLUP); // Broche du bouton PLUS en entrée
pinMode(boutonPinMoins, INPUT_PULLUP); // Broche du bouton MOINS en entrée
Serial.begin(9600);
myServo.attach(9);
}
void loop() {
// Lire l'état actuel du bouton
bool boutonEtatPlus = digitalRead(boutonPinPlus);
bool boutonEtatMoins = digitalRead(boutonPinMoins);
bool boutonEtatReset = digitalRead(boutonPinReset);
// Vérifier si le bouton PLUS est enfoncé et l'état précédent était relâché
if (boutonEtatPlus == HIGH && boutonEtatPrecPlus == LOW) {
//compteur++; // Incrémenter le compteur en PLUS
compteur +=5; // Incrémenter le compteur de 5
affiche_compteur();
myServo.write(compteur);
}
// Vérifier si le bouton MOINS est enfoncé et l'état précédent était relâché
if (boutonEtatMoins == HIGH && boutonEtatPrecMoins == LOW) {
//compteur--; // Décrémenter le compteur en MOINS
compteur -=5; // Décrémenter le compteur de 5
affiche_compteur();
myServo.write(compteur);
}
// Mise à jour de l'état des boutons poussoirs
boutonEtatPrecPlus = boutonEtatPlus; // Mettre à jour l'état précédent du bouton PLUS
boutonEtatPrecMoins = boutonEtatMoins; // Mettre à jour l'état précédent du bouton MOINS
// Reset du servomoteur => Angle 90°
if (boutonEtatReset == LOW){
compteur = 90;
myServo.write(compteur);
affiche_compteur();
}
}
// Fonction affichage de l'angle
void affiche_compteur(){
Serial.print("Angle: ");
Serial.print(compteur);
Serial.println("°");
}
INCREMENTATION
DECREMENTATION
RESET