Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Manufacturing Technology >> Processus de fabrication

Construire un flipper piloté par Arduino : guide DIY complet

Composants et fournitures

Composant Quantité Remarques
Arduino Mega 2560 1
Écran LCD 2 pins (Adafruit) 1 Série, piloté via SoftwareSerial
Alimentation 24V 1 Pour solénoïdes (flippers, bumpers, slingshots)
Capteur de force (Adafruit) 1 Détection balle perdue
Assemblage Pop Bumper 1
Contacteur Pop Bumper 1
Contacteur Target (cible) 1
Contacteur Rollover 1
Assemblage Flipper 1 Mécanisme complet
Lampes LED 1 Lot pour éclairage terrain

À propos du projet

Flipper piloté par Arduino

Construire un flipper contrôlé par Arduino combine menuiserie, mécanique, électronique et programmation. Six mois de travail à temps partiel — le projet le plus complexe que j'aie jamais réalisé. La difficulté majeure : peu de documentation existante sur la construction d'un flipper.

Ce document décrit la construction en détail avec suffisamment de références pour vous faciliter la tâche si vous voulez construire le vôtre. Testez tout sur prototype ! J'ai utilisé une chute de contreplaqué pour prototyper chaque composant avant installation finale — cela évite bien des déconvenues.

Construire un flipper piloté par Arduino : guide DIY complet

La machine a une caisse en contreplaqué chêne et utilise des pièces de rechange de flipper commerciales. Le tout est piloté par un unique Arduino Mega 2560. Vidéo de démo : lien vers la vidéo.

La caisse

Contreplaqué plaqué chêne (magasin de bricolage). Dimensions en pouces :

Découpes à onglets, assemblées par lamelles (biscuit joiner) + colle. Vis à poche + colle auraient aussi fonctionné. La caisse doit être robuste (vibrations, chocs). Rainure ¾" à 1" du bas pour l'étagère flottante (dilatation bois). L'étagère supporte l'alimentation principale et celle des LED décoratives sous le couvercle.

Surface de jeu : 22L × 42L (plus courte que la caisse). 3" à l'avant pour passer câbles boutons flippers et LEDs. 3" à l'arrière pour le lance-bille. La surface repose sur tasseaux vissés aux parois, ~4" sous le sommet. Pour accéder à l'intérieur : ouvrez le couvercle, retirez la surface de jeu, retournez-la.

Construire un flipper piloté par Arduino : guide DIY complet

Caisse et surface à angles droits. L'inclinaison (pente) est donnée par les pieds (1° à 7° selon vitesse désirée). Pieds réglables : bois tourné (magasin bricolage), perçage 12" de profondeur au forêt à bois. Écrou Té 3/8" époxyé en bas (attention aux filets). Tige filetée 3/8" × 12", écrou, pied de nivelage. Références :

Platines de fixation vissées sur l'étagère basse. Réglage hauteur : desserrez l'écrou, tournez la tige, resserrez.

Sur la photo : cordon secteur et USB. Multiprise fixée au dos — un interrupteur coupe tout. Câble USB accessible pour reprogrammer l'Arduino sans démonter la surface de jeu.

Le couvercle

