Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Manufacturing Technology >> Proceso de manufactura

Máquina de bingo Arduino con pantallas de 7 segmentos de tamaño A4

Componentes y suministros

Tablero de clavijas
Hecho por Ningbo Wins tablero Handycraft2 para pantallas de 7 segmentos y 1 para el tablero de puntuación
× 3
tabla de cortar
tabla de cortar de plástico gris para usar en el tablero de puntuación
× 1
Tira de LED digital de 5 m WS2811 con 5050 Leds
muchos proveedores y marcas
× 1
5 m / rollo DC5V ws2812b 300led Direccionable individualmente 60 leds / m 5050 RGB
muchos proveedores y fabricantes
× 1
Cable de audio
para usarse para la conexión entre el tablero de puntuación y las pantallas de 7 segmentos
× 1
Tabla de cortar de plástico translúcido
para usar con las fuentes de las pantallas de 7 segmentos
× 2
Tabla de cortar gris flexible
para usarse en la portada de Score Board
× 1
Arduino UNO
× 1
Resistencia de 221 ohmios
leer 220 Ohm
× 2
condensadores
100 uF
× 2
interruptor de botón grande
momentáneo
× 1
pulsador pequeño (genérico)
× 1
Regulador lineal (7805)
× 1

Herramientas y máquinas necesarias

Herramientas comunes y equipos de prueba
herramientas normales necesarias para muchos proyectos de bricolaje

Acerca de este proyecto

Al caminar en una tienda ACTION, descubrí un LED digital de viaje a un precio aceptable (incluido un adaptador de corriente de 12V e incluso un controlador con control remoto IR). Decidí comprarme uno y empecé a jugar con ellos con el objetivo de controlar la tira de LED con un Arduino Uno en mi caso.

Aunque no se especifica en ninguna parte del paquete o de la tira de LED, pronto descubrí que se trataba de un tipo de tira con segmentos de tres LED 5050 con un controlador WS2811 por cada 3 LED.

Conecté la tira a un Arduino Uno para experimentar con ella usando la biblioteca Adafruit NeoPixel y algún código de ejemplo como RGBW strandtest.

Comencé a hacer una lluvia de ideas y se me ocurrió la idea de utilizar estos viajes para hacer una pantalla de 7 segmentos de tamaño A4. Siete secciones de tira, como se muestra arriba, harían el trabajo más una extra para el punto decimal en la pantalla. Esto hace que sean efectivamente 8 segmentos que se controlarían desde un solo Pin de salida del Arduino y se alimentarían con el adaptador de 12 V que ya se encuentra en el paquete ACTION.

Pero, ¿qué puede hacer con una sola pantalla de 7 segmentos?

Decidí hacer 2 de ellos y usarlos para crear una Máquina de Bingo mostrando números aleatorios entre 1 y 75 después de presionar un botón.

Paso 1:creación de pantallas de 7 segmentos

Todo el proceso de creación de las pantallas es una historia bastante larga, que podría describir en un tutorial aparte. La versión corta de la creación es la siguiente:

