Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Manufacturing Technology >> Processo de manufatura

Máquina de Bingo Arduino com monitores de 7 segmentos de tamanho A4 DIY

Componentes e suprimentos

Peg Board
Feito por Ningbo vence o tabuleiro Handycraft2 para monitores de 7 segmentos e 1 para o placar
× 3
placa de corte
placa de corte de plástico cinza para ser usada no placar
× 1
Fita LED digital 5 m WS2811 com 5050 Leds
muitos fornecedores e marcas
× 1
5m / rolo DC5V ws2812b 300led individualmente endereçável 60leds / m 5050 RGB
muitos fornecedores e fabricantes
× 1
Cabo de áudio
a ser usado para conexão entre painel de pontuação e monitores de 7 segmentos
× 1
Tábua de corte em plástico translúcido
a ser usado para as fontes das telas de 7 segmentos
× 2
Tábua de corte flexível cinza
para ser usado na capa do Painel de pontuação
× 1
Arduino UNO
× 1
Resistor 221 ohm
leitura de 220 Ohm
× 2
capacitores
100 uF
× 2
botão de pressão grande
momentâneo
× 1
botão pequeno (genérico)
× 1
Regulador linear (7805)
× 1

Ferramentas e máquinas necessárias

Ferramentas comuns e equipamento de teste
ferramentas normais necessárias para muitos projetos DIY

Sobre este projeto


Ao entrar em uma loja ACTION, descobri uma viagem de LED digital a um preço aceitável (incluindo adaptador de alimentação de 12V e até incluindo um controlador com controle remoto IR). Resolvi comprar um e comecei a brincar com eles com o objetivo de controlar a faixa de LED com um Arduino Uno no meu caso.

Embora em nenhum lugar especificado na embalagem ou na própria faixa de LED, logo descobri que se tratava de um tipo de faixa com segmentos de três 5050 LEDs com um driver WS2811 por 3 LEDs.

Eu conectei a tira a um Arduino Uno para experimentá-la usando a biblioteca Adafruit NeoPixel e alguns códigos de exemplo, como teste de fita RGBW.

Comecei a fazer um brainstorming e tive a ideia de usar essas viagens para fazer um display de 7 segmentos tamanho A4. Sete seções de tira, como mostrado acima, fariam o trabalho, mais uma extra para o ponto decimal no visor. Isso o torna efetivamente 8 segmentos que seriam controlados a partir de apenas um pino de saída do Arduino e alimentados com o adaptador de 12 V já contido no pacote ACTION.

Mas o que você pode fazer com apenas uma tela de 7 segmentos?

Decidi fazer 2 deles e usá-los para criar uma Máquina de Bingo exibindo números aleatórios entre 1 e 75 após o apertar de um botão.





Etapa 1:Fazendo as telas de 7 segmentos


Todo o processo de fabricação dos displays é uma longa história, que eu poderia descrever em um Tutorial separado. A versão resumida da fabricação é a seguinte:

