Tabla de contenido:
- Suministros
- Paso 1: Materiales
- Paso 2: diagrama de conexión
- Paso 3: configurar para SPI
- Paso 4: el código
- Paso 5: el resultado
- Paso 6: Uso de materiales de CrowPi2
- Paso 7: uso de CrowPi2: diagrama de conexión
- Paso 8: Uso de CrowPi2: configurar para SPI
- Paso 9: Uso de CrowPi2: el código
- Paso 10: Uso de CrowPi2: el resultado
- Paso 11: Uso de CrowPi2: más allá
Video: Construye Rainbow Interactive Bridge usando Minecraft Raspberry Pi Edition: 11 pasos
2024 Autor: John Day | [email protected]. Última modificación: 2024-01-30 08:40
Ayer, vi a mi sobrino de 8 años jugando Minecraft con la Raspberry Pi que le di antes, luego se me ocurrió una idea: usar código para hacer un proyecto de bloques LED Minecraft-pi personalizado y emocionante. Minecraft Pi es una excelente manera de comenzar con la microcomputadora Raspberry Pi, Minecraft Pi es una versión especial hecha a medida de Minecraft que nos permite interactuar con el juego usando una API Python mortalmente simple para personalizar la experiencia del juego y los accesorios.
Hay muchos proyectos que puedes hacer en el mundo de Minecraft con la Raspberry Pi pero específicamente para nosotros no fue suficiente, buscábamos algo desafiante y parpadeante al mismo tiempo. En este proyecto, pisaremos varios bloques de Minecraft, detectaremos el ID del bloque y detectaremos el color del bloque específico que pisamos, según el color que iluminaremos nuestro LED RGB para crear un juego de pasos interactivo.
Usaré dos métodos para lograr el efecto, el primero es usar los accesorios, que pueden ser muy caóticos…; el segundo es usar CrowPi2 (computadora de aprendizaje con muchos sensores, actualmente financiada por crowdfunding en Kickstarter: CrowPi2)
¡Empecemos y veamos cómo archivar un proyecto tan asombroso!
Suministros
El CrowPi2 ahora está disponible en el kickstarter, el proyecto CrowPi2 ha recaudado casi $ 250k.
Pulse el enlace:
Método 1 Uso de accesorios
Paso 1: Materiales
● 1 x Raspberry Pi 4 modelo B
● 1 x tarjeta TF con imagen
● 1 x fuente de alimentación Raspberry Pi
● 1 monitor de 10,1 pulgadas
● 1 x fuente de alimentación para monitor
● 1 x cable HDMI
● 1 x teclado y mouse
● 1 x LED RGB (cátodo común)
● 4 x Jerséis (de mujer a mujer)
Paso 2: diagrama de conexión
En realidad, hay tres luces en el LED de color RGB, que son luz roja, luz verde y luz azul. Controla estas tres luces para que emitan luz de diferentes intensidades, y cuando se mezclan, pueden emitir luz de varios colores. Los cuatro pines de la luz LED son GND, R, G y B, respectivamente. El LED RGB que utilicé es un cátodo común y la conexión a la Raspberry Pi es la siguiente:
RaspberryPi 4B (en el nombre de la función) LED RGB
GPIO0 1 ROJO
GPIO1 3 VERDE
GPIO2 4 AZUL
TIERRA 2 TIERRA
La segunda imagen es la conexión de hardware.
Paso 3: configurar para SPI
Debido a que necesitamos usar el SPI para controlar el RGB, primero debemos habilitar la interfaz SPI, que está deshabilitada de manera predeterminada. Puede seguir los pasos a continuación para habilitar la interfaz SPI:
Primero, puede usar la GUI de escritorio dirigiéndose a las referencias de menú de inicio de Pi Configuración de Raspberry Pi, como se muestra en la primera imagen.
En segundo lugar, navegue hasta "Interfaces", habilite SPI y haga clic en Aceptar (la segunda imagen).
Por último, reinicie su Pi para asegurarse de que los cambios surtan efecto. Haga clic en Pi Start Menu PreferencesShutdown. Como solo necesitamos reiniciar, haga clic en el botón Reiniciar.
Paso 4: el código
Comenzaremos escribiendo nuestro código Python, primero, comenzaremos importando algunas bibliotecas que necesitaremos para integrar nuestro código con el mundo de Minecraft. Luego, importaremos la biblioteca de tiempo, específicamente una función llamada dormir. La función sleep nos permitirá esperar un intervalo específico antes de realizar una función. Por último, pero no menos importante, importamos la biblioteca RPi. GPIO que nos permite controlar el GPIO en Raspberry Pi.
desde mcpi.minecraft importar Minecraft desde el tiempo importar dormir importar RPi. GPIO como GPIO
Y eso es todo, hemos terminado con la importación de las bibliotecas, ¡ahora es el momento de usarlas! Lo primero es usar la biblioteca de Minecraft, queremos conectar nuestro script de Python al mundo de Minecraft, podemos hacerlo invocando la función init () de la biblioteca de MCPI y luego configurar el modo de GPIO y deshabilitar la advertencia.
mc = Minecraft.create () GPIO.setmode (GPIO. BCM) GPIO.setwarnings (0)
Ahora, definimos algunos colores del arco iris en hexadecimal para que podamos cambiar los colores RGB.
BLANCO = 0xFFFFFF ROJO = 0xFF0000 NARANJA = 0xFF7F00 AMARILLO = 0xFFFF00 VERDE = 0x00FF00 CIAN = 0x00FFFF AZUL = 0x0000FF PÚRPURA = 0xFF00FF MAGENTA = 0xFF0090
A continuación, necesitamos definir algunas variables para registrar el color del bloque de lana, que ya está definido en la lista de bloques de Minecraft.
W_WHITE = 0 W_RED = 14 W_ORANGE = 1 W_YELLOW = 4 W_GREEN = 5 W_CYAN = 9 W_BLUE = 11 W_PURPLE = 10 W_MAGENTA = 2
El ID del bloque de lana en Minecraft es 35. Ahora, tenemos que configurar el pin para el LED RGB y configurarlo para ellos.
clavija_ roja = 17 clavija_verde = 18 clavija_azul = 27
GPIO.setup (red_pin, GPIO. OUT, inicial = 1) GPIO.setup (green_pin, GPIO. OUT, inicial = 1) GPIO.setup (blue_pin, GPIO. OUT, inicial = 1)
Luego, configure el PWM para cada pin, tenga en cuenta que el rango del valor de PWM es 0-100. Aquí, primero configuramos el color del LED RGB en blanco (100, 100, 100).
rojo = GPIO. PWM (pin_rojo, 100)
verde = GPIO. PWM (green_pin, 100) azul = GPIO. PWM (blue_pin, 100) red.start (100) green.start (100) blue.start (100)
Lo siguiente es crear dos funciones, que se pueden usar para decodificar el color e iluminar el LED RGB. Tenga en cuenta que la función map2hundred () es para mapear valores de 255 a 100, como dijimos antes, el valor de PWM debe ser 0-100.
def map2hundred (valor): return int (valor * 100/255)
def set_color (código_color): # Decodificar valor_rojo = código_color >> 16 y 0xFF valor_verde = código_color >> 8 y 0xFF valor_azul = código_color >> 0 y 0xFF
# Valores del mapa red_value = map2hundred (red_value) green_value = map2hundred (green_value) blue_value = map2hundred (blue_value)
# ¡Encender! red. ChangeDutyCycle (valor_rojo) verde. ChangeDutyCycle (valor_verde) azul. ChangeDutyCycle (valor_azul)
¡Bien hecho! Es hora de iniciar nuestro programa principal, espere, se debe definir otra variable para registrar el código de color del bloque de lana antes del programa principal:
last_data = 0 prueba: x, y, z = mc.player.getPos () mc.setBlocks (x, y, z, x + 1, y, z + 2, 35, 14) mc.setBlocks (x + 2, y + 1, z, x + 3, y + 1, z + 2, 35, 11) mc.setBlocks (x + 4, y + 2, z, x + 5, y + 2, z + 2, 35, 2) mc.setBlocks (x + 6, y + 3, z, x + 7, y + 3, z + 2, 35, 5) mc.setBlocks (x + 8, y + 4, z, x + 9, y + 4, z + 2, 35, 4) mc.setBlocks (x + 10, y + 5, z, x + 11, y + 5, z + 2, 35, 10) mc.setBlocks (x + 12, y + 6, z, x + 13, y + 6, z + 2, 35, 1) mc.setBlocks (x + 14, y + 5, z, x + 15, y + 5, z + 2, 35, 10) mc.setBlocks (x + 16, y + 4, z, x + 17, y + 4, z + 2, 35, 4) mc.setBlocks (x + 18, y + 3, z, x + 19, y + 3, z + 2, 35, 5) mc.setBlocks (x + 20, y + 2, z, x + 21, y + 2, z + 2, 35, 2) mc.setBlocks (x + 22, y + 1, z, x + 23, y + 1, z + 2, 35, 11) mc.setBlocks (x + 24, y, z, x + 25, y, z + 2, 35, 14) mientras que Verdadero: x, y, z = mc.player.getPos () # posición del jugador (x, y, z) bloque = mc.getBlockWithData (x, y-1, z) # ID de bloque #print (bloque) if block.id == LANA y last_data! = Block.data: if block.data == W_RED: print ("Red!") Set_color (RED) if block.data == W_ORANGE: print ("Orange!") Set_color (ORANGE) if block.data == W_ AMARILLO: print ("Yellow!") Set_color (YELLOW) if block.data == W_GREEN: print ("Green!") Set_color (GREEN) if block.data == W_CYAN: print ("Cyan!") Set_color (CYAN) if block.data == W_BLUE: print ("Blue!") set_color (BLUE) if block.data == W_PURPLE: print ("Purple!") set_color (PURPLE) if block.data == W_MAGENTA: print (" Magenta! ") Set_color (MAGENTA) if block.data == W_WHITE: print (" White! ") Set_color (WHITE) last_data = block.data sleep (0.05) excepto KeyboardInterrupt: pass GPIO.cleanup ()
Como se muestra arriba en el programa principal, primero para usar algunos comandos para generar algunos bloques de lana de colores, luego necesitamos averiguar la posición del jugador para que podamos obtener la identificación de los bloques y su código de color. Después de obtener la información del bloque, usaremos la declaración para determinar si el bloque debajo del jugador es un bloque de lana y si tiene el código de color. En caso afirmativo, juzgue de qué color es el bloque de lana y llame a la función set_color () para cambiar el color del LED RGB del mismo modo que el bloque de lana.
Además, agregamos una declaración try / except para detectar la excepción de la interrupción del usuario cuando queremos salir del programa para borrar la salida de los pines GPIO.
Se adjunta el código completo.
Bien hecho, tantos complementos y demasiado complicado ¿no? ¡No te preocupes, veamos el segundo método para lograr el proyecto, que te hará sentir más flexible y conveniente, que es usar nuestro CrowPi2!
Paso 5: el resultado
Abra el juego y ejecute el script, verá el resultado en el video de arriba
Luego usaremos CrowPi2 para construir el puente interactivo Rainbow a continuación
Paso 6: Uso de materiales de CrowPi2
● 1 x CrowPi2
Paso 7: uso de CrowPi2: diagrama de conexión
No hay necesidad. Hay muchos sensores y componentes útiles (más de 20) en CrowPi2, todo en una computadora portátil raspberry pi y una plataforma educativa STEM que nos permite hacer múltiples proyectos con facilidad y sin sudar. En este caso, usaremos un módulo atractivo y colorido en CrowPi2, que es un módulo de matriz RGB 8x8, que nos permite controlar 64 LED RGB al mismo tiempo.
Paso 8: Uso de CrowPi2: configurar para SPI
No hay necesidad. ¡CrowPi2 viene con una imagen incorporada con un sistema de aprendizaje! Todo ha sido preparado, lo que significa que puedes programar y aprender directamente. Además, con nuestro CrowPi2 es fácil y ya está integrado en la placa como una plataforma STEAM lista para funcionar.
Paso 9: Uso de CrowPi2: el código
¡Ahora es el momento de comenzar nuestro programa! Primero, importe algunas bibliotecas, como la biblioteca MCPI que es la biblioteca Python de Minecraft Pi que nos permite usar una API muy simple para integrar con el mundo de Minecraft; biblioteca de tiempo que nos permite la función sleep para esperar un intervalo específico antes de realizar una función; Librería RPi. GPIO que nos permite controlar los pines GPIO de Raspberry Pi.
desde mcpi.minecraft importar Minecraft desde el tiempo importar dormir importar RPi. GPIO como GPIO
Finalmente, importaremos una biblioteca llamada rpi_ws281x que es la biblioteca de matriz RGB, dentro de la biblioteca, hay múltiples funciones que usaremos, como PixelStrip para configurar el objeto de tira de LED y Color para configurar un objeto de color RGB para que se encienda. nuestros LED RGB
de rpi_ws281x importar PixelStrip, Color
Y eso es todo, hemos terminado con la importación de las bibliotecas, ¡ahora es el momento de usarlas! Igualmente, lo primero es usar la biblioteca de Minecraft, queremos conectar nuestro script de Python al mundo de Minecraft, podemos hacerlo invocando la función init de la biblioteca de MCPI:
mc = Minecraft.create ()
Ahora, cada vez que queremos realizar operaciones en el mundo minecrat, podemos usar el objeto mc.
El siguiente paso será definir la clase de matriz de LED RGB que usaremos para controlar nuestros LED RGB, inicializamos la clase con configuración básica como número de leds, pines, brillo etc…
creamos una función llamada clean que "limpiará" menos con un color específico dado y también una función llamada run que inicializará el objeto LED RGB real la primera vez que queramos usarlo.
clase RGB_Matrix:
def _init _ (yo):
# Configuración de la tira de LED:
self. LED_COUNT = 64 # Número de píxeles LED.
self. LED_PIN = 12 # Pin GPIO conectado a los píxeles (¡18 usa PWM!).
self. LED_FREQ_HZ = 800000 # Frecuencia de señal LED en hercios (generalmente 800khz)
self. LED_DMA = 10 # canal DMA para usar para generar señal (intente 10)
self. LED_BRIGHTNESS = 10 # Establecer en 0 para el más oscuro y 255 para el más brillante
self. LED_INVERT = False # Verdadero para invertir la señal
self. LED_CHANNEL = 0 # establecido en '1' para GPIOs 13, 19, 41, 45 o 53
# Definir funciones que animen LED de varias formas. def clean (uno mismo, tira, color):
# limpie todos los LED a la vez
para i en el rango (strip.numPixels ()):
strip.setPixelColor (i, color)
strip.show ()
def ejecutar (auto):
# Cree un objeto NeoPixel con la configuración adecuada.
tira = PixelStrip (self. LED_COUNT, self. LED_PIN, self. LED_FREQ_HZ, self. LED_DMA, self. LED_INVERT, self. LED_BRIGHTNESS, self. LED_CHANNEL)
tratar:
tira de retorno
excepto KeyboardInterrupt:
# limpiar el LED de la matriz antes de la interrupción
self.clean (tira)
Una vez que hayamos terminado con lo anterior, es hora de invocar esas clases y crear objetos que podamos usar en nuestro código, primero creemos un objeto de matriz de LED RGB que podamos usar usando la clase que hemos creado anteriormente:
matrixObject = RGB_Matrix ()
Ahora usemos este objeto para crear un objeto de tira de LED activo que usaremos para controlar nuestros LED individuales en la matriz RGB:
tira = matrixObject.run ()
Finalmente, para activar esta tira, necesitaremos ejecutar una última función:
strip.begin ()
La API de Minecraft incluye muchos bloques, cada bloque de Minecraft tiene su propia identificación. En nuestro ejemplo, tomamos una cantidad de bloques de Minecraft e intentamos adivinar qué color es el más adecuado para ellos.
RGB significa rojo, verde y azul, por lo que necesitaremos 3 valores diferentes que van de 0 a 255 para cada uno, los colores pueden ser en formato HEX o RGB, estamos usando el formato RGB para nuestro ejemplo.
En el mundo de Minecraft Pi hay ID de bloques normales e ID de bloques de lana especiales, la lana especial tiene el número de ID 35 pero con subnúmeros que van a muchos ID diferentes … Resolveremos este problema creando 2 listas separadas, una para bloques normales y una lista para bloques especiales de lana:
La primera lista es para bloques normales, por ejemplo, 0 representa el bloque de aire, lo configuraremos en color 0, 0, 0 que está en blanco o completamente blanco, cuando el jugador salte o vuele en el juego, el RGB se apagará, 1 es un bloque diferente con color RGB 128, 128, 128 y así sucesivamente …
#Colores del arcoiris
rainbow_colors = {
"0": Color (0, 0, 0), "1": Color (128, 128, 128), "2": Color (0, 255, 0), "3": Color (160, 82, 45), "4": Color (128, 128, 128), "22": Color (0, 0, 255)
}
Para los bloques de lana hacemos lo mismo pero es importante recordar que todos los bloques tienen un ID de 35, en esta lista definimos los subtipos del bloque que es bloque de lana. Los diferentes subtipos de lana tienen diferentes colores, pero todos son bloques de lana.
colores_de_lana = {
"6": Color (255, 105, 180), "5": Color (0, 255, 0), "4": Color (255, 255, 0), "14": Color (255, 0, 0), "2": Color (255, 0, 255)
}
Ahora que hemos terminado de definir nuestro programa principal, clases y funciones, es el momento de integrarnos con nuestro sensor LED RGB CrowPi2 a bordo.
El programa principal tomará los parámetros que definimos anteriormente y pondrá el impacto en el hardware.
Vamos a utilizar el LED RGB CrowPi2 para iluminarlos según los pasos que hacemos dentro de Minecraft Pi en cada bloque, ¡comencemos!
Lo primero que haremos es generar algunos bloques de lana con comandos y crear un bucle while, para mantener el programa en ejecución mientras jugamos el juego.
Necesitaremos obtener algunos datos del jugador, primero usamos el comando player.getPos () para obtener la posición del jugador, luego usamos getBlockWithData () para obtener el bloque en el que estamos actualmente (la coordenada y es -1 que significa debajo del jugador)
x, y, z = mc.player.getPos ()
mc.setBlocks (x, y, z, x + 1, y, z + 2, 35, 14)
mc.setBlocks (x + 2, y + 1, z, x + 3, y + 1, z + 2, 35, 11)
mc.setBlocks (x + 4, y + 2, z, x + 5, y + 2, z + 2, 35, 2)
mc.setBlocks (x + 6, y + 3, z, x + 7, y + 3, z + 2, 35, 5)
mc.setBlocks (x + 8, y + 4, z, x + 9, y + 4, z + 2, 35, 4)
mc.setBlocks (x + 10, y + 5, z, x + 11, y + 5, z + 2, 35, 10)
mc.setBlocks (x + 12, y + 6, z, x + 13, y + 6, z + 2, 35, 1)
mc.setBlocks (x + 14, y + 5, z, x + 15, y + 5, z + 2, 35, 10)
mc.setBlocks (x + 16, y + 4, z, x + 17, y + 4, z + 2, 35, 4)
mc.setBlocks (x + 18, y + 3, z, x + 19, y + 3, z + 2, 35, 5)
mc.setBlocks (x + 20, y + 2, z, x + 21, y + 2, z + 2, 35, 2)
mc.setBlocks (x + 22, y + 1, z, x + 23, y + 1, z + 2, 35, 11)
mc.setBlocks (x + 24, y, z, x + 25, y, z + 2, 35, 14)
mientras que es cierto:
x, y, z = mc.player.getPos () # posición del jugador (x, y, z)
blockType, data = mc.getBlockWithData (x, y-1, z) # ID de bloque
imprimir (blockType)
Luego, comprobaremos si el bloque es de lana, bloque ID número 35, si lo es, nos referiremos a wool_colors con el color del bloque basado en el ID del diccionario e iluminaremos el color correcto en consecuencia.
si blockType == 35:
# colores de lana personalizados
matrixObject.clean (strip, wool_colors [str (datos)])
Si no es un bloque de lana, comprobaremos si el bloque se encuentra actualmente dentro del diccionario rainbow_colors para evitar excepciones, si lo es, continuaremos tomando el color y cambiando el RGB.
si str (blockType) en rainbow_colors:
imprimir (colores_arco iris [str (blockType)])
matrixObject.clean (strip, rainbow_colors [str (blockType)])
dormir (0.5)
¡Siempre puede intentar agregar más bloques al rainbow_color para agregar más colores y más bloques de soporte!
¡Perfecto! Hacer proyectos con accesorios es complicado, pero con el circuito integrado CrowPi2, ¡las cosas se vuelven mucho más fáciles! Además, hay más de 20 sensores y componentes en CrowPi2, lo que le permite lograr sus proyectos ideales e incluso proyectos de IA.
A continuación se muestra el código completo:
Paso 10: Uso de CrowPi2: el resultado
Abra el juego y ejecute el script, verá el resultado en el video de arriba:
Paso 11: Uso de CrowPi2: más allá
Ahora hemos terminado nuestro colorido proyecto en el juego de Minecraft con CrowPi2. ¿Por qué no intentar usar otros sensores y componentes en CrowPi2 para jugar con el juego, como un joystick para controlar el movimiento del jugador, RFID para generar bloques basados en diferentes tarjetas NFC, etc. Diviértete con tu juego en CrowPi2 y espero que puedas hacerlo? proyectos más increíbles con CrowPi2!
Ahora, CrowPi2 está en Kickstarter, también puede disfrutar del atractivo precio.
Adjunte el enlace de la página de Kickstarter CrowPi2
Recomendado:
Construye una estación meteorológica SUPER Raspberry Pi: 8 pasos (con imágenes)
Construye una estación meteorológica SUPER Raspberry Pi: seamos realistas, los humanos hablamos mucho sobre el clima ⛅️. La persona promedio habla del clima cuatro veces al día, durante un promedio de 8 minutos y 21 segundos. Haz los cálculos y eso totaliza 10 meses de tu vida que pasarás hablando sobre t
¡Construye tu calculadora usando Arduino !: 5 pasos
¡Construye tu calculadora usando Arduino !: ¡Hola chicos! Quiere aprender a utilizar una entrada y salida de monitor en serie. ¡Pues aquí tienes el tutorial perfecto sobre cómo hacerlo! En este instructivo, lo guiaré a través de los pasos simples necesarios para crear una calculadora usando la serie Arduino
Visuino construye un sistema de detección de intrusiones usando Arduino: 8 pasos
Visuino Construye un sistema de detección de intrusiones usando Arduino: En este tutorial usaremos un sensor de movimiento de radar de microondas XYC-WB-DC conectado a Arduino UNO y Visuino para detectar cualquier movimiento en un radio de alrededor de 5 m, incluidas las paredes delgadas
Neopixel Ws2812 Rainbow LED Glow con M5stick-C - Ejecutando Rainbow en Neopixel Ws2812 usando M5stack M5stick C usando Arduino IDE: 5 pasos
Neopixel Ws2812 Rainbow LED Glow con M5stick-C | Ejecutando Rainbow en Neopixel Ws2812 Usando M5stack M5stick C Usando Arduino IDE: Hola chicos, en este instructables aprenderemos a usar LED neopixel ws2812 o tira de LED o matriz de LED o anillo de LED con placa de desarrollo m5stack m5stick-C con Arduino IDE y haremos un patrón de arco iris con él
¡Construye un dinosaurio motorizado usando basura plástica, en 55 minutos o menos !: 11 pasos (con imágenes)
¡Construye un dinosaurio motorizado usando basura plástica, en 55 minutos o menos !: Hola. Mi nombre es Mario y me encanta construir cosas con basura. Hace una semana, me invitaron a participar en un programa matutino del canal de televisión nacional de Azerbaiyán, para hablar sobre el " Waste to Art " exposición. ¿La única condición? Yo tenía t