Ambas pantallas de tamaño A4 se fabricaron con medios y materiales convencionales. Al usar cortadoras láser e impresoras 3D, todo el proceso sería diferente y quizás más simple. Encontrará muy buenos ejemplos en Internet, p. Ej. YouTube (https://learn.adafruit.com/ninja-timer-giant-7-segment-display/overview) e incluso puedes comprarlos listos para usar.

Me pareció un desafío y divertido hacerlos yo mismo ...

Para las tiras de LED utilicé 16 secciones de 3 LED cada corte de la tira de LED WS2811 de ACTION.

Estos segmentos se conectan soldando cables a los + 12V, GND y Do y Di de las tiras. puede encontrar muchos tutoriales en Internet sobre cómo hacer esto correctamente.

Para la vivienda utilicé un tablero de clavijas asequible y disponible en la tienda ACTION local.

Los nuevos frentes de la carcasa estaban hechos de material de tabla de cortar blanco translúcido de IKEA.

Se utilizó una plantilla para cortar los segmentos de una capa pintada en la parte superior de las tablas (imprimación negra).

Se usó un cable de audio económico (también de ACTION) para conectar las pantallas de 7_segmentos con solo 3 cables (12V, GND y entrada de datos) al Arduino a través de una resistencia de 220Ohm.

Modifiqué la carcasa para permitir una fácil conexión del conector de audio.

Paso 2:creación del cuadro de indicadores

También decidí crear una pantalla de marcador que mostrara los números aleatorios generados, un botón para generar un nuevo número y un "botón de bingo" para finalizar e iniciar una nueva ronda.

El marcador se hace utilizando el mismo tablero de clavijas ACTION como carcasa (descrito arriba). La placa de cubierta está hecha de una tabla de cortar de color gris oscuro (nuevamente de ACTION) con agujeros perforados como se puede ver arriba. La cubierta superior está hecha de una tabla de cortar IKEA. Entre las 2 capas hay una impresión en papel fotográfico y una lámina protectora transparente.

En el interior, pegadas con cinta contra la parte posterior de la tabla de cortar, hay 5 secciones de 15 LED WS2812 cada una más 3 * 8 secciones de tiras de LED para iluminar la palabra "BINGO".

Paso 3:creación del software

Los experimentos iniciales con la codificación y el juego con la tira de LED y las pantallas de 7 segmentos se realizaron utilizando un Arduino y una placa de pruebas sin soldadura.

Un gran botón pulsador momentáneo está conectado a GND y al pin 2 de E / S digital del Uno. Al presionar el botón se inicia la generación de un nuevo número aleatorio. Después de un breve "Light Show 1", el número aleatorio se muestra en las dos pantallas de 7 segmentos.

La tabla utilizada para crear números en las pantallas de 7 segmentos es la siguiente:

Para ayudar a estructurar el Arduino Sketch, hice algunos diagramas de flujo simples con la ayuda de ClickCharts, una versión gratuita para uso no comercial (funciona bien una vez que te acostumbras a algunas limitaciones inherentes)

El número generado se almacena en una matriz denominada PUNTUACIÓN [] que consta de 75 posiciones rellenas con "0" o "1". Si el nuevo número generado ya existe, automáticamente se genera un nuevo número aleatorio.

El nuevo número se ilumina en el marcador (con 75 números) y, al mismo tiempo, el nuevo número se muestra en las pantallas de 7 segmentos

El marcador sigue mostrando todos los números aleatorios generados hasta que se logra un Bingo válido. Un botón llamado "BINGO" finalizará la ronda con un breve "BingoLightShow"

De ahora en adelante, la matriz SCORE se borra y se puede iniciar una nueva ronda.

También se puede iniciar una nueva ronda activando el interruptor de encendido (desconectando la alimentación de 12 V) que reiniciará el Arduino y reiniciará el programa.

Paso 4:la electrónica

Un cargador de 12 V, 2 A suministra energía a la máquina de bingo completa.

La entrada de 12 V en el conector de alimentación Arduino se ha modificado para permitir el cambio de energía (encendido - apagado).

La potencia de 5 V para los 99 LED (75 + 24) utilizados para el marcador se deriva de la potencia de entrada de 12 V por medio de un regulador de voltaje 7805 (que casi puede manejar la corriente consumida por la tira de LED WS2812); Se recomienda instalar un disipador de calor o una versión de potencia (en una actualización probablemente agregaré un transistor de potencia para manejar la potencia requerida de 5 V consumida principalmente por los 99 LED WS2812 dentro del marcador. He hecho el boceto para el Arduino de tal manera que la demanda de potencia del marcador es moderada.

El diseño en un diagrama de Fritzing tiene el siguiente aspecto:

Tenga en cuenta que tanto las secciones de LED de 7 segmentos (12V) como las tiras de LED que iluminan los números 1-75 en el marcador de Bingo están controladas por el mismo pin de salida (6) del Uno.

Desarrollado y producido por Pierre Pennings (noviembre de 2018).

Código

  • BINGO_Machine_rev04.ino
BINGO_Machine_rev04.ino Arduino
Boceto para máquina BINGO con Arduino Uno y 2 pantallas de 7 segmentos de tamaño A4 con marcador electrónico
 / * Este es el código para una máquina de bingo desarrollada y producida por Pierre Pennings (noviembre de 2018) La máquina utiliza 2 DIGITOS grandes A4 Pantallas de 7 segmentos de tamaño fabricadas con tira de LED WS2811 alimentadas con 12V (pares de 3 LED con 1 chip de control) Cada segmento que consta de 3 LED se direcciona con una sola dirección de control Cada pantalla tiene 7 segmentos más un punto decimal (DP) Los números presentados en las 2 pantallas van de 1 a 75, al igual que en un juego de BINGO normal Un botón pulsador momentáneo se conecta a GND y al pin 6 de E / S digital de un ARDUINO UNO Al pulsar el botón se inicia la generación de un nuevo número aleatorio Después de un breve "Light Show 1", el número aleatorio se muestra en las dos pantallas de 7 segmentos. El número generado también se almacena en una matriz llamada SCORE [] que consta de 75 posiciones rellenas con "0" o "1" si el nuevo número generado ya está existe, automáticamente un nuevo número aleatorio Todos los componentes electrónicos, incluido el ARDUINO UNO en sí, se han construido en una pantalla de tablero de puntuación separada.Los 75 números se iluminan con un chip controlador WS2812B con un LED SMD5050 cada uno (alimentado con 5 V). Se logra un BINGO válido. Un botón llamado "BINGO" terminará la ronda con un breve "BingoLightShow". De ahora en adelante, la matriz de PUNTUACIÓN se borra y se puede iniciar una nueva ronda. 12 V) que REINICIARÁ el ARDUINO y reiniciará el programa.Un cargador de 12 V, 2 A suministra energía a la máquina BINGO completa. para los 99 LED (75 + 24) utilizados para el tablero de puntuación se deriva de la potencia de entrada de 12 V por medio de un regulador de voltaje 7805 (que casi puede manejar la corriente consumida por la tira de LED WS2812); se recomienda instalar un disipador de calor o una versión eléctrica. Este código tiene licencia GPL3 +. * / # include  const int NewnumberButton =2; // El pin 2 de E / S digital está conectado al botón Newnumber con un contacto normalmente abierto // El pin 2 se activará con la resistencia pull-up incorporada para hacerlo normalmente ALTO // El interruptor empujará el pin a tierra momentáneamente. // En una transición alta -> baja presionando el botón el programa generará un New Number.const int BingoButton =4; // El pin 4 de E / S digital está conectado al botón BINGO con un contacto normalmente abierto // El pin 4 se activará con la resistencia pull-up incorporada para que sea normalmente ALTO // El botón BINGO empujará el pin a tierra / / En una transición alta -> baja presionando el botón BINGO se iniciará un espectáculo de luces y luego el programa terminará. Const int LedPin =6; // Pin 6 de E / S digital conectado a la entrada de datos (DI) de las tiras de LED WS 2811 mediante una resistencia de 220 ohmios 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 // los primeros 16 se utilizan para controlar (WS 2811) los LED en las pantallas de 2 dígitos de 7 segmentos // (dos veces 8 segmentos en las dos pantallas); los números 0-7 son para el número de UNIDAD // Los números 8-15 son para el número TENS (los números 7 y 15 son los DP de cada DIGIT) // para mostrar los números en la pantalla del tablero de puntuación y controlar los LED (WS2812) Se utilizan las direcciones 16 hasta 99 // Se utilizan 24 LEDs para retroiluminar las letras BINGO y 75 para el marcador para permitir la visualización de los números BINGO generados; // ¡Todos los LEDs se controlarán con un solo cable! de LED_PIN 6 // de hecho, se controlan dos tipos diferentes de tira de LED (en paralelo) desde el mismo LedPin 6 a través de dos resistencias de 220 Ohm # define BRIGHTNESS 250 // establece el brillo de los LED al máximo (255) Adafruit_NeoPixel strip =Adafruit_NeoPixel (NUM_LEDS, LedPin, NEO_GRB + NEO_KHZ800); / * matriz bidimensional con NUMBER para segmentar las asignaciones, cada NUMBER tiene su propia columna ------------------ ---------------------------------- 8 0 13 9 5 1 14 6 12 10 4 2 11 15 3 7 Dígito 2 Dígito 1 Decenas Las unidades 7 y 15 representan los puntos decimales (DP) * /// 0 1 2 3 4 5 6 7 8 9 bytes SEGMENTarray [8] [10] ={{1,0,1,1,0 , 1,1,1,1,1,}, // segmento 0 o 8 {1,1,1,1,1,0,0,1,1,1,}, // segmento 1 o 9 {1 , 1,0,1,1,1,1,1,1,1,}, // segmento 2 o 10 {1,0,1,1,0,1,1,0,1,1,}, // segmento 3 o 11 {1,0,1,0,0,0,1,0,1,0,}, // segmento 4 o 12 {1,0,0,0,1,1,1, 0,1,1,}, // segmento 5 o 13 {0,0,1,1,1,1,1,0,1,1,}, // segmento 6 o 14 {0,0,0, 0,0,0,0,0,0,0,}, // segmento 7 o 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}; ///////////////////////// ////////////////////////// El código de configuración que sigue se ejecutará una vez después de "Encendido" o después de un RESETvoid setup () {Serial. comenzar (9600); pinMode (LedPin, SALIDA); // inicializar LedPin 6 como salida:pinMode (NewnumberButton, INPUT_PULLUP); // inicializar el pin 2 del pulsador como entrada:pinMode (BingoButton, INPUT_PULLUP); // inicializa el pin 4 del botón de bingo como entrada:strip.setBrightness (BRIGHTNESS); strip.begin (); // Inicializar todos los LED en "apagado" strip.show (); para (int t =16; t <24; t ++) {strip.setPixelColor (t, 0, 0, 250); // Después del encendido, muestra la palabra BINGO en el tablero de puntuación con caracteres azules strip.show (); // tenga en cuenta que el orden de los colores de la tira de LED WS2812 es R, G, B} para (cuenta =0; cuenta <76; cuenta ++) {// coloque todos los datos en el Array SCORE a 0 (las posiciones del Array van desde 0 a 75; la posición cero no se utiliza) SCORE [count] =0; } / * for (int n =0; n <10; n ++) // este código se puede usar para probar todos los números del 0 al 9 en las dos pantallas de 7 segmentos (los 2 DP no se prueban) {for ( int s =0; s <8; s ++) {int z =SEGMENTarray [s] [n]; int i =0 + s; int 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 ("["); Serial.print (s); Serial.print ("] ="); Serial.print (z); Serial.print (""); } retraso (1500); Serial.println (); } * /} //////////////////////////////////////////////// ///// el código de ciclo que sigue, se ejecutará repetidamente hasta "Apagar" o un ciclo RESETvoid () {Newnumber =digitalRead (NewnumberButton); if (Newnumber ==LOW) // no es necesario un breve retraso para eliminar los efectos de rebote del botón porque al principio BAJO el bucle procede {randomSeed (millis ()); hacer {GENERATENEWNUMBER (75); // generar un NW_NUMBER entre en el rango de 1 a 75} // si el NW_NUMBER ya existe:generar nuevamente un NW_NUMBER while (NW_NUMBER ==SCORE [NW_NUMBER] * NW_NUMBER); PUNTUACIÓN [NW_NUMBER] =1; // poner un 1 en el Array en la posición NW_NUMBER NUMBER =NW_NUMBER; TENSNUMBER =int (NUMBER / 10); // calcula el valor decimal del NW_NUMBER y el valor unitario UNITNUMBER =NW_NUMBER - (10 * TENSNUMBER); CLEARDISPLAY (); LIGHTSHOW1 (4, 100); // iniciar show de luces1 CLEARDISPLAY (); // PRINTNUMBERSERIAL (); // imprime el NW_NUMBER generado en el monitor serial y muestra el nuevo contenido de la matriz SCORE DISPLAYNUMBER (TENSNUMBER, UNITNUMBER); DISPLAYSCORE (); } else {Bingo =digitalRead (BingoButton); if (Bingo ==LOW) delay (3000); // una demora de 3 segundos para eliminar los efectos de rebote y presionar accidentalmente el botón porque if (Bingo ==LOW) {BINGOLIGHTSHOW (); for (count =0; count <76; count ++) // poner todos los datos en el Array SCORE de nuevo a 0 y se puede iniciar una nueva ronda de BINGO {SCORE [count] =0; }}}} ////////////////// FIN DEL BUCLE /////////////////////////// ///////////////////////////////////// ///////////////// ////////////////////////////////////// A continuación, siga las funciones específicas que se llaman desde el loopvoid LIGHTSHOW1 ( int duración, uint8_t espera) {for (int t =16; t <24; t ++) {strip.setPixelColor (t, 0, 0, 0); // apaga los Leds BINGO con caracteres azules como se puso en la configuración strip.show (); } for (int k =0; k   

Piezas y carcasas personalizadas

tekening_gaten_patroon_puntjes_xgW76A8Jmw.svgPara ser utilizado como plantilla para los frentes de las pantallas

Esquemas

bingo_sketch_66WRdQITE2.fzz

Proceso de manufactura

  1. Haga una máquina de escribir para hacer tareas caseras en casa
  2. El reloj IV9 Numitron más simple de bricolaje con Arduino
  3. Voltímetro de bricolaje con Arduino y una pantalla Nokia 5110
  4. Rueda de medición simple de bricolaje con codificador giratorio
  5. Monitor de calidad del aire para bricolaje con sensor Sharp GP2Y1010AU0F
  6. Juego DIY Arduino 1D Pong con tira de LED WS2812
  7. Máquina CNC
  8. UPS compatible con HID con Arduino
  9. Idea de bricolaje con RFID
  10. Máquina de café inteligente con Arduino y Bluetooth
  11. Detector de metales Arduino IB sensible al bricolaje con discriminación