Le Joystick

Brochage
Masse | Alimentation | Axe X | Axe Y | Bouton poussoir |
---|---|---|---|---|
GND | Vcc (+5v) | VRx | VRy | SW |
Analogique | Analogique | Digital |
Utilisation avec un Arduino
- Servomoteur X en D9 (PWM)
- Servomoteur Y en D10 (PWM)
- LED en D2
- Joystick Vertical en A0
- Joystick Horizontal en A1
- Joystick SW en D4
Code Arduino
Le code est disponible sur le simulateur Wokwi (Paragraphe précédent)
/*
* Claude EMERY
* 13/04/2024
* 2 servomoteur + 1 joystick + Arduino Uno
*/
#include <Servo.h>
Servo servoX; //Servomotor
Servo servoY;
int joyX = A0; //Horizontal - VRx sur A0
int joyY = A1; //Vertical - VRy sur A1
int joySw = 4; //Joystick SW sur D4
int led = 2; //LED sur D2
int valServoX;
int valServoY;
void setup()
{
servoX.attach(9);
servoY.attach(10);
pinMode(led, OUTPUT); //Pin LED en INPUT
pinMode(joySw, INPUT_PULLUP); //Pin SW en OUTPUT
}
void loop() {
ServoX_Run();
ServoY_Run();
LedOnOff();
}
void ServoX_Run(){ //Rotation ServoX
valServoX = analogRead(joyX); //Lecture de la valeur analogique ServoX
valServoX = map(valServoX, 0, 1023, 0, 180); //Conversion la valeur analogique en angle
servoX.write(valServoX); //Rotation du servomoteur ServoX
delay(15);
}
void ServoY_Run(){ //Rotation ServoY
valServoY = analogRead(joyY); //Lecture de la valeur analogique ServoY
valServoY = map(valServoY, 0, 1023, 0, 180); //Conversion la valeur analogique en angle
servoY.write(valServoY); //Rotation du servomoteur ServoY
delay(15);
}
void LedOnOff(){ //Allumer/Eteindre la Led avec appui sur SW
if (digitalRead(joySw) == LOW) { //Si SW est appuyé ....
digitalWrite(led, HIGH); //Allumer la Led
}
else{
digitalWrite(led,LOW); //Eteindre la Led
}
}