Índice:

Display de LED em linha Arduino Games: 7 etapas (com imagens)
Display de LED em linha Arduino Games: 7 etapas (com imagens)

Vídeo: Display de LED em linha Arduino Games: 7 etapas (com imagens)

Vídeo: Display de LED em linha Arduino Games: 7 etapas (com imagens)
Vídeo: DISPLAY GIGANTE DE 7 SEGMENTOS 2024, Julho
Anonim
Image
Image
Componentes Principais
Componentes Principais

também conhecido como LED Ladder Display Game System.

Um Attiny-85 equipado com hardware e software para jogar "videogames" repletos de ação, em um display LED em linha.

Possui um display multiplexado de 12 LEDs em escada e suporta até 6 entradas de botão e uma saída de áudio opcional.

É embalado com 4 jogos de habilidade, com vários níveis de dificuldade e algumas variações (atualizado para 16 jogos, quando usado com um MCU ATMega).

[Vídeo]

Etapa 1: componentes principais

Construí meu projeto de maneira modular (duas montagens separadas). Uma submontagem principal do Display; que pode ser usado sozinho. E uma submontagem de entrada de botão. Dessa forma, posso usar o botão ou a montagem da tela novamente em outro projeto. Isso também permite opções de montagem flexíveis.

Eu também trouxe a linha de controle para um cabeçalho de pino para o conjunto de escada de LED para que pudesse utilizar um Arduino Nano (ou um Uno), para desenvolver software para ele, bem como usá-lo em outros projetos. Um Digispark não funcionará devido a outros componentes em sua placa de circuito.

Eu escolhi usar as mesmas atribuições de pinos para a escada de LED como nos instrutíveis anteriores para tornar mais fácil para aqueles que já têm uma implementação de hardware utilizar o software neste instrutível, embora eu não tenha encontrado as atribuições feitas para a lógica mais clara em o software.

As duas linhas entre os módulos são PB4 e aterramento. Como tudo o que está no conjunto de vários botões é resistente e alterna, não é dependente da polaridade e a reversão da conexão não importa.

Com o suporte de mais botões, uma grande variedade de jogos (ou aplicativos) pode ser implementada. Dois dos jogos neste instrutível são jogados melhor com dois botões. Os quatro botões principais podem ser usados para acessar diretamente um jogo associado. Em breve implementarei um jogo que depende do uso de todos os quatro botões principais.

Este projeto usa até seis botões. Quatro principais BTN 1-4. Esses botões podem ser detectados individualmente, mesmo quando dois deles são pressionados simultaneamente. Os outros dois são botões especiais, primeiro há o equivalente ao botão único em projetos anteriores que faz uma conexão rígida entre a entrada PB4 e o aterramento, eu chamo isso de BTN0 ou ESC, pois essa chave sempre pode ser detectada e bloqueará a detecção de qualquer um dos outros. A outra tecla especial é a tecla de função, se pressionada quando o BTN 0-4 é pressionado, pode ser detectada e usada para alterar a funcionalidade.

Neste esboço de jogo de habilidade eu uso:

  • FncKey + Btn1 retornar ao modo menu
  • FncKey + Btn2 avançam o nível de dificuldade (se estiver no nível mais alto, volte para o mais baixo)
  • FncKey + Btn4 instant Pause (pressione qualquer tecla para retomar a pausa)
  • FncKey + Btn 0 ou 3 são indefinidos.

Etapa 2: Lista de peças

Lista de Peças
Lista de Peças

Peças necessárias

  • LEDs, vermelho, amarelo, verde e azul como estes
  • Placas de PCB - itens semelhantes, você pode ter que comprar uma placa maior e cortá-la no tamanho desejado.
  • pino dip socket itens semelhantes
  • Chip Attiny-85
  • resistentes
  • interruptores de botão usados: 12x12x8mm e 6x6x6mm PCB Momentary Push Buttons

recomendado:

  • campainha 5v, tipo ativo
  • um palito de picolé
  • Tira de cabeçalho de pino de 2,54 mm
  • Ferramenta para enrolamento de fio e arame de 30 ga https://www.ebay.com/itm/351798901037 o link acima é para um fio que é mais parecido com 36 ga. Eu gostaria de saber de tal negócio para 30 ga reais. arame

Etapa 3: Destaques de construção

Destaques de construção
Destaques de construção
Destaques de construção
Destaques de construção
Destaques de construção
Destaques de construção
Destaques de construção
Destaques de construção

