/***************************************************************
** Test d'un servo et de deux LEDs pilotées par un joystick **
** Ch LAUVERJAT - 09/2024 **
***************************************************************/
// Appel des biliothèque
#include <Servo.h>
// Attribution d'un nom explicite aux broches utilisées
#define pinLedVerte 2
#define pinLedRouge 3
#define pinBuzzer 4
#define pinServo 5
#define pinJoyHori A1
#define pinJoyVert A0
#define pinJoyClic 6
// Création d'un objet servo
Servo servo;
void setup() {
// Initialisation de la liaison série
Serial.begin(115200);
// Définition des broches en entrées / sorties
pinMode(pinLedVerte, OUTPUT);
pinMode(pinLedRouge, OUTPUT);
pinMode(pinBuzzer, OUTPUT);
pinMode(pinJoyHori, INPUT);
pinMode(pinJoyVert, INPUT);
pinMode(pinJoyClic, INPUT);
// Connexion du servo (initialisation)
servo.attach(pinServo);
}
void loop() {
// Mesure des potentiomètres du joystick
int x = analogRead(pinJoyHori);
int y = analogRead(pinJoyVert);
// Affichage sur le moniteur série
Serial.print("X = ");
Serial.print(x);
Serial.print(" Y = ");
Serial.println(y);
// Calcul de l'angle en fonction du joystick X
int angle = map(x,0,1023,20,160);
// Déplacement du servo
servo.write(angle);
// Test du joystick Y pour allumer les LEDs
if (y<400) {
digitalWrite(pinLedRouge, HIGH);
digitalWrite(pinLedVerte, LOW);
}
else if (y>600) {
digitalWrite(pinLedRouge, LOW);
digitalWrite(pinLedVerte, HIGH);
}
else {
digitalWrite(pinLedRouge, LOW);
digitalWrite(pinLedVerte, LOW);
}
// Test du clic du joystick -> buzzer
if (digitalRead(pinJoyClic)) {
digitalWrite(pinBuzzer, HIGH);
}
else {
digitalWrite(pinBuzzer, LOW);
}
// Petite pause qui fait plaisir
delay(100);
}