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

Machine de bingo Arduino avec écrans DIY A4 à 7 segments

Composants et fournitures

Peg Board
Made by Ningbo remporte le tableau Handycraft2 pour les écrans à 7 segments et 1 pour le tableau de bord
× 3
planche à découper
planche à découper en plastique grise à utiliser pour le tableau de bord
× 1
Ruban LED numérique 5 m WS2811 avec 5050 Leds
de nombreux fournisseurs et marques
× 1
5m/roll DC5V ws2812b 300led Adressable individuellement 60leds/m 5050 RGB
de nombreux fournisseurs et fabricants
× 1
Câble audio
à utiliser pour la connexion entre le tableau de bord et les écrans à 7 segments
× 1
Planche à découper en plastique translucide
à utiliser pour les polices des écrans à 7 segments
× 2
Planche à découper flexible gris
à utiliser pour la couverture du tableau de bord
× 1
Arduino UNO
× 1
Résistance 221 ohm
lire 220 Ohm
× 2
condensateurs
100 uF
× 2
grand interrupteur à bouton-poussoir
momentané
× 1
petit bouton poussoir (générique)
× 1
Régulateur linéaire (7805)
× 1

Outils et machines nécessaires

Outils communs et équipement de test
outils normaux nécessaires pour de nombreux projets de bricolage

À propos de ce projet

En me promenant dans un magasin ACTION, j'ai découvert un trip LED numérique à un prix acceptable (incluant un adaptateur secteur 12V et incluant même une manette avec télécommande IR). J'ai décidé d'en acheter un et j'ai commencé à jouer avec eux dans le but de contrôler la bande LED avec un Arduino Uno dans mon cas.

Bien que cela ne soit spécifié nulle part sur l'emballage ou sur la bande LED elle-même, j'ai vite découvert qu'il s'agissait d'un type de bande avec des segments de trois LED 5050 avec un pilote WS2811 pour 3 LED.

J'ai connecté la bande à un Arduino Uno pour l'expérimenter en utilisant la bibliothèque Adafruit NeoPixel et un exemple de code tel que RGBW strandtest.

J'ai commencé à faire un brainstorming et j'ai eu l'idée d'utiliser ces voyages pour faire un écran 7 segments au format A4. Sept sections de bande comme indiqué ci-dessus feraient le travail plus une supplémentaire pour le point décimal sur l'écran. Cela en fait effectivement 8 segments qui seraient contrôlés à partir d'une seule broche de sortie de l'Arduino et alimentés avec l'adaptateur 12 V déjà contenu dans le package ACTION.

Mais que pouvez-vous faire avec un seul affichage 7 segments ?

J'ai décidé d'en faire 2 et de les utiliser pour créer une machine de bingo affichant des nombres aléatoires entre 1 et 75 après la pression d'un bouton.

Étape 1 : créer les affichages à 7 segments

L'ensemble du processus de fabrication des écrans est une assez longue histoire, que je pourrais décrire dans un didacticiel séparé. La version courte de la fabrication est la suivante :

Les deux écrans de format A4 ont été fabriqués avec des moyens et des matériaux conventionnels. Lors de l'utilisation de découpeuses laser et d'imprimantes 3D, l'ensemble du processus serait différent et peut-être plus simple. Vous trouvez de très bons exemples sur Internet, par ex. YouTube (https://learn.adafruit.com/ninja-timer-giant-7-segment-display/overview) et vous pouvez même les acheter prêts à l'emploi.

J'ai trouvé que c'était un défi et amusant de les faire moi-même.

Pour les bandes LED, j'ai utilisé 16 sections de 3 LED chacune découpées dans la bande LED WS2811 d'ACTION.

Ces segments sont connectés par des fils de soudure au +12V, GND et Do et Di des bandes. vous pouvez trouver de nombreux tutoriels sur Internet pour savoir comment procéder correctement.

Pour le logement, j'ai utilisé un panneau perforé facilement disponible et abordable du magasin ACTION local.

