/*
Claude EMERY 21/03/2024
Rotation Servomoteur avec bouton poussoir
Tant que l'on appuie , le servo tourne
Bouton Vert = Incrémentation
Bouton Rouge = Décrémentation
*/
#include <Servo.h>
const int btnSocleVert = 2; // Déclaration des boutons poussoirs
const int btnSocleRouge = 3;
const int btnBras1Vert = 4;
const int btnBras1Rouge = 5;
const int btnBras2Vert = 7;
const int btnBras2Rouge = 8;
const int btnPinceBleu = 12;
int compteurSocle = 90; // Initialisation du compteur à 90
int compteurBras1 = 90;
int compteurBras2 = 90;
Servo myServoSocle; // Déclaration des servomoteurs
Servo myServoBras1;
Servo myServoBras2;
Servo myServoPince;
void setup() {
pinMode(btnSocleVert, INPUT_PULLUP); // Configuration des pins des boutons en entrée
pinMode(btnSocleRouge, INPUT_PULLUP);
pinMode(btnBras1Vert, INPUT_PULLUP);
pinMode(btnBras1Rouge, INPUT_PULLUP);
pinMode(btnBras2Vert, INPUT_PULLUP);
pinMode(btnBras2Rouge, INPUT_PULLUP);
pinMode(btnPinceBleu, INPUT_PULLUP);
myServoSocle.attach(6); // Configuration des pins des servomoteurs
myServoBras1.attach(9);
myServoBras2.attach(10);
myServoPince.attach(11);
myServoSocle.write(90); // Position à mise sous tension
myServoBras1.write(90);
myServoBras2.write(90);
myServoPince.write(90);
Serial.begin(9600); // Initialisation du moniteur serie
}
void loop() { // Execution des fonctions
SocleVert();
SocleRouge();
Bras1Vert();
Bras1Rouge();
Bras2Vert();
Bras2Rouge();
PinceBleu();
}
void SocleVert(){ // Fonction Socle - bouton vert
if (digitalRead(btnSocleVert) == LOW) { // Vérifie si le bouton est enfoncé
delay(50); // Délai pour éviter les rebonds du bouton
// Vérifie à nouveau si le bouton est enfoncé après le délai
if (digitalRead(btnSocleVert) == LOW) {
compteurSocle++; // Incrémente le compteur
myServoSocle.write(compteurSocle);
affiche_compteur(); // Affichage du compteur
//while (digitalRead(btnSocleVert) == HIGH) {
// Attend que le bouton soit relâché avant de continuer
}
}
}
//}
void SocleRouge() { // Fonction Socle - bouton rouge
if (digitalRead(btnSocleRouge) == LOW) { // Vérifie si le bouton est enfoncé
delay(50); // Délai pour éviter les rebonds du bouton
if (digitalRead(btnSocleRouge) == LOW) {
compteurSocle--; // Décrémente le compteur
myServoSocle.write(compteurSocle);
affiche_compteur(); // Affichage du compteur
//while (digitalRead(btnSocleRouge) == HIGH) {
// Attend que le bouton soit relâché avant de continuer
}
}
}
//}
void Bras1Vert(){ // Fonction Bras1 - bouton vert
if (digitalRead(btnBras1Vert) == LOW) { // Vérifie si le bouton est enfoncé
delay(50); // Délai pour éviter les rebonds du bouton
// Vérifie à nouveau si le bouton est enfoncé après le délai
if (digitalRead(btnBras1Vert) == LOW) {
compteurBras1++; // Incrémente le compteur
myServoBras1.write(compteurBras1);
affiche_compteur(); // Affichage du compteur
//while (digitalRead(btnBras1Vert) == HIGH) {
// Attend que le bouton soit relâché avant de continuer
}
}
}
//}
void Bras1Rouge() { // Fonction Bras1 - bouton rouge
if (digitalRead(btnBras1Rouge) == LOW) { // Vérifie si le bouton est enfoncé
delay(50); // Délai pour éviter les rebonds du bouton
if (digitalRead(btnBras1Rouge) == LOW) {
compteurBras1--; // Décrémente le compteur
myServoBras1.write(compteurBras1);
affiche_compteur(); // Affichage du compteur
//while (digitalRead(btnBras1Rouge) == HIGH) {
// Attend que le bouton soit relâché avant de continuer
}
}
}
//}
void Bras2Vert(){ // Fonction Bras2 - bouton vert
if (digitalRead(btnBras2Vert) == LOW) { // Vérifie si le bouton est enfoncé
delay(50); // Délai pour éviter les rebonds du bouton
// Vérifie à nouveau si le bouton est enfoncé après le délai
if (digitalRead(btnBras2Vert) == LOW) {
compteurBras2++; // Incrémente le compteur
myServoBras2.write(compteurBras2);
affiche_compteur(); // Affichage du compteur
//while (digitalRead(btnBras2Vert) == HIGH) {
// Attend que le bouton soit relâché avant de continuer
}
}
}
//}
void Bras2Rouge() { // Fonction Bras2 - bouton rouge
if (digitalRead(btnBras2Rouge) == LOW) { // Vérifie si le bouton est enfoncé
delay(50); // Délai pour éviter les rebonds du bouton
if (digitalRead(btnBras2Rouge) == LOW) {
compteurBras2--; // Décrémente le compteur
myServoBras2.write(compteurBras2);
affiche_compteur(); // Affichage du compteur
//while (digitalRead(btnBras2Rouge) == HIGH) {
// Attend que le bouton soit relâché avant de continuer
}
}
}
//}
void PinceBleu() { // Fonction Pince - bouton bleu
if (digitalRead(btnPinceBleu) == LOW) { // Vérifier si le bouton est enfoncé
myServoPince.write(0); // Position de départ "fermeture" du ServoMoteur
} else {
myServoPince.write(90); // Position "ouverture" du Servomoteur
}
}
void affiche_compteur(){ // Affiche la valeur du compteur
Serial.print("Compteur Socle: ");
Serial.print(compteurSocle);
Serial.println("°");
Serial.print("Compteur Bras1: ");
Serial.print(compteurBras1);
Serial.println("°");
Serial.print("Compteur Bras2: ");
Serial.print(compteurBras2);
Serial.println("°");
}
Socle
Bras1
Bras2
Pince
Socle
Bras1
Bras2
Pince