#include <Wire.h>
#include <MPU6050.h>
MPU6050 Gyro;
// Définir les broches LED pour les axes X et Y
int ledPinsX[] = {2, 3, 4, 5, 6, 7}; // Remplacer par vos numéros de broches réels
int ledPinsY[] = {8, 9, 10, 11, 12, 13}; // Remplacer par vos numéros de broches réels
int button = A0; // La broche connectée au bouton
int extraLed = A1; // La broche pour la LED supplémentaire
void setup() {
Wire.begin();
Gyro.initialize();
// Initialiser toutes les broches LED et le bouton
for (int i = 0; i < 6; i++) {
pinMode(ledPinsX[i], OUTPUT);
pinMode(ledPinsY[i], OUTPUT);
}
pinMode(extraLed, OUTPUT); // Initialiser la broche de la LED supplémentaire
pinMode(button, INPUT_PULLUP); // Initialiser la broche du bouton avec une résistance de rappel interne
}
void loop() {
int16_t ax, ay, az;
Gyro.getAcceleration(&ax, &ay, &az);
// Mapper les valeurs de l'accéléromètre aux gammes de 6 LEDs
int xIndex = map(ax, -16384, 16384, 0, 5);
int yIndex = map(ay, -16384, 16384, 0, 5);
// Éteindre toutes les LEDs
for (int i = 0; i < 6; i++) {
digitalWrite(ledPinsX[i], LOW);
digitalWrite(ledPinsY[i], LOW);
}
// Allumer la LED correspondante à la position actuelle sur l'axe X
digitalWrite(ledPinsX[xIndex], HIGH);
// Allumer la LED correspondante à la position actuelle sur l'axe Y
digitalWrite(ledPinsY[yIndex], HIGH);
// Lire l'état du bouton et allumer la LED supplémentaire si le bouton est appuyé
if (digitalRead(button) == LOW) { // Le bouton est appuyé si la lecture est LOW
digitalWrite(extraLed, HIGH);
} else {
digitalWrite(extraLed, LOW);
delay(10);
}
// Ajouter un petit délai pour voir les changements
delay(100);
}