Una guía para principiantes sobre el uso de una Raspberry Pi con una placa de prueba para crear un juego de Simon

La protoboard te permite crear circuitos sin tener que soldar nada. Es una gran herramienta para experimentar con la electrónica, pero puede ser un poco intimidante. Crear un proyecto puede ayudarlo a mantenerse motivado mientras aprende.

Hay muchos juegos simples que pueden ayudarlo a crear grandes proyectos para principiantes usando Raspberry Pi. Uno de los juegos fáciles con los que puedes empezar es Simon. el juego de simon juego de memoria Una serie de luces parpadean en orden aleatorio y el jugador debe recordar la secuencia. A medida que el jugador avanza, la longitud de la secuencia aumenta.

Imagen de una guía para principiantes sobre el uso de una Raspberry Pi con una placa de pruebas para crear el juego Simon | 1Y4ORT_k9jP5WeOJFp0-l2Q-DzTechs

Componentes necesarios

Para comenzar, necesitará lo siguiente:

  • Dispositivo Raspberry Pi.
  • Tarjeta microSD Flash se ha hecho para el sistema operativo Raspbian OS sobre su.
  • 4 luces LED de diferentes colores.
  • 4 resistencias (desde 220 ohmios hasta 1 kilo ohmio).
  • 4 botones.
  • 1 tablero de experimentación.
  • Enchufe los cables para conectar todo.

Puede usar cualquier modelo de Raspberry Pi para este proyecto, pero los modelos Pi Zero no se conectan fácilmente a las placas de prueba sin un poco de soldadura. Independientemente del modelo que esté utilizando, también necesitará una fuente de alimentación, un monitor, un teclado y un mouse.

Si no ha configurado una Raspberry Pi antes, puede aprender cómo configurar todo para este tutorial en Guía para principiantes de Raspberry Pi.

Escribirá código Python en este tutorial, puede usar cualquier editor de texto para escribirlo, pero puede encontrar un editor de código más fácil. Muchos de ellos ya están instalados en el sistema operativo Raspberry Pi, y Thonny está diseñado para ser útil para los principiantes. Independientemente de lo que use, deberá poder guardar y ejecutar el código para seguir este tutorial.

Primeros pasos con la placa de pruebas

El Raspberry Pi tiene dos filas de pines de entrada/salida de propósito general (GPIO). Estos pines le permiten conectar varios componentes externos a su Raspberry Pi. Algunos pines envían información, otros proporcionan energía y algunos conectan a tierra sus dispositivos electrónicos.

Imagen de una guía para principiantes sobre el uso de una Raspberry Pi con una placa de pruebas para crear el juego Simon | 1r_XmhhZ65UIdcHpRpSRBiA-DzTechs

Comenzaremos agregando un LED a nuestra placa de pruebas.

Comience conectando el pin GPIO a su placa. No importa qué pin, siempre que sea un pin GPIO y no un pin de alimentación o un pin de tierra. Arriba hay un diagrama de los pines GPIO, que lo ayudará a decidir qué pin usar. Este tutorial usa Pin Pin 18, también llamado GPIO 24.

El pin proporcionará algo de energía a la placa y permitirá que Raspberry Pi se comunique con los componentes de la placa. Luego, conecte el pin 6 en el Pi al cable de tierra de la placa. Esto pondrá a tierra la placa y permitirá que se creen circuitos eléctricos.

Imagen de una guía para principiantes sobre el uso de una Raspberry Pi con una placa de pruebas para crear el juego Simon | 1BrIH2-5CE_U5B4_AgnQ3tw-DzTechs

La potencia que proviene de Raspberry es demasiado alta para conectar el LED directamente. El uso de una resistencia reduce el nivel de potencia y evita que el LED se queme. Conecte un lado de la resistencia a la misma línea a la que estaba conectado el pin GPIO y el extremo al otro lado de la placa. Luego coloque el lado positivo del LED después de la resistencia eléctrica. El terminal negativo del LED se puede conectar directamente al lado negativo. El resultado final debería parecerse al gráfico anterior. Revise sus cables a fondo y encienda el Pi. La lámpara debe encenderse.

Ahora, ha creado un circuito con su Raspberry Pi que puede controlar usando su código.

Usando código Python para controlar las luces

Este tutorial lo lleva a través del código a través de los pasos, pero si alguna vez desea volver al código final, está disponible en Pastebin.

En este momento, la energía va al LED, pero queremos controlar cuándo se enciende y se apaga. El siguiente código de Python nos permitirá hablar con el tablero.

import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BOARD)
GPIO.setwarnings(False)
red = 18
GPIO.setup(red, GPIO.OUT)
GPIO.output(red, GPIO.LOW)

Las primeras líneas son las que definen las cosas. Se importa la biblioteca Raspberry Pi GPIO. donde nos permite como GPIO Consulte la variable RPi.GPIO como GPIO para ahorrar un poco de escritura. El modo pin GPIO está configurado para TABLERO. No tiene que usar esta configuración, pero puede ser más fácil hacer referencia a los pines por su orden en las filas de GPIO.

Finalmente, establecemos las advertencias en falso. Esto detendrá las advertencias innecesarias.

Las últimas tres líneas controlan el LED. El LED rojo está conectado al pin 18 de GPIO. En lugar de recordar esto, almacenará la variable rojo Lugar. Posteriormente se informa GPIO.configuración Nuestro software envía la información al pin rojo. Finalmente, configuramos la salida GPIO en el pin rojo para low. Cuando ejecute este programa, la luz se apagará. Para volver a encenderlo, cambie GPIO.BAJO A GPIO.ALTO y vuelva a ejecutar el programa.

Guarde el código y haga clic en Ejecutar Para verlo en acción. Si no hay un botón de ejecución en el editor de código, guárdelo con cualquier nombre (myfilename) y ejecute el comando python minombredearchivo.py en la ventana Terminal. Primero deberá ir al mismo directorio que el nuevo archivo de Python.

Añadir más luces LED

Para crear el juego Simon, necesitamos cuatro LED de diferentes colores. Los mismos pasos que usó para configurar el LED rojo se pueden usar para configurar los otros tres. Su cableado debe verse como el siguiente diagrama:

Imagen de una guía para principiantes sobre el uso de una Raspberry Pi con una placa de pruebas para crear el juego Simon | 15YwnlHCpIvH89ti_vVwBpw-DzTechs

Su código debería verse así:

import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BOARD)
GPIO.setwarnings(False)
red = 18
yellow = 22
green = 24
blue = 26
GPIO.setup(red, GPIO.OUT)
GPIO.setup(yellow, GPIO.OUT)
GPIO.setup(green, GPIO.OUT)
GPIO.setup(blue, GPIO.OUT)
GPIO.output(red, GPIO.HIGH)
GPIO.output(yellow, GPIO.HIGH)
GPIO.output(green, GPIO.HIGH)
GPIO.output(blue, GPIO.HIGH)

Una vez que se prueban los LED, configure GPIO.salida على GPIO.BAJO Para volver a encender cada LED.

Aunque el color de los cables que use no importa, intente usar colores que tengan sentido para ayudarlo a leer el contenido de la pizarra más fácilmente. Por ejemplo, los cables negros se usan a menudo para los cables de tierra. En este circuito, es posible que desee hacer coincidir el color del cable con el color de la luz LED.

Luces de control con botones

Comience agregando un botón a su panel. El botón deberá conectarse tanto al conector de tierra como al pin GPIO. El circuito eléctrico debería verse así:

Imagen de una guía para principiantes sobre el uso de una Raspberry Pi con una placa de pruebas para crear el juego Simon | 1YNOoEWSrkNOoHUqU_Z8LkA-DzTechs