No conjunto da placa principal, tenho eletricamente o mesmo que outros projetos anteriores de escada de LED, que você pode consultar para obter mais instruções básicas de construção

No entanto, não uso um resistor pull up externo na entrada analógica A2 (PB4), também uso LEDs vermelho, amarelo, verde e azul, em vez de todos de uma cor, o que é desejável para alguns dos jogos que criei para este hardware.

Aqui estão as atribuições de I / O conforme esperado pelos esboços de software anexados:

Projeto MCU AT-85 Uno / Nano

Nomes nome pino # nome brd --------- ---- ---- --------- Vermelho L1-3 PB3 2 D-11 Yel L4-6 PB0 5 D-8 Verde L7-9 PB1 6 D-9 Azul L10-11 PB2 7 D-10 Ain PB4 / A2 3 A-2 Áudio PB5 1 D-3

A única diferença significativa é que tenho dois botões conectados ao PB4. O primeiro vai diretamente do PB4 para o solo, mas sem pull up resistor externo (eu chamo isso de BTN0). Eu também tenho um interruptor de botão (que eu chamo de BTN1) conectado com 75Kohm em série para aterrar. Esta placa principal pode ser usada sem a placa de montagem "Botão", mas com algumas funcionalidades limitadas.

Os resistentes de limitação de corrente que vão para os conjuntos de LEDs devem ser escolhidos com base no brilho dos LEDs de cores diferentes que você usa e no brilho que você deseja. Acabei com 91 Ohms para o conjunto vermelho, 75 para o amarelo, 430 para o verde e 150 Ohms para o azul. Esses valores podem parecer baixos, mas lembre-se de que os leds são multiplexados (geralmente em muito <100% do tempo)

Usei leds de 3 mm e os afastei um pouco. Eu coloquei as pernas do LED em um palito de picolé. Desta forma, todos eles se destacaram na mesma quantidade e acima de todos os outros componentes. Pretendo, em algum momento, montar a unidade apenas com os LEDs saindo de uma moldura.

Eu escolhi fazer o wire-wrap nas interconexões de led. Sem uma placa de circuito impresso especial, isso é mais fácil de fazer do que soldar em locais apertados com muitas interconexões; não tende a produzir shorts e é mais fácil de religar em caso de erro. Com todas as correntes dentro e ao redor do microcontrolador, o fio de 30 ga miliamperes é suficiente.

Botões e resistentes relacionados:

Eu desenvolvi uma configuração única (uma espécie de Y duplo) de resistores e botões, de modo que o software pudesse discernir pressionamentos de botão individuais e duplos (teoricamente, qualquer combinação desses quatro botões pode ser identificada). Eu tentei várias configurações com uma infinidade de valores de resistor em uma planilha procurando a melhor configuração, então simulei no software tentando todas as combinações de resistor possíveis para encontrar o conjunto (que estou usando) que produziria o máximo de diferença mínima de leituras analógicas entre qualquer e todos os pressionamentos de botão simples e duplo. Organizei-os de forma que Btn1, Btn4 e Btn1 + 4 em particular fossem distintos.

Consulte o diagrama da rede de botões acima.

Você precisa cobrir toda a fiação que se interconecta ao PB4 (e possivelmente alterna os contatos e resistores) com fita isolante, cola quente ou qualquer outra coisa que não conduza de forma alguma, pois uma mera resistência de mega-ohm prejudicará a capacidade de determinar quais interruptores são pressionados; e qualquer contato que você fizer enquanto segura uma assembléia faria isso.

Posteriormente instrutíveis associados:

Jogos de 4 botões usando uma entrada analógica /

Dual-Power-for-Your-Portable-Micro-Controller-Proj /

Caixa impressa em 3D para exibição de LED em linha e console e /

Etapa 4: mais opções e notas

Outras opções e notas
Outras opções e notas

Saída de áudio opcional

A saída de áudio opcional usa PB5. Eu conectei uma campainha de 5 V, em série com um resistor de 150 Ohm para limitar sua saída irritante de outra forma. Eu recomendo que você use 50-200 Ohm. Pode-se colocar a campainha em paralelo com uma tampa (2-10uf) para torná-la menos rouca, ou usar um alto-falante de 32 Ohm de driver de 10 mm separado de um conjunto de fones de ouvido estéreo baratos, em vez do resistor e da campainha. Eu gosto disso, para os sons do jogo, melhor como eu tenho.

