Inicio > Proyectos electrónicos > Pong Tiny: Más diversión con ATTINY45 y VGA

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!

  1. TomF
    07 de octubre 2011 a las 17:32 | # 1

    Muy impresionante! Gracias por compartir esto. Me encanta proyectos en los que se sustituye por la pura energía de la CPU cerebros.

  2. Shandy
    07 de octubre 2011 a las 19:49 | # 2

    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

  3. fvicente
    07 de octubre 2011 a las 20:13 | # 3

    @ 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

  4. Andrés
    08 de octubre 2011 a las 07:16 | # 4

    Hola, sólo quería probar el código de la imagen de vídeo cool! Niza uno! :-)

Protección anti-spam por WP Captcha-Free