Para hacer que el botón controle el LED, necesitamos agregar algo de código a nuestro código. Configurar el botón es similar a configurar un LED, excepto que el pin GPIO está configurado para ser una entrada, no una salida. Este código también configura la resistencia pull-up interna en el Pi, que es necesaria para que el botón se comporte correctamente.

GPIO.setup(32, GPIO.IN, pull_up_down=GPIO.PUD_UP)

Ahora necesitamos un código que verifique si se presionó el botón.

game = True
while game:
 redButtonState = GPIO.input(32)
 if redButtonState == 0:
 GPIO.output(red, GPIO.HIGH)
 time.sleep(1)
 GPIO.output(red, GPIO.LOW)

Queremos que nuestro programa siga verificando si el botón está presionado, por lo que se debe usar el comando repetir mientras. Dado que la iteración nunca es falsa, el código sigue ejecutándose y marcando el botón hasta que finalizamos el programa manualmente presionando el botón de detener o usando un atajo de teclado Ctrl + C.

Luego, para que sea más fácil indicar la entrada que nos está enviando el pin GPIO, guardamos esta información en la variable estado del botón rojo. Si la entrada de nuestro botón cambia a 0, sabemos que se presionó el botón.

Si se presiona el botón, el LED rojo se encenderá. Luego, después de un segundo, el LED se apagará. Para sumar esta duración, usamos la función tiempo.dormir (1). Para que esto funcione, deberá importar la biblioteca de tiempo ubicada en la parte superior de su código.

Una vez que un botón está encendido, puede agregar tres botones más, uno para cada LED. Su código debería verse así:

import random 
import time
import RPi.GPIO as GPIO
GPIO.setmode (GPIO.BOARD)
GPIO.setwarnings(False)
red = 18
yellow = 22
green = 24
blue = 26
GPIO.setup(red, GPIO.OUT)
GPIO.setup(yellow, GPIO.OUT)
GPIO.setup(green, GPIO.OUT)
GPIO.setup(blue, GPIO.OUT)
GPIO.setup(32, GPIO.IN, pull_up_down=GPIO.PUD_UP) 
GPIO.setup(36, GPIO.IN, pull_up_down=GPIO.PUD_UP) 
GPIO.setup(38, GPIO.IN, pull_up_down=GPIO.PUD_UP) 
GPIO.setup(40, GPIO.IN, pull_up_down=GPIO.PUD_UP) 
game = True 
while game:
 redButtonState = GPIO.input(32)
 if redButtonState == 0:
 GPIO.output(red, GPIO.HIGH)
 time.sleep(1)
 GPIO.output(red, GPIO.LOW)
 
 yellowButtonState = GPIO.input(36)
 if yellowButtonState == 0: 
 GPIO.output(yellow, GPIO.HIGH)
 time.sleep(1) 
 GPIO.output(yellow, GPIO.LOW)
 greenButtonState = GPIO.input(38)
 if greenButtonState == 0:
 GPIO.output(green, GPIO.HIGH)
 time.sleep(1)
 GPIO.output(green, GPIO.LOW)
 blueButtonState = GPIO.input(40)
 if blueButtonState == 0:
 GPIO.output(blue, GPIO.HIGH)
 time.sleep(1)
 GPIO.output(blue, GPIO.LOW)

Y el protoboard debería verse como esta ilustración:

Imagen de una guía para principiantes sobre el uso de una Raspberry Pi con una placa de pruebas para crear el juego Simon | 1ekhFYt8V6GJtaIdEgm23fg-DzTechs

Todos los dispositivos electrónicos ya están listos. Si tiene algún problema, verifique su código en busca de errores. Recuerda que puedes descargar el código completo desde Pastebin ¡Si te atascas!

crea el juego

Este proyecto ya ha cubierto todos los conceptos básicos que necesita saber para comenzar con una placa de prueba. ¡Pero convertir estas habilidades en un juego realmente mostrará lo que puedes hacer!