Ambos os monitores de tamanho A4 foram feitos com materiais e meios convencionais. Ao usar cortadores a laser e impressoras 3D, todo o processo seria diferente e talvez mais simples. Você encontra bons exemplos na Internet, por exemplo, YouTube (https://learn.adafruit.com/ninja-timer-giant-7-segment-display/overview) e você pode até comprá-los prontos.

Achei um desafio e divertido fazê-los eu mesmo ..

Para as fitas de LED usei 16 seções de 3 LEDS cada corte da fita de LED WS2811 da ACTION.

Esses segmentos são conectados por fios de solda aos + 12V, GND e Do e Di das tiras. você pode encontrar muitos tutoriais na internet sobre como fazer isso corretamente.

Para a caixa, usei um Peg Board prontamente disponível e acessível na loja ACTION local.





As novas frentes da caixa foram feitas de material de placa de corte translúcido branco da IKEA.

Um modelo foi usado para cortar os segmentos de uma camada pintada no topo das placas (primer preto).

Um cabo de áudio barato (também da ACTION) foi usado para conectar os monitores de 7 segmentos com apenas 3 fios (12V, GND e entrada de dados) ao Arduino por meio de um resistor de 220 ohm.

Modifiquei a caixa para permitir a fácil conexão do conector de áudio.





Etapa 2:fazer o placar


Também decidi criar um painel de pontuação que mostrasse os números aleatórios gerados, um botão para gerar um novo número e um "botão de bingo" para encerrar e iniciar uma nova rodada.

O placar é feito usando o mesmo quadro de AÇÃO como uma caixa (descrito acima). A placa de cobertura é feita de uma placa de corte cinza escuro (novamente da ACTION) com orifícios feitos como pode ser visto acima. A tampa superior é feita de uma placa de corte IKEA. Entre as 2 camadas está uma impressão em papel fotográfico e uma folha de proteção transparente.

No interior, coladas na parte de trás da placa de corte estão 5 seções de 15 LEDs WS2812 cada, mais 3 * 8 seções de tira de LED para iluminar a palavra "BINGO".





Etapa 3:Fazendo o software


Os experimentos iniciais com a codificação e reprodução com a faixa de LED e telas de 7 segmentos foram feitos usando um Arduino e uma placa de ensaio sem solda.

Um grande botão momentâneo é conectado ao GND e ao pino 2 de IO digital do Uno. Apertar o botão inicia a geração de um novo número aleatório. Após um breve "show de luzes 1", o número aleatório é mostrado nos dois visores de 7 segmentos.

A tabela usada para criar números nos visores de 7 segmentos é a seguinte:



Para ajudar a estruturar o Arduino Sketch, fiz alguns fluxogramas simples com a ajuda do ClickCharts, uma versão gratuita para uso não comercial (funciona bem quando você se acostuma com algumas limitações inerentes)



O número gerado é armazenado em uma matriz chamada SCORE [] que consiste em 75 posições preenchidas com "0" ou "1". Se o novo número gerado já existir, automaticamente um novo número aleatório é gerado.

O novo número é aceso no placar (com 75 números) e ao mesmo tempo o novo número é mostrado nas telas de 7 segmentos

O placar continua mostrando todos os números aleatórios gerados até que um Bingo válido seja alcançado. Um botão chamado "BINGO" encerrará a rodada com um breve "BingoLightShow"

A partir de então, a matriz SCORE é apagada e uma nova rodada pode ser iniciada.

Uma nova rodada também pode ser iniciada alternando o botão liga / desliga (desconectando a alimentação de 12 V), que REINICIA o Arduino e reinicia o programa.





Etapa 4:os eletrônicos


Um carregador de 12 V, 2 A fornece energia para a máquina de bingo completa.

A entrada de 12 V no conector de alimentação do Arduino foi modificada para permitir a comutação de energia (liga - desliga).

A energia de 5 V para os 99 LEDs (75 + 24) usados ​​para o placar é derivada da energia de entrada de 12 V por meio de um regulador de tensão 7805 (que pode quase lidar com a corrente puxada pela faixa de LED WS2812); Recomenda-se instalar um dissipador de calor ou uma versão de energia (em uma atualização, provavelmente adicionarei um transistor de energia para lidar com a energia 5V necessária consumida principalmente pelos 99 LEDs WS2812 dentro do placar. Fiz o esboço para o Arduino dessa forma que a demanda de energia do painel de avaliação é moderada.

O layout em um diagrama de Fritzing é o seguinte:

Observe que as seções de LED de 7 segmentos (12 V) e as faixas de LED iluminando os números 1 a 75 no placar do Bingo são controladas por um único pino de saída (6) do Uno.

Desenvolvido e produzido por Pierre Pennings (novembro de 2018).

Código

  • BINGO_Machine_rev04.ino
BINGO_Machine_rev04.ino Arduino
Sketch for BINGO Machine com Arduino Uno e 2 displays de 7 segmentos de tamanho A4 com placar eletrônico
 / * Este é o código para uma máquina de bingo desenvolvida e produzida por Pierre Pennings (novembro de 2018). A máquina usa 2 DIGIT grandes A4 displays de 7 segmentos feitos com faixa de LED WS2811 alimentada com 12V (pares de 3 LEDs com 1 chip de controle) Cada segmento consistindo de 3 LEDs é endereçado com apenas um endereço de controle Cada display possui 7 segmentos mais um ponto decimal (DP) Os números apresentado nos 2 visores vão de 1 a 75, assim como em um jogo BINGO normal. Um botão momentâneo é conectado ao GND e ao pino IO digital 6 de um ARDUINO UNO. Pressionar o botão inicia a geração de um novo número aleatório. "Light Show 1" o número aleatório é mostrado nos dois visores de 7 segmentos O número gerado também é armazenado em um array chamado SCORE [] consistindo em 75 posições preenchidas com "0" ou "1" se o novo número gerado já estiver existe, automaticamente um novo número aleatório ber é gerado Todos os eletrônicos, incluindo o próprio ARDUINO UNO, foram construídos em um display separado do placar. Os 75 números são iluminados com um chip controlador WS2812B com um LED SMD5050 cada (alimentado com 5 V). O placar mostra todos os números aleatórios gerados até um BINGO válido é alcançado. Um botão chamado "BINGO" terminará a rodada com um curto "BingoLightShow". A seguir, a matriz de PONTUAÇÃO é apagada e uma nova rodada pode ser iniciada. Uma nova rodada também pode ser iniciada alternando o interruptor de força (desconectando o 12V power) que irá REINICIAR o ARDUINO e reiniciar o programa Um carregador de 12V, 2A fornece a energia para a máquina BINGO completa A entrada de 12 V no conector de energia do ARDUINO foi modificada para permitir a comutação (liga - desliga) A energia de 5 V para os 99 LEDs (75 + 24) usados ​​para o Quadro de pontuação é derivada da alimentação de entrada de 12 V por meio de um regulador de tensão 7805 (que quase pode lidar com a corrente puxada pela faixa de LED WS2812); instalar um dissipador de calor ou uma versão avançada é recomendado. Este código é licenciado sob a licença GPL3 +. * / # include  const int NewnumberButton =2; // O pino 2 de E / S digital está conectado ao botão Newnumber com um contato normalmente aberto // O pino 2 será acionado com o resistor pull-up embutido para torná-lo normalmente ALTO // A chave puxará o pino para o aterramento momentaneamente. // Em uma transição alto -> baixo, pressionando o botão, o programa irá gerar um Novo Número.const int BingoButton =4; // O pino 4 digital IO está conectado ao botão BINGO com um contato normalmente aberto // O pino 4 será acionado com o resistor pull-up embutido para torná-lo normalmente ALTO // O botão BINGO puxará o pino para o aterramento / / Em uma transição alto -> baixo, pressionando o botão BINGO, um show de luzes será iniciado e, em seguida, o programa será encerrado.const int LedPin =6; // Digital IO pin 6 conectado ao Data In (DI) das faixas de LED WS 2811 por meio de um resistor de 220 Ohm 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 // os primeiros 16 são usados ​​para controlar (WS 2811) os LEDs nos displays de 7 segmentos de 2 dígitos // (duas vezes 8 segmentos nos dois visores); os números 0 -7 são para o número UNIT // Os números 8 - 15 são para o número TENS (os números 7 e 15 são os DPs de cada DÍGITO) // para exibir os números no Painel de Pontuação e controlar os LEDS (WS2812) os endereços 16 até 99 são usados ​​// 24 LEDs são usados ​​para iluminar as letras BINGO e 75 para o placar para permitir a exibição dos números BINGO gerados; // todos os LEDs serão controlados com apenas um fio! do LED_PIN 6 // na verdade, dois tipos diferentes de faixa de LED são controlados (em paralelo) do mesmo LedPin 6 por meio de dois resistores de 220 Ohm # define BRIGHTNESS 250 // define o brilho dos LEDs para o máximo (255) Adafruit_NeoPixel strip =Adafruit_NeoPixel (NUM_LEDS, LedPin, NEO_GRB + NEO_KHZ800); / * array bidimensional com NUMBER para segmentar alocações, cada NUMBER tem sua própria coluna ------------------ ---------------------------------- 8 0 13 9 5 1 14 6 12 10 4 2 11 15 3 7 Dígito 2 Dígito 1 Dez unidades 7 e 15 representam os pontos decimais (DP) * /// 0 1 2 3 4 5 6 7 8 9 byte SEGMENTarray [8] [10] ={{1,0,1,1,0 , 1,1,1,1,1,}, // segmento 0 ou 8 {1,1,1,1,1,0,0,1,1,1,}, // segmento 1 ou 9 {1 , 1,0,1,1,1,1,1,1,1,1,}, // segmento 2 ou 10 {1,0,1,1,0,1,1,0,1,1,}, // segmento 3 ou 11 {1,0,1,0,0,0,1,0,1,0,}, // segmento 4 ou 12 {1,0,0,0,1,1,1, 0,1,1,}, // segmento 5 ou 13 {0,0,1,1,1,1,1,0,1,1,}, // segmento 6 ou 14 {0,0,0, 0,0,0,0,0,0,0,}, // segmento 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}; /////////////////////////// ////////////////////////////// o código de configuração que se segue, será executado uma vez após "Ligar" ou após um RESETvoid setup () {Serial. começar (9600); pinMode (LedPin, OUTPUT); // inicializa o LedPin 6 como uma saída:pinMode (NewnumberButton, INPUT_PULLUP); // inicializa o botão do pino 2 como uma entrada:pinMode (BingoButton, INPUT_PULLUP); // inicializa o pino 4 do bingobutton como uma entrada:strip.setBrightness (BRIGHTNESS); strip.begin (); // Inicializa todos os LEDs para "desligar" strip.show (); para (int t =16; t <24; t ++) {strip.setPixelColor (t, 0, 0, 250); // Depois de ligar, mostra a palavra BINGO no painel de pontuação com caracteres azuis strip.show (); // observe que a ordem das cores da faixa de LED WS2812 é R, G, B} para (contagem =0; contagem <76; contagem ++) {// coloque todos os dados na pontuação do array em 0 (posições do array vão de 0 para 75; a posição zero não é usada) SCORE [contagem] =0; } / * for (int n =0; n <10; n ++) // este código pode ser usado para testar todos os números de 0 a 9 nas duas telas de 7 segmentos (os 2 DPs não são testados) {para ( int s =0; s <8; s ++) {int z =matriz SEGMENTAR [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 (""); } atraso (1500); Serial.println (); } * /} //////////////////////////////////////////////// ///// o código de loop que segue, será executado repetidamente até "Desligar" ou um loop RESETvoid () {Newnumber =digitalRead (NewnumberButton); if (Newnumber ==LOW) // não há necessidade de um pequeno retardo para eliminar os efeitos de salto do botão porque no início LOW o loop continua {randomSeed (millis ()); faça {GENERATENEWNUMBER (75); // gera um NW_NUMBER entre no intervalo de 1 a 75} // se o NW_NUMBER já existe:gere novamente um NW_NUMBER enquanto (NW_NUMBER ==SCORE [NW_NUMBER] * NW_NUMBER); SCORE [NW_NUMBER] =1; // coloca um 1 no Array na posição NW_NUMBER NUMBER =NW_NUMBER; TENSNUMBER =int (NUMBER / 10); // calcula o valor decimal de NW_NUMBER e o valor da unidade UNITNUMBER =NW_NUMBER - (10 * TENSNUMBER); CLEARDISPLAY (); LIGHTSHOW1 (4, 100); // inicia lightshow1 CLEARDISPLAY (); // PRINTNUMBERSERIAL (); // imprime o NW_NUMBER gerado no monitor serial e mostra o novo conteúdo do array SCORE DISPLAYNUMBER (TENSNUMBER, UNITNUMBER); DISPLAYSCORE (); } else {Bingo =digitalRead (BingoButton); se (Bingo ==BAIXO) retardo (3000); // um atraso de 3 segundos para eliminar os efeitos de salto e o pressionamento acidental do botão porque if (Bingo ==LOW) {BINGOLIGHTSHOW (); for (count =0; count <76; count ++) // coloque todos os dados no Array SCORE de volta a 0 e uma nova rodada de BINGO pode ser iniciada {SCORE [count] =0; }}}} ////////////////// END of LOOP ///////////////////////////// /////////////////////////////////////// /////////////// //////////////////////////////////////// A seguir seguem as funções específicas que são chamadas de dentro do loopvoid LIGHTSHOW1 ( duração int, uint8_t esperar) {for (int t =16; t <24; t ++) {strip.setPixelColor (t, 0, 0, 0); // desliga os Leds do BINGO com caracteres azuis conforme colocado na configuração strip.show (); } para (int k =0; k  

Peças personalizadas e gabinetes

tekening_gaten_patroon_puntjes_xgW76A8Jmw.svgPara ser usado como um modelo para as frentes das telas

Esquemas

bingo_sketch_66WRdQITE2.fzz

Processo de manufatura

  1. Faça uma máquina de escrever trabalhos de casa DIY em casa
  2. DIY mais simples relógio IV9 Numitron com Arduino
  3. Voltímetro DIY com Arduino e um visor Nokia 5110
  4. Roda de medição simples DIY com codificador rotativo
  5. Monitor de qualidade do ar faça você mesmo com sensor Sharp GP2Y1010AU0F
  6. Faça você mesmo Arduino 1D Pong Game com WS2812 LED Strip
  7. Máquina CNC
  8. UPS compatível com HID com Arduino
  9. Ideia DIY com RFID
  10. Máquina de café inteligente com Arduino e Bluetooth