Tiny Pong: Más diversión con ATTINY45 y VGA
Todavía estoy esperando a mi barata módulo Bluetooth de China , que servirá como interfaz de entrada para mi proyecto de cuadro de indicadores . Mientras tanto, yo te mostraré cómo convertir su microcontrolador ATtiny en un juego de Pong (sin entrada hasta ahora).
Por lo tanto, he usado la fuente como un cuadro de indicadores de base y cambió un poco la disposición de las patillas.
ATTINY45
+ ----------------- +
| |
EN ---- | 1 (PB5) (VCC) 8 | ---- 5 V
22pF | |
+ - | | ---- + ------ | 2 (PB3) (PB2) 7 | ---- HSYNC
| [] XTAL | |
+ - | | ---- + ------ | 3 (PB4) (PB1) 6 | ---- VSYNC
| 22pF | |
+ --------------- | 4 (GND) (PB0) 5 | ---- RGB
| | |
GND + ----------------- +
Ahora el RGB se encuentra conectado a PB0, y hay una buena razón para esto. Sigo usando la misma técnica de almacenar lo que quiero hacer en los registros, pero en lugar de 4, esta vez estoy usando 15 por lo que puede lograr una resolución horizontal de 120 por 96 para que los píxeles de alguna manera al cuadrado. Ahora, para ser capaz de caminar a través de los 120 bits y gire el pin RGB de encendido / apagado en consecuencia (y de manera uniforme) que necesitaba para recortar el código, la eliminación de los bucles (por lo que verá un montón de código similar en la parte que hace que el línea) y el condicional omitir que ha sido sustituido por un "Suma con acarreo" después del cambio en un registro temporal que se utiliza con "fuera", que es menos costoso que "OSE" y "CBI".
Así, en términos de optimización de código, esto:
; R1 bit 0 rar r16, 1 LSL r1 ADC R16, R22 puerto de salida, r16 ... 120 repite el tiempo (8 veces por bit y 15 veces por registro)
Es mejor que:
LDI R16, 0x08 line44: rol r8 BRCC rgboff44 nop ; RGB PUERTO OSE, RGB, OSE = 2 relojes rjmp cont44 rgboff44: ; RGB fuera PUERTO CBI, RGB; ICC = 2 relojes nop nop cont44: diciembre r16 nop nop nop nop nop brne line44
Hay también otras partes del código que pueden ser de interés. Por ejemplo, he usan LFSR añadir algunas variables pseudo-aleatorios a la dirección de la pelota y la paleta de los movimientos de "computadora". Además, he utilizado el algoritmo de Bresenham la línea para determinar la posición de la bola.
La parte que falta, es todavía la entrada. No estoy seguro de cómo va a funcionar con un solo pasador disponible, pero creo que voy a trabajar algo con el módulo Bluetooth y una de las señales de sincronización (si fuera posible).
He tratado de agregar un poco de pantalla de presentación o "splash", pero la memoria del programa es tan pequeño que he superado con rapidez los 4096 bytes disponibles.
Descargue el código fuente Pong Tiny 1.0 y disfruta!

Muy impresionante! Gracias por compartir esto. Me encanta proyectos en los que se sustituye por la pura energía de la CPU cerebros.
Me encanta este, aunque podría u intentar un simple control de la pantalla de un ordenador usando algo como una foto de 12v y luego adaptar en él u podría hacer un Car PC lol trabajo de Di-s ur juego de mesa
@ TomF
Gracias! He recibido algunas buenas ideas sobre cómo utilizar mi única patilla izquierda para controlar las paletas, dará trato al llegar algo de tiempo libre ... ¡Salud
Hola, sólo quería probar el código de la imagen de vídeo cool! Niza uno!