Hoy tenemos un proyecto con una consola de micro juegos, que cualquiera puede repetir.
Materiales y componentes necesarios:
Este manual fue tomado del canal AlexGyver de YouTube. El microcontrolador para este proyecto necesita esto:
Este es Attiny85 en el paquete DIP, será suficiente para nosotros. Para no soldarlo, tomamos el llamado socket.
También necesitamos una pantalla con Aliexpress, OLED con una resolución de 128 por 32 píxeles.
Los alfileres también son útiles.
Los botones que usaremos aquí son:
Por supuesto, puedes tomar teclados, pero tendrán que estar finalizados, pero realmente no quiero cortar y soldar. El compartimento de la batería es de este tipo:
Y ensamblaremos nuestra consola de juegos con una placa de prueba (si lo desea, puede hacer una placa usted mismo). Vamos a flashear el programador USBasp, pero cualquier AVR servirá.
Diagrama de cableado Los componentes serán los siguientes:
La pantalla se conecta a los pines del bus I2C del microcontrolador. Conectamos botones a otros pines libres. También agregue un interruptor para encender / apagar el sistema. Y básicamente eso es todo, queda por conectar el poder.
El programador carga el firmware en el microcontrolador de acuerdo con el siguiente esquema:
Ahora comencemos con el ensamblaje y organicemos todos los elementos en el tablero. Tratemos de armar y ver cómo se ve todo.
Resultó bastante ascético. No esta mal. El exceso de la placa de pruebas se puede cortar.
Ahora arreglamos todos los componentes simplemente soldando sus patas.
Ahora necesita conectar las conclusiones de acuerdo con el esquema. Para este propósito, el autor recomienda usar un cable de montaje chino delgado.
Y para su comodidad, puede usar este diagrama de conexión reflejado.
Estos cables tienen un aislamiento tan delgado que puede soldarlos directamente. El aislamiento en sí se derretirá y el alambre se soldará.
Luego proceda a sellar el compartimento de la batería y el interruptor. El compartimento también debe fijarse adicionalmente con una pistola de pegamento caliente.
Bueno, eso es todo, el sistema está ensamblado, queda por descargar el firmware. Destellaremos la "piedra" por separado conectándola al programador en el tablero.
El firmware, como con todos los proyectos del autor, es de dominio público y se puede descargar desde. También en la página del proyecto encontrará un diagrama y toda la información necesaria sobre este proyecto.
No nos detendremos en la descarga en detalle, si algo no está claro, siempre puede consultar las instrucciones detalladas para el autor.
Para firmware, solo instale Arduino ide, instale el kernel para trabajar con los microcontroladores de la serie Attiny, seleccione una placa, elija un programador.
Luego seleccionamos la frecuencia de 8 o 16 MHz, abrimos la pestaña "Herramientas", buscamos y seleccionamos "Cargador de grabación".
No hay un cargador allí, pero el microcontrolador se sintonizará a la frecuencia requerida. Luego seleccione la pestaña "Boceto" - "descargar a través del programador". Y esperamos hasta que el boceto se cargue en el microcontrolador.
Ahora sacamos la "piedra" y la insertamos en el corazón de nuestra mini consola de juegos.
Como puedes ver, ¡funciona! Y ahora echemos un vistazo más de cerca a lo que tenemos en el firmware. ATtiny85 es un microcontrolador con 512 bytes de RAM, que es muy pequeño. El 99% de las bibliotecas para trabajar con una pantalla de este tipo utilizan un búfer en el lateral del microcontrolador para volver a dibujar la imagen correctamente, porque esta pantalla no puede leer datos de su propio búfer, y por cierto está ahí.
El búfer para esta pantalla de 128 * 32 píxeles ocupará 512 bytes, si queremos recordar el estado de cada bit, es decir, un píxel.
Además del búfer, también necesitamos almacenar otros datos, por lo que esta opción ciertamente no cabe en la memoria de tal tamaño.
Por lo tanto, se decidió reducir la resolución de pantalla a 64 * 16 píxeles mediante el almacenamiento en búfer de cuadrados de 4 píxeles.
El autor trabajó con esta pantalla directamente y logró implementar con éxito su idea. Un boceto puede ser útil para alguien que quiera trabajar con esta pantalla usando Attiny.
Ahora con respecto al juego en sí. Funciona de manera bastante simple. Una bola se mueve en un temporizador separado, el movimiento consiste en eliminar un punto con las mismas coordenadas y agregar un nuevo punto en las nuevas coordenadas.
El cálculo de coordenadas es simplemente la adición de valores de velocidad a las coordenadas en el sistema de visualización.
Cuando la pelota va más allá de las paredes horizontales, simplemente rebota en ellas, cambiando el componente vertical de la velocidad al opuesto, es decir, con un signo menos (-).
Además, el programa verifica los límites verticales del campo de juego, si la pelota golpea la raqueta (bueno, o como se llame correctamente), rebota y el ángulo de rebote es aleatorio.
Si la pelota rompe la pared detrás de la raqueta, por lo tanto, el jugador ha perdido la ronda actual y el oponente recibe un punto.
El movimiento de la raqueta del jugador se implementa de la misma manera que el movimiento de la pelota, es decir, la vieja raqueta se borra y se dibuja una nueva, ya con nuevas coordenadas. Las coordenadas cambian cuando hace clic en el botón.
Por lo tanto, resulta mucho más rápido que limpiar toda la pantalla y renderizar todos los elementos nuevamente.
Ahora para la raqueta del oponente. Está controlado por IA (inteligencia artificial).
Bueno, la inteligencia artificial se dice en voz alta, por supuesto, pero sin embargo, esta inteligencia hace una cosa muy simple, es decir, hace que la raqueta se mueva en la dirección donde está ahora la pelota, mientras trata de alinear su centro a lo largo del eje vertical con la coordenada vertical de la pelota. Para vencer realmente a tal oponente, el autor lo hizo lento, es decir, calcula su próximo movimiento nuevamente por el temporizador y, por lo tanto, es posible que no tenga tiempo para atrapar la pelota y así repelerlo.
También en el juego se implementaron mecánicas de complejidad creciente. Cada 10 puntos a favor del jugador, la velocidad de la pelota aumenta. Junto con esto, la velocidad de reacción de la IA (oponente) también está creciendo.
Como resultado, aquí hay un pequeño Pong tan simple. No en vano, este videojuego se desarrolló primero, porque incluso un programador novato puede escribirlo. Pero a pesar de la aparente simplicidad del proyecto, el alboroto con la exhibición china tomó cerca de 20 horas de tiempo puro del autor. Al mismo tiempo, no tuvo en cuenta el tiempo dedicado a escribir el código del juego en sí y otros flujos de trabajo relacionados con la depuración y la configuración del circuito.
En esto, el zumbido en sí mismo es el proceso de ensamblaje, no la aplicación.El desarrollo de juegos, incluso aquellos simples, puede ser realmente bastante interesante. Especialmente cuando intentas introducirlos en un microcontrolador muy pequeño. Y cuando la pantalla china te espera a la vuelta de la esquina ...
Eso es todo. Gracias por su atencion Hasta pronto!
Video del autor: