Colocando o jogo "Cobra" na tábua de pão. Parte 2: exibição "vetor"

Na primeira parte, montamos uma máquina com a lógica do jogo. Mais precisamente, não o jogo inteiro, mas apenas o movimento da própria serpente. Nesta parte final, descobriremos como conectar a tela e terminar todo o circuito. Alta resolução - Clique para clicar




Desenhe uma cauda


Já temos uma cabeça que corre sozinha no campo 8 × 8, agora precisamos desenhar um rabo. Este não é um ponto, mas muito, e simplesmente não podemos transferir as coordenadas (X, Y) para os decodificadores.

Geralmente, em matrizes como a nossa, uma “ indicação dinâmica ” é usada e a versão linha por linha : quando, por sua vez, o conteúdo de cada linha como um todo é exibido. Em nossas condições, para isso, teremos que armazenar em algum lugar todos os 64 bits ou, de alguma maneira complicada, calcular o valor de cada linha. Mas há outra opção para indicação, também é bastante dinâmica no sentido em que nem todos os pontos se acendem ao mesmo tempo. Podemos usar algo como uma " exibição vetorial»- exibe cada ponto sucessivamente, fornecendo suas coordenadas para a tela. A cada momento específico, apenas um pixel será gravado, o que conduziremos pela tela.

Como o número de pontos conosco pode ser diferente (dependendo do comprimento da cauda), o brilho da imagem resultante também mudará com o curso do jogo e o crescimento da própria cobra. Para evitar que isso aconteça, reservaremos um número fixo de quadros (10 = 1 quadro para a cabeça, 1 para a maçã e 8 para a cauda) e desligaremos a tela para obter pontos desnecessários. Células A - maçã, cabeça H, cauda T #. Desenhado em wavedrom




Para exibir, também precisamos de um autômato. Esta máquina terá várias partes: uma delas é um contador de quadros, que simplesmente ignorará 10 estados em um círculo. Vamos usar o IE18 e alguma lógica para esses propósitos.



A coisa mais simples é tirar a cabeça, nesse quadro, apenas ligamos a tela e alimentamos no barramento x / y o valor que a máquina automática nos fornece. Para fazer isso, use o buffer AP6 (você pode usar o AP5, mas ele não possui uma pinagem tão conveniente).
Em seguida, precisamos desenhar um rabo. Para fazer isso, vamos lembrar em nosso estado o que acabamos de pintar. Adicione a direção de crescimento da cauda a ela (usando o esquemada parte anterior) e exibir. Para saber que precisamos produzir a cauda, ​​basta comparar o número do quadro com o comprimento da cauda usando o comparador de 4 bits SP1 (U13). Armazenaremos as coordenadas anteriores no registro de 8 bits IR37 (ou IR27, elas acabaram de terminar ...) e, para novas, usamos EEPROM, a tabela para a qual já geramos na primeira parte. A direção da seção desejada da cauda será obtida da máquina de jogo usando os multiplexadores KP15 aplicando o número do quadro às entradas de endereço. E não devemos esquecer que mantemos a direção da cabeça, que é oposta à direção do crescimento da cauda, ​​o que significa que um dos componentes deve ser invertido. Felizmente, você não precisará instalar um inversor separado, porque o KP15 tem uma saída inversa. Total:


A máquina ficou um pouco mais confusa, mas, no entanto, o princípio de operação é o mesmo de todos os outros.

Uma maçã


Esta é a parte mais "suja" do nosso esquema. Em primeiro lugar, porque requer uma posição aleatória da maçã, e nossas máquinas não têm uma gota de aleatoriedade. Em segundo lugar, precisamos emitir o sinal de comer uma maçã de uma máquina para outra, enquanto as máquinas têm um sinal de relógio diferente. De uma maneira inteligente, isso é chamado de cruzamento do domínio do relógio, mas faremos uma muleta simples.

Onde obter aleatoriamente? Você pode criar um gerador pseudo-aleatório, mas isso exigirá uma quantidade não-trivial de lógica. Outra opção é usar um relógio com uma frequência diferente, de preferência não muito estável, mas nossos NE555s não diferem na estabilidade de qualquer maneira. No circuito multivibrador, você pode adicionar alguns elementos barulhentos ou não lineares ao seu gosto (eu adicionei em série um resistor JFET com um obturador pendurado no ar). Receberemos uma coordenada aleatória e a armazenaremos em um contador de 6 bits. Não há chips de 6 bits prontos, então vamos conectar dois casos do IE10:



No mesmo nó, colocaremos um buffer para exibir a maçã na tela pelo sinal de habilitação. E também um comparador para entender que o que agora é exibido na tela coincide com a maçã (dois SP1). Nós não apenas compararemos a maçã consigo mesma, mas usaremos o quarto bit do comparador e daremos um sinal de permissão de um lado e um do outro.

E aqui nos espera um truque sujo: dependendo da série do microcircuito, do atraso do sinal de resolução, da capacitância parasitária da tábua de pão e da fase da lua, o comparador pode ligar um pouco antes do desligamento do driver do U23. Mais claramente o que está acontecendo:



Devido ao esquema de sincronização selecionado (sobre isso mais tarde), essa falha irá interferir conosco. Seria correto suprimi-lo com a ajuda de um atraso, por exemplo, de vários inversores, ou mesmo espalhar a inclusão e a comparação em diferentes fases. Mas eu já estava cansado o suficiente e esmaguei-o com um capacitor C5, já que essa é a parte suja do circuito :)

Cronometrando e escolhendo uma nova maçã


Como o gerador principal do U7 possui quadros de relógios, temos 10 deles; depois, dividiremos essa frequência por 16 usando outro contador IE10 (U19) e usá-lo para registrar as etapas. O sinal de que a cabeça coincide com a maçã aparece em apenas um quadro de 10 e não durará até que a frente do pulso troque o quadro. Aqui precisamos de um circuito de sincronização. Decidi optar pela opção mais simples: injetaremos o sinal na entrada assíncrona do gatilho e o redefiniremos a cada nova etapa da máquina receptora.



Na saída do gatilho, obtemos um sinal para adicionar outra célula da cauda (U6), bem como iniciar o contador que armazena as coordenadas da cabeça (U21, U22), isso gerará uma nova maçã, possivelmente aleatória.

Circuito inteiro



Ótimo esquema de cliques. E como fica na tábua de pão - no início do artigo

Peças e Componentes


tábuas de pão


Você pode pegar placas de desenvolvimento chinesas de Ali, mas problemas com contatos ruins levarão muito mais tempo do que a montagem direta do circuito. Boas pranchas são recomendadas por Ben Eater, são as BB830 (brancas) ou WBU-202 (amarelas). Um conjunto de fios também é melhor para levar o Wisher (WJW-60B), e qualquer conjunto chinês, mesmo o mais barato, será usado como macio.

microcircuitos


Tentei montar na série doméstica mais popular, KP1533. No Ocidente, esta é a série 74ALS, mas não era de todo popular. Nesse esquema, não há parâmetros críticos para tempos ou capacidade de carga, para que você possa realizar com segurança uma série de K555 (74LS) ou mesmo K155 (SN74). Dos importados, você pode usar o 74HC (mas, para obter os níveis de compatibilidade, você precisará de quase todos os chips desta série) ou o 74HCT, que é totalmente compatível com as séries TTL e CMOS.

Encontrar microcircuitos domésticos provou ser uma tarefa assustadora: ninguém precisa deles em lojas online populares e vendeu todos os restos há muito tempo. Coletei alguns chips em lojas off-line locais, outros tiveram que ser encomendados na Internet, mas muitos fornecedores não estão interessados ​​em mexer em pequenos pedidos, por isso ainda era divertido ...

A lista técnica resultante ficou assim (através de uma barra, possíveis substituições são indicadas):

──────────────────────────────────────────────────────
          │ 1× *1 74*04
                │ 1× *3 74*00
                │ 1× *1 74*20
         │ 1× *2 74*74
          │ 2× *6 74*245 / *5 74*244 ( )
     │ 3× *1 74*85
  │ 2× *15 74*251 / *7 *151
        │ 1× *18 *163
                │ 4× *18 *163 / *10 *161
        │ 3× *27 74*377 / *37 74*574 ( )
                │ 1× *37 74*574 / *27 74*377 ( )
EEPROM          │ 3× AT28C16 / CAT28C16
     │ 1× *7 74*138 / 4 74*155 ( )
                │ 1× 5611 CD4028 ( ) /  AT28C16
       | 2× 10061 NE555
──────────────────────────────────────────────────────

Total


Espero que você tenha gostado desse esquema e, talvez, alguém levante a mão para repeti-lo ou faça algo ainda mais interessante)) Você

pode assistir ao vídeo no YouTube:

nos comentários da parte anterior, eles recomendaram a filtragem em uma matriz de LED, isso é uma coisa muito boa, mas com pouca iluminação, você pode ficar sem ela. É

possível fazer o download aqui de um arquivo com o circuito EEPROM e os despejos .



Materiais usados


1. O livro de Harris e Harris que nunca se cansa de recomendarYuripanchul- para orientação geral.

2. Referência Biryukova S.A. - para procurar pinagens de microcircuitos específicos.

os dois livros podem ser encontrados em PDF, mas a versão impressa é melhor

3. O site de Ben Eater e seu canal no YouTube são uma inspiração))

4. Wavedrom é para desenhar diagramas

Para todos que leram até o fim, obrigado por sua atenção!

All Articles