Construire un jeu « Opération » géant animé type Lego Minifigure avec Arduino
Composants principaux
- 2 × Arduino UNO (1 pour servos, 1 pour audio MP3)
- 1 × Shield MP3 Adafruit (VS1053) + carte SD
- 6 × Servos MG90S (métal)
- 2 × Haut-parleurs 3 W / 4 Ω
- 12 × Roulements à billes 688Z (8×16×5 mm)
- Structure : MDF, PVC, impression 3D, usinage CNC
Architecture générale
Le projet « Frank » (le scientifique fou) et son monstre sont des figurines géantes style Lego. Le plateau de jeu (le lit) intègre des contacts en aluminium : quand les pinces touchent une zone, le circuit se ferme et déclenche son + animation.
Électronique : deux Arduino communicants
Arduino #1 — Shield MP3 (maître)
- Surveille 3 entrées GPIO (contacts aluminium).
- Joue le MP3 correspondant (02.mp3, 03.mp3, 04.mp3).
- Envoie une impulsion 5 V (300 ms) sur D5, D8 ou D9 vers l'Arduino servos.
- Gère le volume via deux boutons (A0, A1).
Arduino #2 — Pilotage 6 servos (esclave)
- Reçoit l'impulsion sur D2, D3, D4 (INPUT_PULLUP).
- Exécute une chorégraphie synchronisée (tête, bras, jambes) avec fonctions d'easing (cubique, bounce, élastique…).
- Utilise
writeMicroseconds()pour un contrôle précis.
Mécanique : points clés
- Roulements 688Z comme axes de rotation (tête, bras).
- Supports imprimés 3D + cornes aluminium sur boulons 5/16".
- Ressorts d'assistance pour lever les bras.
- Câblage propre sous le lit (prototype sur MDF, puis intégration finale).
Code : extraits significatifs
Arduino Servos — fonction d'easing générique
int moveServo(Servo &s, int degStart, int degEnd,
unsigned long dur, unsigned long delayStart,
float (*easing)(float), unsigned long now) {
if (now < delayStart) return 1;
unsigned long tEnd = delayStart + dur;
if (now > tEnd) return 0;
float p = float(now - delayStart) / dur;
p = easing(p);
int usStart = map(degStart, 0, 180, 500, 2400);
int usEnd = map(degEnd, 0, 180, 500, 2400);
int us = (usEnd > usStart) ?
usStart + (usEnd - usStart) * p :
usEnd + (usStart - usEnd) * (1 - p);
s.writeMicroseconds(us);
return 1;
}
Arduino MP3 — détection et déclenchement
void loop() {
int gpio2 = musicPlayer.GPIO_digitalRead(2);
int gpio3 = musicPlayer.GPIO_digitalRead(3);
int gpio4 = musicPlayer.GPIO_digitalRead(4);
if (gpio2) { zap2(); }
else if (gpio3) { zap3(); }
else if (gpio4) { zap4(); }
// gestion volume...
delay(2);
}
void zap2() {
audioPlay("02.mp3");
activate(relayPin5); // impulsion vers Arduino servos
delay(6000); // attend fin animation
audioStop("02.mp3");
}
Résultat
Le dispositif a tenu une soirée complète d'Halloween sans faillir. Chaque « opération » déclenche une réplique audio (voix de Tony Stark) et une animation mécanique fluide grâce aux courbes d'easing.
Ressources
- Journal de construction détaillé : therpf.com
- Fichiers 3D sur Thingiverse (lien dans le projet original).
Processus de fabrication
- Créer un système Ambilight spectaculaire pour moniteur avec Arduino
- Créer un jeu Pong classique sur Arduino UNO avec écran OLED – Tutoriel étape par étape
- Manette de jeu USB Arduino DIY – Construisez votre propre gamepad haute performance
- Construire un tireur LEGO Star Wars automatisé avec Arduino Uno
- Jeu Breakout tactile Arduino : recréez l'arcade classique sur écran TFT 2,4″
- Détecteur de fréquence audio Arduino — Mesurer le pic sonore avec module haute sensibilité
- Construisez votre propre Tamagotchi Arduino : Un animal de compagnie numérique DIY
- Interrupteur lumineux sans fil intelligent : Manipulateur d'interrupteur piloté par Arduino
- Morpion sur matrice LED MAX7219 avec boîtier en carton