Les nouvelles façades du boîtier ont été fabriquées à partir d'une planche à découper translucide blanche d'IKEA.

Un gabarit a été utilisé pour découper les segments d'une couche peinte sur le dessus des planches (apprêt noir).

Un câble audio bon marché (également d'ACTION) a été utilisé pour connecter les écrans 7_segment avec seulement 3 fils (12V, GND et Data in) à l'Arduino via une résistance de 220 Ohm.

J'ai modifié le boîtier pour permettre un branchement facile du connecteur audio.

Étape 2 :Créer le tableau de bord

J'ai également décidé de créer un affichage de tableau de bord qui montrerait les nombres aléatoires générés, un bouton-poussoir pour générer un nouveau numéro et un "bouton de bingo" pour terminer et lancer un nouveau tour.

Le tableau de bord est fabriqué en utilisant le même panneau perforé ACTION qu'un boîtier (décrit ci-dessus). La plaque de couverture est faite d'une planche à découper gris foncé (encore une fois d'ACTION) avec des trous percés comme on peut le voir ci-dessus. Le couvercle supérieur est fabriqué à partir d'une planche à découper IKEA. Entre les 2 couches se trouve une impression sur papier photo et un film protecteur transparent.

À l'intérieur, collées contre le dos de la planche à découper se trouvent 5 sections de 15 LED WS2812 chacune plus 3 * 8 sections de bande LED pour le rétroéclairage du mot "BINGO".

Étape 3 :Création du logiciel

Les premières expériences avec le codage et le jeu avec la bande LED et les écrans à 7 segments ont été réalisées à l'aide d'un Arduino et d'une maquette sans soudure.

Un gros bouton-poussoir momentané est connecté à GND et à la broche IO numérique 2 de l'Uno. Appuyer sur le bouton lance la génération d'un nouveau nombre aléatoire. Après un court "Light Show 1", le nombre aléatoire est affiché sur les deux affichages à 7 segments.

Le tableau utilisé pour créer des nombres sur les afficheurs 7 segments est le suivant :

Afin d'aider à structurer l'Arduino Sketch, j'ai créé des organigrammes simples à l'aide de ClickCharts, une version gratuite pour une utilisation non commerciale (fonctionne bien une fois que vous vous êtes habitué à certaines limitations inhérentes)

Le nombre généré est stocké dans un tableau appelé SCORE[] composé de 75 positions remplies par "0" ou "1". Si le nouveau numéro généré existe déjà, un nouveau numéro aléatoire est automatiquement généré.

Le nouveau numéro est allumé sur le tableau des scores (avec 75 numéros) et en même temps le nouveau numéro est affiché sur les écrans à 7 segments

Le tableau de bord continue d'afficher tous les nombres aléatoires générés jusqu'à ce qu'un bingo valide soit atteint. Un bouton poussoir appelé "BINGO" terminera le tour avec un court "BingoLightShow"

Ensuite, le tableau SCORE est effacé et un nouveau tour peut être lancé.

Un nouveau cycle peut également être démarré en basculant l'interrupteur d'alimentation (en débranchant l'alimentation 12V) qui réinitialisera l'Arduino et redémarrera le programme.

Étape 4 :L'électronique

Un chargeur 12 V, 2 A alimente l'ensemble de la machine de bingo.

L'entrée 12V sur la prise d'alimentation Arduino a été modifiée pour permettre la commutation d'alimentation (marche - arrêt).

L'alimentation 5 V pour les 99 LED (75 + 24) utilisées pour le tableau de bord est dérivée de l'alimentation d'entrée 12 V au moyen d'un régulateur de tension 7805 (qui peut presque gérer le courant consommé par la bande LED WS2812); l'installation d'un dissipateur thermique ou d'une version d'alimentation est recommandée (dans une mise à jour, j'ajouterai probablement un transistor de puissance pour gérer la puissance 5V requise principalement consommée par les 99 LED WS2812 à l'intérieur du tableau de bord. J'ai fait le croquis de l'Arduino de cette manière que la demande de puissance du tableau de bord est modérée.

La disposition dans un diagramme Fritzing ressemble à ceci :

Notez que les deux sections LED à 7 segments (12V) ainsi que les bandes LED éclairant les chiffres 1 à 75 sur le tableau de bord Bingo sont contrôlés par une seule et même broche de sortie (6) de l'Uno.

Développé et produit par Pierre Pennings (novembre 2018).

Code

  • BINGO_Machine_rev04.ino
BINGO_Machine_rev04.inoArduino
Croquis pour machine de BINGO avec Arduino Uno et 2 écrans à 7 segments de format A4 avec un tableau de bord électronique
/* Ceci est le code d'une machine de bingo développée et produite par Pierre Pennings (novembre 2018) La machine utilise 2 DIGIT grand A4 afficheurs 7 segments de grande taille réalisés avec bande LED WS2811 alimentés en 12V (paires de 3 LED avec 1 puce de contrôle) Chaque segment composé de 3 LED est adressé avec une seule adresse de contrôle Chaque afficheur a 7 segments plus un point décimal (DP) Les chiffres présenté sur les 2 affichages vont de 1 à 75, comme dans un jeu de BINGO normal Un bouton poussoir momentané est connecté à GND et à la broche IO numérique 6 d'un ARDUINO UNO Appuyer sur le bouton lance la génération d'un nouveau nombre aléatoire Après un court "Light Show 1", le nombre aléatoire est affiché sur les deux affichages à 7 segments. Le nombre généré est également stocké dans un tableau appelé SCORE[] composé de 75 positions remplies par "0" ou "1" Si le nouveau nombre généré est déjà existent, automatiquement un nouveau nombre aléatoire ber est généré Tous les composants électroniques, y compris l'ARDUINO UNO lui-même, ont été intégrés dans un affichage séparé du tableau de bord Les 75 chiffres sont éclairés par une puce de contrôleur WS2812B avec une LED SMD5050 chacune (alimentée en 5 V) un BINGO valide est obtenu Un bouton-poussoir appelé « BINGO » terminera le tour avec un court « BingoLightShow ». Ensuite, le tableau SCORE est effacé et un nouveau tour peut être démarré. Alimentation 12V) qui va réinitialiser l'ARDUINO et redémarrer le programme Un chargeur 12V, 2A alimente la machine BINGO complète L'entrée 12 V sur la prise d'alimentation ARDUINO a été modifiée pour permettre la mise sous tension (marche - arrêt) L'alimentation 5 V pour les 99 LED (75 + 24) utilisées pour le tableau de bord est dérivée de la puissance d'entrée 12 V au moyen d'un régulateur de tension 7805 (qui peut presque gérer le courant consommé par la bande LED WS2812); l'installation d'un radiateur ou d'une version électrique est recommandée. Ce code est sous licence GPL3+.*/#include const int NewnumberButton =2; // La broche 2 d'E/S numérique est connectée au bouton Newnumber avec un contact normalement ouvert // La broche 2 sera pilotée avec la résistance de rappel intégrée pour la rendre normalement HAUTE // L'interrupteur tirera la broche à la terre momentanément. // Sur une transition haut -> bas en appuyant sur le bouton, le programme générera un nouveau numéro.const int BingoButton =4; // La broche IO numérique 4 est connectée au bouton BINGO avec un contact normalement ouvert// La broche 4 sera pilotée avec la résistance de rappel intégrée pour la rendre normalement HAUT// Le bouton BINGO tirera la broche à la terre/ / Sur une transition haut -> bas en appuyant sur le bouton BINGO un Lightshow démarrera et ensuite le programme se terminera.const int LedPin =6; // La broche 6 d'IO numérique connectée à l'entrée de données (DI) des bandes LED WS 2811 via une résistance de 220 Ohm.int Newnumber =1;int Bingo =1;int SCORE[76];int count =0;long randNumber;int NUMBER =0;int NW_NUMBER =0;int TENSNUMBER =0;int UNITNUMBER =0;#define NUM_LEDS 99 // les 16 premiers sont utilisés pour contrôler (WS 2811) les LED dans les afficheurs à 2 chiffres 7 segments//(deux fois 8 segments sur les deux écrans); les numéros 0 -7 sont pour le numéro UNIT// Les numéros 8 - 15 sont pour le numéro TENS ( les numéros 7 et 15 sont les DP de chaque CHIFFRE)// pour afficher les numéros sur l'affichage du tableau de bord et contrôler les (WS2812) LED les adresses 16 jusqu'à 99 sont utilisées // 24 LEDs sont utilisées pour le rétroéclairage des lettres BINGO et 75 pour le tableau des scores pour permettre l'affichage des numéros BINGO générés;// toutes les LEDs seront contrôlées avec un seul fil ! à partir de LED_PIN 6// en fait, deux types différents de bande LED sont contrôlés (en parallèle) à partir de la même LedPin 6 via deux résistances de 220 Ohm#define BRIGHTNESS 250 // règle la luminosité des LED au maximum (255) Bande Adafruit_NeoPixel =Adafruit_NeoPixel (NUM_LEDS, LedPin, NEO_GRB + NEO_KHZ800);/* Tableau à 2 dimensions avec NUMBER pour segmenter les allocations, chaque NUMBER a sa propre colonne----------------- ---------------------------------- 8 0 13 9 5 1 14 6 12 10 4 2 11 15 3 7 Chiffre 2 Chiffre 1 Les dizaines Les unités 7 et 15 représentent les points décimaux (DP) */// 0 1 2 3 4 5 6 7 8 9 octet SEGMENTarray [8][10] ={ {1,0,1,1,0 ,1,1,1,1,1,}, //segment 0 ou 8 {1,1,1,1,1,0,0,1,1,1,}, //segment 1 ou 9 {1 ,1,0,1,1,1,1,1,1,1,}, //segment 2 ou 10 {1,0,1,1,0,1,1,0,1,1,}, //segment 3 ou 11 {1,0,1,0,0,0,1,0,1,0,}, //segment 4 ou 12 {1,0,0,0,1,1,1, 0,1,1,}, //segment 5 ou 13 {0,0,1,1,1,1,1,0,1,1,}, //segment 6 ou 14 {0,0,0, 0,0,0,0,0,0,0,}, //segment 7 ou 15 };byte color_scheme[] ={ 50, 100, 200, 100, 150, 250, 150, 200, 50, 200, 250, 100, 250, 50, 150, 0, 100, 200, 50, 150, 250, 100, 200, 0, 150, 250, 50, 200, 0, 100, 250, 50, 200, 0, 100, 250, 50, 150, 0, 250, 0, 0} ;//////////////////////// ////////////////////////// le code de configuration qui suit s'exécutera une fois après "Power On" ou après une configuration RESETvoid() { Serial. commencer (9600); pinMode (LedPin, SORTIE); // initialise le LedPin 6 en sortie :pinMode(NewnumberButton, INPUT_PULLUP); // initialise la broche 2 du bouton poussoir en entrée :pinMode(BingoButton, INPUT_PULLUP); // initialise la broche 4 du bouton de bingo en entrée :strip.setBrightness(BRIGHTNESS); strip.begin(); // Initialiser toutes les LED sur "off" strip.show(); for (int t =16; t <24; t++) { strip.setPixelColor(t, 0, 0, 250); // Après la mise sous tension, affichez le mot BINGO sur le tableau de bord avec des caractères bleus strip.show(); // notez que l'ordre des couleurs de la bande LED WS2812 est R,V,B } for (count =0; count <76; count++) { // met toutes les données du tableau SCORE à 0 (les positions du tableau partent de 0 à 75 ; la position zéro n'est pas utilisée) SCORE[count] =0 ; } /*for (int n =0; n <10; n++) // ce code peut être utilisé pour tester tous les nombres de 0 à 9 sur les deux afficheurs 7 segments (les 2 DP ne sont pas testés) { for ( int s =0 ; s <8 ; s++) { int z =SEGMENTarray [s][n] ; entier i =0 + s; entier j =8 + s; strip.setPixelColor(i, z*250, 0, z*50); strip.setPixelColor(j, z*250, 0, z*50); strip.show(); Serial.print("["); Serial.print(n); Serial.print("]"); Serial.print("["); Impression.série(s) ; Serial.print("] =");Serial.print(z); Serial.print(" "); } retard (1500); Serial.println(); }*/}//////////////////////////////////////////// ///// le code de boucle qui suit s'exécutera à plusieurs reprises jusqu'à "Power Off" ou une boucle RESETvoid() { Newnumber =digitalRead(NewnumberButton); if (Newnumber ==LOW) // pas besoin d'un délai court pour éliminer les effets de rebond du bouton car au début LOW la boucle se déroule { randomSeed(millis()); faire { GENERATENEWNUMBER (75); // générer un NW_NUMBER compris entre 1 et 75 } // si le NW_NUMBER existe déjà :générer à nouveau un NW_NUMBER while (NW_NUMBER ==SCORE[NW_NUMBER] * NW_NUMBER); SCORE[NW_NUMBER] =1 ; // mettre un 1 dans le tableau à la position NW_NUMBER NUMBER =NW_NUMBER; TENSNUMBER =entier (NOMBRE / 10); // calcule la valeur décimale du NW_NUMBER et la valeur unitaire UNITNUMBER =NW_NUMBER - (10 * TENSNUMBER); CLEAR DISPLAY (); LIGHTSHOW1 (4, 100); // démarrer lightshow1 CLEARDISPLAY (); //PRINTNUMBERSERIAL(); // imprime le NW_NUMBER généré sur le moniteur série et affiche le nouveau contenu du tableau SCORE DISPLAYNUMBER (TENSNUMBER, UNITNUMBER); AFFICHAGE (); } else { Bingo =digitalRead(BingoButton); if (Bingo ==LOW) retard (3000); // un délai de 3 secondes pour éliminer les effets de rebond et la pression accidentelle du bouton car if (Bingo ==LOW) { BINGOLIGHTSHOW (); for (count =0; count <76; count++) // remet toutes les données du tableau SCORE à 0 et un nouveau tour de BINGO peut être lancé { SCORE[count] =0; } } }}/////////////////FIN DE BOUCLE//////////////////////// /////////////////////////////////////////////////////////////// ////////////////////////////////// Ci-après suivent les fonctions spécifiques qui sont appelées depuis le loopvoid LIGHTSHOW1 ( durée int, uint8_t wait) {for (int t =16; t <24; t++) { strip.setPixelColor(t, 0, 0, 0); // éteint les Leds BINGO avec des caractères bleus tels qu'ils ont été définis lors de la configuration de strip.show(); } for (int k =0; k  

Pièces et boîtiers personnalisés

tekening_gaten_patroon_puntjes_xgW76A8Jmw.svgÀ utiliser comme modèle pour les façades des écrans

Schémas

bingo_sketch_66WRdQITE2.fzz

Processus de fabrication

  1. Fabriquer une machine à écrire pour les devoirs à la maison
  2. horloge IV9 Numitron DIY la plus simple avec Arduino
  3. Voltmètre DIY avec Arduino et un écran Nokia 5110
  4. Roue de mesure simple bricolage avec encodeur rotatif
  5. Moniteur de qualité de l'air DIY avec capteur Sharp GP2Y1010AU0F
  6. Jeu de Pong Arduino 1D DIY avec bande LED WS2812
  7. Machine CNC
  8. UPS compatible HID avec Arduino
  9. Idée de bricolage avec RFID