Branchements :
1. GY-61 :
o VCC → 5V Arduino
o GND → GND Arduino
o X/Y/Z → Pins analogiques (A0, A1, A2)
2. Écran LCD (en u lisant un Shield) :
o Connecter directement sur l'Arduino UNO.
3. Haut-parleur :
o Une borne → Pin numérique D9 via une résistance.
o Autre borne → GND
4. Servo-moteur :
o Signal → Pin D10
o VCC → 5V
o GND → GND
5. LEDs :
Connecter les anodes (+) des LEDs via des résistances 220Ω aux pins D2 à D7.
Cathodes (-) → GND.
Code Arduino :
#include <LiquidCrystal.h>
#include <Servo.h>
// Ini alisa on de l'écran LCD
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
// Broches pour l'accéléromètre
const int pinX = A0;
const int pinY = A1;
const int pinZ = A2;
// Broches pour le haut-parleur et LEDs
const int speakerPin = 9;
const int ledPins[] = {2, 3, 4, 5, 6, 7};
// Servo-moteur
Servo servo;
const int servoPin = 10;
// Seuil de détec on du séisme
const int seismeThreshold = 50; // Ajuster selon les tests
void setup() {
// Configura on des broches
pinMode(speakerPin, OUTPUT);
for (int i = 0; i < 6; i++) {
pinMode(ledPins[i], OUTPUT);
}
servo.a ach(servoPin);
// Ini alisa on du LCD
lcd.begin(16, 2);
lcd.print("Systeme Pret");
// Posi on ini ale du servo (porte fermée)
servo.write(0);
delay(2000);
lcd.clear();
}
void loop() {
// Lire les valeurs de l'accéléromètre
int x = analogRead(pinX);
int y = analogRead(pinY);
int z = analogRead(pinZ);
// Calcul de la varia on (simplifié pour détecter un choc)
int mouvement = abs(x - 512) + abs(y - 512) + abs(z - 512);
// Si un séisme est détecté
if (mouvement > seismeThreshold) {
lcd.clear();
lcd.print("ALERTE SEISME!");
lcd.setCursor(0, 1);
lcd.print("Degre: ");
lcd.print(mouvement); // Affiche l'intensité (à ajuster)
// Ac ver LEDs
for (int i = 0; i < 6; i++) {
digitalWrite(ledPins[i], HIGH);
}
// Jouer un son d'alerte
tone(speakerPin, 1000, 1000); // Fréquence 1000Hz pendant 1 seconde
delay(1000);
noTone(speakerPin);
// Message vocal (Simula on)
lcd.clear();
lcd.print("SORTIR PAR LA");
lcd.setCursor(0, 1);
lcd.print("PORTE DE SECOURS");
// Ouvrir la porte (servo)
servo.write(90); // Posi on pour ouverture de porte
delay(5000); // Temps pour sor r
// Reme re la porte à zéro
servo.write(0);
// Éteindre LEDs
for (int i = 0; i < 6; i++) {
digitalWrite(ledPins[i], LOW);
}
// A ente avant retour à la normale
delay(5000);
lcd.clear();
lcd.print("Systeme Pret");
}
}