Por padrão, o Attiny-85 usa PB5 como um reset, efetivo significa que o áudio funcionaria, mas não terá um efeito prejudicial em nenhuma outra operação. Ao usar um Nano ou Uno o áudio funcionará (saindo seu D3). Para obter áudio com o Attiny, você terá que alterar a configuração do pino interno para que o software possa usar PB5 como uma saída. Há ramificações significativas em fazer isso; consulte estes:

forum.arduino.cc/index.php?topic=178971.0

www.instructables.com/id/Simple-and-cheap-F…

e

Geralmente, durante o jogo, um erro ou falha invocará um chilrear ou um som curto de framboesa. Há uma melodia de parabéns quando você completa um nível ou vence, como no pingue-pongue. Acho que ter áudio de acompanhamento realmente aumenta a alegria de jogar.

Botões de tipo de controlador de jogo alternativo

Para meus netos, que são duros com equipamentos, fiz botões separados e duráveis, Btn1 e Btn4, na ponta de longos fios condutores. Veja a foto. Montei os botões em alças improvisadas; com 75Kohm em linha com Btn1 e ~ 37Kohm em linha com Btn4. Em série com o Btn4 eu usei um 36K, um 33K ou até mesmo um 39K poderia ser usado. Com os botões do êmbolo externo em mente, seria uma boa ideia ter um conjunto separado de pinos de cabeçalho, para conectar os botões manuais externos vistos como Btn1 e Btn4.

Necessária fonte de alimentação de qualidade

Como fonte de alimentação, você pode usar a saída USB 5v de um PC, tablet, carregador de parede, banco de energia ou bateria 3,7 Li diretamente.

Eu descobri que ao ligar a unidade a partir de alguns carregadores USB e vários bancos de energia USB, eu notava movimentos e erros ocasionais de comportamento e até mesmo reinicializações. Se você tiver isso, encontre uma fonte de alimentação com melhor regulação, caso contrário, adicionar um capacitor grande (100-1000uf) em + V ao aterramento pode ajudar.

Testando