Cadre en chêne, mêmes dimensions extérieures que la caisse. Haut/latéraux : 1,5" ; bas : 5" (cache l'espace surface/caisse). Rainure interne pour plexiglas (plus léger, plus sûr, plus facile à couper que le verre). Assemblé par vis à poche (démontable si plexiglas à changer). Bande LED décorative sous le couvercle. Charnière piano encastrée dans couvercle et caisse.

Construire un flipper piloté par Arduino : guide DIY complet

L'Arduino

Le Mega 2560 fait quatre choses :

  1. Détecte l'activation des contacteurs
  2. Allume/éteint les lampes correspondantes
  3. Gère le score
  4. Affiche score et numéro de bille sur le petit LCD

Câblage simple : contacteurs sur entrées digitales avec INPUT_PULLUP. Passage HIGH→LOW = contacteur activé → allumage LED correspondante.

Complexité : Pop Bumpers. Ils sont alimentés en 24V (séparé de l'Arduino). Leur contacteur ne peut pas être lu directement (haute tension). Solution : diviseur de tension pour ramener à 5V. Exemple diviseur. J'ai utilisé les entrées analogiques (seuil > 500) pour éviter les faux positifs dus aux fuites de courant du diviseur.

Bonus : quand tous les contacteurs d'un type (targets, pop bumpers, rollovers) sont activés, l'Arduino fait clignoter leurs lampes et augmente leur valeur de score.

Un capteur de force détecte la perte de bille (gère le compte de billes et fin de partie). Fin de partie = toutes les lampes clignotent en séquence.

Le LCD affiche score et bille via SoftwareSerial.

Le schéma joint montre le câblage d'un exemplaire de chaque composant principal (sinon illisible).

Alimentation

Alimentation 24V pour composants flipper. Suffisante pour flippers et slingshots, un peu juste pour pop bumpers (prévoir plus puissant si besoin, avec diviseurs adaptés). Distribution via barres de raccordement (bus bars) fixées sous la surface de jeu — bien plus pratique que raccordement direct. Visibles sur la photo des slingshots. Disponibles rayon électricité magasin bricolage.

Lance-bille (Plunger)

Acheté ici : Marco Specialties

Percez la face avant pour le passage. Alignez précisément : règle sur surface de jeu, repérez le point sur l'intérieur de la caisse, montez de sorte que le centre du plunger = demi-hauteur de la bille (bille = 1 1/16", dispo chez Pinball Life).

Surface de jeu

Contreplaqué bouleau ¼". Décoration : photo NASA (Hubble printshop). Colle contact sur bois, laminez l'affiche, retournez, découpez aux dimensions.

Flippers

Achetés ici : Pinball Life. Les composants flipper viennent sans notice utile. Schéma de câblage ci-dessous (source : lien fourni).

Construire un flipper piloté par Arduino : guide DIY complet

Nécessaire : mécanisme flipper, batte (flipper bat), contacteur flipper, bouton.

Slingshots (éjecteurs latéraux)

Assemblage complet Pinball Life (goupilles, élastiques). Photo du montage vu du dessous. Fil 16 AWG pour 24V, 22 AWG pour Arduino. Rails métalliques latéraux (guides bille) introuvables dans le commerce — fabriqués avec fil acier chromé (marquage pelouse insecticide), cintrés, percés, époxyés dans la surface.

Construire un flipper piloté par Arduino : guide DIY complet Construire un flipper piloté par Arduino : guide DIY complet

Pop Bumpers

Assemblages Pinball Life (contacteurs, capuchons). Installation : 3 trous (2 tiges support, 1 arbre contacteur). Bille roule sur disque blanc → pousse arbre → contacteur à lames → solénoïde tire anneau métallique → renvoie bille.

Construire un flipper piloté par Arduino : guide DIY complet Construire un flipper piloté par Arduino : guide DIY complet

Cibles, rollovers, lampes

Câblage identique pour tous (voir section Arduino).

Résumé

Une fois commencé, vous voudrez ajouter cloches et sifflets — cette base vous lance. Bon courage !

Code

Code Arduino Flipper (Arduino)

Permet à l'Arduino de gérer la partie d'un flipper maison.

const int TxPin = 17;
long Score = 0, OldScore = 0;
long Target = 1, Pop = 1, Roll = 10;
int Targets[8], Rolls[3], Pops[4];
int Milli = 10, Sum = 0, Flash = 100;
int Ball = 0, i = 0, Shot = 0, Lost = 0, Pressure = 1024;

#include <SoftwareSerial.h>;
SoftwareSerial mySerial = SoftwareSerial(255, TxPin);

void setup() {
  pinMode(TxPin, OUTPUT);
  digitalWrite(TxPin, HIGH);
  mySerial.begin(9600);
  mySerial.write(12); // Clear LCD
  mySerial.write(17); // Backlight on
  
  // Entrées contacteurs (pull-up interne)
  for (int p = 2; p <= 9; p++)  pinMode(p, INPUT_PULLUP);   // 8 Targets
  for (int p = 10; p <= 12; p++) pinMode(p, INPUT_PULLUP);   // 3 Rollovers
  pinMode(15, INPUT_PULLUP); // Switch allée basse
  pinMode(16, INPUT_PULLUP); // Switch allée haute
  
  // LCD
  pinMode(17, OUTPUT);
  
  // Sorties lampes
  for (int p = 32; p <= 39; p++) pinMode(p, OUTPUT); // 8 Targets
  for (int p = 40; p <= 42; p++) pinMode(p, OUTPUT); // 3 Rollovers
  for (int p = 50; p <= 53; p++) pinMode(p, OUTPUT); // 4 Pop Bumpers
}

void loop() {
  // --- Targets (pins 2-9) ---
  for (int i = 0; i < 8; i++) {
    if (digitalRead(i + 2) == LOW) {
      Targets[i] = 1;
      Score += Target;
      digitalWrite(i + 32, HIGH);
      delay(Milli);
      break;
    }
  }
  Sum = 0; for (int i = 0; i < 8; i++) Sum += Targets[i];
  if (Sum == 8) {
    for (int j = 0; j < 3; j++) {
      for (int i = 0; i < 8; i++) digitalWrite(i + 32, LOW);
      delay(Flash);
      for (int i = 0; i < 8; i++) digitalWrite(i + 32, HIGH);
      delay(Flash);
    }
    for (int i = 0; i < 8; i++) { digitalWrite(i + 32, LOW); Targets[i] = 0; }
    delay(Flash);
    Target *= 5; // Score x5
  }
  
  // --- Rollovers (pins 10-12) ---
  for (int i = 0; i < 3; i++) {
    if (digitalRead(i + 10) == LOW) {
      Rolls[i] = 1;
      Score += Roll;
      digitalWrite(i + 40, HIGH);
      delay(Milli);
      break;
    }
  }
  Sum = 0; for (int i = 0; i < 3; i++) Sum += Rolls[i];
  if (Sum == 3) {
    for (int j = 0; j < 3; j++) {
      for (int i = 0; i < 3; i++) digitalWrite(i + 40, LOW);
      delay(Flash);
      for (int i = 0; i < 3; i++) digitalWrite(i + 40, HIGH);
      delay(Flash);
    }
    for (int i = 0; i < 3; i++) { digitalWrite(i + 40, LOW); Rolls[i] = 0; }
    delay(Flash);
    Score *= 2; Roll *= 10;
  }
  
  // --- Pop Bumpers (analog pins 0-3) ---
  for (int i = 0; i < 4; i++) {
    if (analogRead(i) > 500) {
      Pops[i] = 1;
      Score += Pop;
      digitalWrite(i + 50, HIGH);
      delay(Milli);
      break;
    }
  }
  Sum = 0; for (int i = 0; i < 4; i++) Sum += Pops[i];
  if (Sum == 4) {
    for (int j = 0; j < 3; j++) {
      for (int i = 0; i < 4; i++) digitalWrite(i + 50, LOW);
      delay(Flash);
      for (int i = 0; i < 4; i++) digitalWrite(i + 50, HIGH);
      delay(Flash);
    }
    for (int i = 0; i < 4; i++) { digitalWrite(i + 50, LOW); Pops[i] = 0; }
    delay(Flash);
    Pop *= 2;
  }
  
  // --- Gestion bille (Switch allées + capteur force) ---
  if (digitalRead(15) == LOW && Shot == 0) { // Allée basse
    Lost = 0; Pressure = analogRead(7) + 20; OldScore = -1;
    Ball++; if (Ball == 6) { Ball = 1; Score = 0; Target = 1; Roll = 1; Pop = 1; }
    Shot = 1;
  }
  if (digitalRead(16) == LOW && Shot == 0) { // Allée haute
    Lost = 0; Pressure = analogRead(7) + 15; OldScore = -1;
    Ball++; if (Ball == 6) { Ball = 1; Score = 0; Target = 1; Roll = 1; Pop = 1; }
    Shot = 1;
  }
  if (analogRead(7) > Pressure) { // Bille sur capteur force
    Shot = 0;
    if (Lost == 0) {
      Lost = 1;
      if (Ball == 5) { // Game Over (5ème bille perdue)
        // Clignotement général
        for (int j = 0; j < 3; j++) {
          for (int i = 0; i < 3; i++) digitalWrite(i + 40, LOW);
          delay(Flash);
          for (int i = 0; i < 3; i++) digitalWrite(i + 40, HIGH);
          delay(Flash);
        }
        for (int i = 0; i < 3; i++) { digitalWrite(i + 40, LOW); Rolls[i] = 0; }
        for (int j = 0; j < 3; j++) {
          for (int i = 0; i < 4; i++) digitalWrite(i + 50, LOW);
          delay(Flash);
          for (int i = 0; i < 4; i++) digitalWrite(i + 50, HIGH);
          delay(Flash);
        }
        for (int i = 0; i < 4; i++) { digitalWrite(i + 50, LOW); Pops[i] = 0; }
        for (int j = 0; j < 3; j++) {
          for (int i = 0; i < 8; i++) digitalWrite(i + 32, LOW);
          delay(Flash);
          for (int i = 0; i < 8; i++) digitalWrite(i + 32, HIGH);
          delay(Flash);
        }
        for (int i = 0; i < 8; i++) { digitalWrite(i + 32, LOW); Targets[i] = 0; }
        mySerial.write(12); delay(5);
        mySerial.print(Score);
        mySerial.write(13); // Form feed
        mySerial.print("Game Over!!!");
      }
    }
  }
  
  // --- Affichage LCD ---
  if (Score != OldScore) {
    mySerial.write(12); delay(5);
    mySerial.print(Score);
    mySerial.write(13);
    mySerial.print("Ball = "); mySerial.print(Ball);
    OldScore = Score;
  }
}

Schémas

Construire un flipper piloté par Arduino : guide DIY complet

Processus de fabrication

  1. Interrupteur d'Alimentation AC Intelligent Contrôlé par SMS avec Raspberry Pi et Hologram
  2. Construire un robot Raspberry Pi piloté par Bluetooth avec retour audio
  3. Lampe de table RGB à commande gestuelle – Éclairage interactif, mains libres
  4. Construire un dispositif de lévitation ultrasonique avec Arduino – Guide étape par étape
  5. Contrôler des LED avec Alexa via Raspberry Pi – Guide Pas à Pas
  6. Transformez une vieille voiture RC en véhicule piloté au joystick avec Arduino
  7. Bras robotique 6 DoF piloté par Nunchuk Wii – Kit Arduino Mega
  8. Interrupteur lumineux sans fil intelligent : Manipulateur d'interrupteur piloté par Arduino
  9. Robot commandé par la voix avec Arduino Nano et Bluetooth