En el juego de Simon, el jugador ve una serie de luces parpadeando y tiene que recordar el patrón. Comienza fácilmente con una sola luz. Cada nivel agrega una luz aleatoria al patrón para hacer que el juego sea más desafiante.

Crear estilo

Este paso es bastante simple. Una matriz llevará nuestro patrón de luz (patrón). Una segunda matriz almacenará los pines GPIO de nuestros LED (luces). En cada iteración del juego, se agregará una nueva luz aleatoria al final del conjunto de patrones. Usaremos la función . aleatorio.randent() Para elegir un número entre 0 y 3, que representa 4 LED.

pattern = []
lights = [red, yellow, green, blue]
while game:
 pattern.append(random.randint(0,3))

A continuación, tenemos que encender las luces para mostrar el patrón.

while game:
 pattern.append(random.randint(0,3))
 
 for x in pattern:
 GPIO.output(lights[x], GPIO.HIGH)
 time.sleep(1)
 GPIO.output(lights[x], GPIO.LOW)
 time.sleep(0.5)

Es importante detenerse entre dos lámparas. Hace que sea fácil ver si la misma luz se está utilizando consecutivamente en un patrón.

Obtener entrada del jugador

A continuación, el juego debe esperar a que el jugador adivine el orden de las luces. El software debe verificar cada luz en el patrón y esperar hasta que el jugador presione el botón. Esto requiere iteradores anidados:

for x in pattern:
 
 waitingForInput = True
 
 while waitingForInput:
 redButtonState = GPIO.input(32)
 yellowButtonState = GPIO.input(36)
 greenButtonState = GPIO.input(38)
 blueButtonState = GPIO.input(40)
 
 if redButtonState == 0:
 GPIO.output(red, GPIO.HIGH)
 waitingForInput = False
 time.sleep(1)
 GPIO.output(red, GPIO.LOW)
 
 if yellowButtonState == 0:
 GPIO.output(yellow, GPIO.HIGH)
 waitingForInput = False
 time.sleep(1)
 GPIO.output(yellow, GPIO.LOW)
 
 if greenButtonState == 0:
 GPIO.output(green, GPIO.HIGH)
 waitingForInput = False
 time.sleep(1)
 GPIO.output(green, GPIO.LOW)
 
 if blueButtonState == 0:
 GPIO.output(blue, GPIO.HIGH)
 waitingForInput = False
 time.sleep(1)
 GPIO.output(blue, GPIO.LOW)

La mayor parte del código anterior está reutilizando el código que escribimos para probar los botones.

Comprobar la entrada del jugador

Desde aquí, es muy fácil verificar si el jugador ha ingresado el patrón correcto. Cada vez que se presiona un botón, el juego puede verificar si es el botón correcto. Para hacer esto, agregue la frase if Otro para cada entrada de botón:

if redButtonState == 0:
 GPIO.output(red, GPIO.HIGH)
 waitingForInput = False
 if x != 0:
 game = False
 time.sleep(1)
 GPIO.output(red, GPIO.LOW)

variable x de repetir for Tiene el siguiente número de luz. El LED rojo está en la primera posición, o número 0. Si el jugador presiona el botón LED rojo cuando tenemos un 0 en nuestro patrón, ¡tiene razón! Si no, pierde el juego. dará como resultado la configuración de la variable juego على false Para detener el bucle del juego y finalizar el programa.

¡nuestro final! ¡Creé un juego desde cero!

Crear un juego agrega más código a este proyecto que solo agregar LED y botones. Trabajar en un proyecto final que puedas mostrar a tus amigos y familiares puede ayudarte a mantenerte motivado.

Este juego es bastante simple. Ponte a prueba para mejorar el diseño básico. Tal vez las luces puedan parpadear si el jugador pierde. Es posible que desee desafiarse a sí mismo para agregar sonidos al juego. ¡Tú imaginación es el único límite!

Bueno, tu imaginación y el hardware que tienes que usar. Ahora puedes ver Mejores proyectos para crear una smart TV con Raspberry Pi

Ir al botón superior