Também incluí um programa de teste para ajudar a validar e depurar seu hardware. O código é um trabalho em andamento e precisa ser limpo. Espero chegar a isso, mas enquanto isso deve atender às suas necessidades. Recentemente, usei-o apenas com um Nano que dirige os conjuntos de tela e teclado. Você pode usar quase qualquer botão para selecionar itens no modo de menu. Para sair de uma demonstração / teste novamente, pressione qualquer botão. Para sair do teste do botão (# 4), pressione FncKey + Btn1 ou mantenha pressionada a tecla EscKey (aterramento PB4) ou desligue e ligue a alimentação.

Devido às diferenças nas resistências internas e tolerâncias do resistor do MCU, você pode precisar fazer alguns ajustes para que todos os pressionamentos de botão simples e duplo sejam detectados corretamente. Para fazer isso, use o teste 4 (para selecionar, consulte a descrição da operação do menu abaixo) do programa de teste. Observe que eu não usei um resistor pull-up externo, pois planejei outros usos para a entrada PB4 que são incompatíveis com qualquer pull up.

Etapa 5: Visão geral do software

O esboço LadderGames.ino implementa quatro jogos, incluindo algumas versões alternativas.

O esboço pode ser baixado e executado de um ATtiny-85, Nano, Uno etc. Para programá-lo em um chip Attiny, consulte: https://www.instructables.com/id/Program-an-ATtiny… e / ou para programar seu chip ATtiny-85:

Altere o clock interno do ATtiny85 para 8 MHz, conforme o desempenho desejado para o jogo. Referir:

forum.arduino.cc/index.php?topic=276606.0

Este esboço deve ser compatível com a maioria dos projetos de escada de led ATtiny-85 anteriores, sem alteração, mas terá algumas funcionalidades limitadas.

Operação do Menu

Na inicialização, há uma verificação de integridade na forma de uma varredura nos LEDs e um conjunto de bipes. Em seguida, ele entra no modo de menu principal. Cada conjunto de LEDs de uma cor é aceso por alguns segundos em sucessão. Um jogo é selecionado pressionando um botão enquanto um conjunto associado está aceso, jogo 1: Vermelho, jogo 2: Amarelo, jogo 3: Verde, jogo 4: Azul. No modo de menu, Btn2, Btn3, Btn4 podem ser pressionados para ir diretamente para os jogos 2, 3, 4, respectivamente. Assim que um jogo for selecionado, você precisará indicar a variação desejada. Para cada variação disponível, um conjunto de leds coloridos piscará. Basta pressionar o botão que você deseja. As variações, “versões”, para cada jogo são descritas mais detalhadamente abaixo.

A versão um de todos os quatro jogos pode ser jogada com um único botão. Qualquer um conectado entre PB4 e terra (Btn-0), como em instructables LED ladder anteriores, ou com um interruptor que conecta uma carga de 75k ao terra (Btn-1). Qualquer um desses funcionará em jogos quando as instruções falam de um pressionamento de botão não específico.

Para sair de qualquer jogo, você pode usar FncKey + Btn1, segurar EscKey (também conhecido como: Btn0) por 1-2 segundos ou desligar e ligar a alimentação.

Etapa 6: jogo

Jogo 1: Push-It

Esta é uma adaptação do meu jogo 'Push-It' de um dos meus primeiros

www.instructables.com/id/Play-a-Game-with-a…

O objetivo do jogo é aumentar a contagem de piscadas e o número de LEDs acesos para o máximo possível. O Push-It começa com vários flashes, que depois se repetem. Se você apertar o botão após o último flash da série e quando um adicional potencialmente existir, o próximo LED acenderá e a contagem de flashes aumentará em um. Mas se você 'empurrar' antes ou depois do período de um possível flash adicional, a contagem de flashes no conjunto será reduzida.

Cada vez que você consegue aumentar a contagem de flashes, o nível de dificuldade aumenta à medida que o tempo acelera um pouco, tornando cada vez mais difícil chegar a contagens de flashes mais altas.

O número de contagem atual é armazenado na memória EEPROM para reiniciar no mesmo nível mais tarde.

Jogo 2: Ping-Pong

Grande (embora seja o único) jogo competitivo para dois jogadores aqui; onde a bola (único raio de luz) vai de um lado para o outro, cada vez mais rápido, cada vez que é 'rebatida' de volta.

Implementei pela primeira vez este jogo de linha única de luzes nas luzes de botão do painel frontal de um superminocomputador aeroespacial na década de 1970.

Para acertar a bola para a frente e para trás, a raquete apropriada deve acertá-la (botão pressionado) quando ela estiver na posição final (último LED). O primeiro lado a perder perde e as luzes do lado vencedor piscam.

Existem duas variações, uma requerendo apenas um botão (Btn 0 ou 1), que irá acertar a bola em qualquer extremidade; e uma segunda versão, é para duas pessoas frente a frente, o que requer dois botões; botão 1 do lado esquerdo e botão 4 ou 0 do outro. O uso dos botões 1 e 4 é preferível, pois eles não interferem um no outro; cada um pode ser atingido para retornar a bola de sua extremidade, independentemente do estado do outro botão.

O vencedor de um rally é sempre o servidor do próximo.

Jogo 3: Galeria de tiro

Atire em todos os alvos (luzes) para completar o nível. Em cada nível superior, a ação é mais rápida.

Existem duas versões; um onde o site é fixo e os alvos se movem e outro onde o site se move e os alvos estão parados. Em cada caso, um tiro acerta uma luz de alvo; e um erro faz com que um alvo apareça. Quando um alvo está à vista, a mira fica mais brilhante, caso contrário, fica turva.

Na versão um, a visão começa na esquerda (parte inferior) e varre à direita. Na versão 2, a mira é fixada no meio enquanto o alvo se move da direita para a esquerda. Ao olhar para o código, existem versões fantasmagóricas 3 e 4 que podem ser ativadas, mas você coloca seu próprio bem-estar por sua própria conta e risco.

Jogo 4: JumpMan

A ideia é que você esteja percorrendo um nível de jogo em que os objetos vêm e você tem que pular, à medida que avança, eles vêm mais rápido. Em outra versão do jogo, também existem objetos aéreos sob os quais você precisa se abaixar.

Na versão um, existem apenas objetos para saltar. Para pular você deve pressionar o botão quando o objeto chegar à última célula à esquerda; que ilumina quando isso ocorre. Para pular 2 ou mais objetos consecutivos você tem que pular (pressionar) no primeiro e segurar o botão para o resto.

Na versão 2, objetos aéreos (piscando) são adicionados. Esses são saltados por 'pular durante a célula anterior a ela e liberar enquanto ela está na célula final. Apenas um overhead pode piscar de cada vez, então, depois que um passar, você poderá ver outro (não piscando antes) bem abaixo de você. Nunca haverá sobrecargas consecutivas, mas podem ser adjacentes a um ou mais objetos de salto (tipo pedra).

Na versão 3 do jogo você deve usar um botão separado para os objetos suspensos (Btn-2, 4 ou 0 à sua escolha); os saltos requerem Btn-1.

Depois de ter passado por mais de quatro objetos a mais do que falhou, você avança de nível; há um parabéns audiovisual e, em seguida, uma retomada em um ritmo maior de velocidade. Passar por um conjunto de objetos consecutivos conta o mesmo que um objeto individual.

Aconselho você a imprimir as regras de operação dos jogos e relê-las antes de jogar um jogo que não tenha jogado recentemente. Caso contrário, você pode se frustrar; pensando que o jogo não está funcionando corretamente quando de fato está, mas você e o jogo têm modos e expectativas diferentes. Eu mesmo já me intrometi nisso mais do que algumas vezes.

Etapa 7: atualizações, mais jogos

Image
Image

Eu fiz uma caixa de console impressa em 3D para abrigar o display de LED em linha e os botões.

Eu desenvolvi mais jogos que utilizam esse hardware. Confira e divirta-se:

Novos jogos de 'Whack a Mole' a 'Tug of War'

Dezembro de 2016. Agora, no final do link acima, há uma versão unificada do código incluindo todos os 12 jogos.

17 de fevereiro de 2017: Aqui está o último conjunto de jogos para este projeto, agora com 16 jogos (esboço abaixo). Isso será executado em qualquer implementação de MCU com 32 KB de memória de programa flash. Todos, porém, qualquer um a 3 ou 4 dos 16 jogos podem ser colocados em um ATtiny. Eu recomendo usar o Nano 3 arduinos. Os últimos 4 jogos adicionados são 'Le Mans' racing, 'Spray' head to head spray painting contest., 'PIG', tiro em cesta de basquete, 'BiFunc' um jogo de teste de operação binária.

Com um jogo maior e mais diversificado desses jogos, melhorias em suas habilidades de jogo, diversão para jogadores de todos os níveis, é possível. Acho que há muito espaço para melhorias nas corridas de Le Mans por meio do design do layout da pista e do tempo de jogo.

Já escrevi cerca de mais 10 atividades / jogos / funções, algumas das quais espero disponibilizar por volta do outono de 2017.

Além disso, esses jogos de uma linha podem ser modificados para um display LCD 2x16 de 2 linhas, com uma linha de objetos de jogo e outra para algum texto. Já fiz um pouco disso, mas, como estou amparado por projetos até onde posso ver, não sei quando ou se conseguiria fazer isso. Portanto, se alguém estiver motivado para adotar e otimizar esses jogos para um LCD 2x16, por favor, compartilhe comigo e com outras pessoas.

Além dos 4 novos jogos aqui em Menu_16Games.ino, incluí meu projeto e criei instructables relacionados: Caixa de console de jogos LED embutida e alimentação de seu projeto MCU portátil

Espero que muitos tomem o tempo e… APROVEITE esses jogos.

Jogo em grupo: 1– Vermelho 2- Amarelo 3 - Verde 4 - Azul

1 vermelho PushIt PingPong ShootEmUp JumpMan 2 Yel QuickDraw Tug_a_War Chicken Hot_Hands 3 Grn Le_Mans Spray PIG BiFunc 4 Blu SimonDiz Whack_Mole Sea_Hunt Flip_d

2 de setembro de 2017: Capacidade de trabalho aprimorada com velhos botões de joystick externos sujos e barulhentos, no jogo cabeça-cabeça (grupo 2).

13 de dezembro de 2017: Melhoria no manuseio do salto do botão e estabilização da medição, consertou pequenos problemas. Eu tentei usar um capacitor na linha de entrada analógica do botão, mas para ser eficaz resultou em lenta estabilização da medição, produzindo falsas identificações de nível ou o software esperando por tanto tempo aquela ação rápida do jogo foi comprometida.

Abril de 2018: descobri que os acopladores de compressão de 5/8 são ótimos corpos para botões em estilo de êmbolo externo. Como meus filhos gostam de usar um par deles, adicionei pinos de cabeçalho para conectar facilmente dois deles (como Btn1 e Btn4).

Observe que criei outro projeto, em outubro passado, que é construído no hardware deste instrutível. Está no espírito do Halloween e pode ser muito divertido, especialmente para as crianças. Instructable: Ghostly-Psyche-Influenced-Devices

Recomendado: