Aprende Python y Electrónica con Minecraft Pi Edition

Aprende Python y Electrónica con Minecraft Pi Edition / Bricolaje

¿Siempre has querido aprender a codificar pero no sabías por dónde empezar? Aprende a controlar Minecraft en la Raspberry Pi usando Python y algunos aparatos electrónicos simples. Aquí está el resultado final:

Necesitará un Pi 2 o más reciente para este proyecto, y aunque podría completar la mayoría de estas tareas a través de la línea de comandos a través de Secure Shell (SSH), este tutorial se centrará en la codificación directamente en el Pi.

Raspberry Pi 3 Model B Motherboard Raspberry Pi 3 Model B Motherboard Compre Ahora En Amazon $ 34.49

¿Nuevo en Minecraft? No te preocupes, aquí está nuestra Guía para principiantes de Minecraft La (principiante) Guía para principiantes de Minecraft La (principiante) Guía para principiantes de Minecraft Si llegas tarde a la fiesta, no te preocupes, esta extensa guía para principiantes te tiene cubierto. Lee mas .

Introducción a Minecraft Pi

Minecraft para la Raspberry Pi ha sido desarrollado para aprender y modificar (y es gratis). Viene con una interfaz de programación de aplicaciones (API) que proporciona una forma para que el código pueda hablar fácilmente con Minecraft. Es genial para aprender a codificar en Python, así como para comenzar con la electrónica Electrónica para principiantes: 10 habilidades que necesita saber Electrónica para principiantes: 10 habilidades que necesita saber Muchos de nosotros nunca hemos tocado un soldador, pero hacer cosas puede increíblemente gratificante. Aquí hay diez de las habilidades electrónicas de bricolaje más básicas para ayudarte a comenzar. Lee mas .

Que es python?

Python es un lenguaje de programación. Es interpretado, lo que significa que cuando ejecutas un archivo o programa Python, la computadora debe hacer un poco de trabajo primero en el archivo. Las desventajas son que puede considerarse lento en comparación con los lenguajes compilados.

Los beneficios de los lenguajes interpretados son la velocidad de la codificación y su amabilidad. No necesitas decirle a la computadora. qué Los datos que desea almacenar, solo que desea almacenar algo y la computadora averiguará qué hacer. Hay excepciones, por supuesto, y esta es una vista algo simplificada, ¡sin embargo la programación debería ser divertida! Si empiezas a profundizar en los detalles técnicos complejos, puede resultar un poco laborioso..

Python distingue entre mayúsculas y minúsculas. Es importante saber esto, ya que Python no reconocerá objetos incluso si están escritas correctamente si el caso es incorrecto. “Hacer algo()” no funcionará si el método se llama realmente “Hacer algo()”. Python también usa sangría.. Es posible que a otros lenguajes de programación no les importe la cantidad de sangrías que tenga su código, mientras que Python hace cuidado. Las sangrías se utilizan para indicar a Python a dónde pertenece el código. Otros idiomas pueden usar “Tirantes rizados” () para agrupar código: Python no los usa. Python usa un hash (#) para comentarios, y los comentarios se usan para decirle a otros desarrolladores o personas que miran el código qué hace una parte en particular, o por qué es necesaria. Python ignora cualquier cosa después de un hash.

Finalmente, hay dos versiones principales de Python: Python 2.7.xy Python 3.x. Hay algunas diferencias entre los dos (¿cuáles son las diferencias?). Este tutorial usará Python 3.

Configuración inicial

Cómo proporcionar su Pi ya está configurado y ejecutando Raspbian Cómo instalar un sistema operativo en su Raspberry Pi Cómo instalar un sistema operativo en su Raspberry Pi A continuación le indicamos cómo instalar y ejecutar un nuevo sistema operativo en su Pi, y cómo clonar su configuración perfecta para una rápida recuperación de desastres. Leer más, no se necesita mucha configuración inicial.

Terminal abierta (Menú> Accesorios> Terminal) y ejecute este comando. Siempre es una buena práctica mantener la lista de repositorios actualizada, y esto descargará la última lista de programas (no descargará los programas por sí mismos, esto ayuda a Pi a saber qué programas se llaman y dónde encontrarlos).

sudo apt-get update 

Ahora actualiza el Pi (esto puede tomar un tiempo):

sudo apt-get upgrade 

Python y Minecraft Pi ya están instalados, sin embargo, si Minecraft Pi no está instalado por alguna razón, es fácil de instalar 5 maneras de instalar software en Raspberry Pi 5 formas de instalar software en Raspberry Pi Para hacer cualquier cosa con una Raspberry Pi, Necesito saber cómo instalar un sistema operativo y software para ejecutarlo. Si eres nuevo en Linux, esto puede ser desalentador. Lee mas :

sudo apt-get install minecraft-pi

Navega a documentos y crea una nueva carpeta llamada “Minecraft”:

cd Documentos / mkdir Minecraft

Puedes ver los contenidos de esta nueva carpeta:

ls

Aquí hay una sugerencia: si comienza a escribir y presiona la tecla TAB, la línea de comandos intentará completar automáticamente la instrucción por usted..

Puede examinar la ruta al directorio actual usando pwd, que significa Imprimir Directorio de Trabajo:

pwd

Inicia Minecraft yendo a Menú> Juegos> Minecraft Pi. Necesitará esta ejecución, pero volverá a ella más tarde..

Abre Python 3 desde Menú> Programación> Python 3 (IDLE). Este programa proporciona una manera de ejecutar comandos de Python y escribir programas.

Ahora puedes escribir tus comandos de Python aquí, pero eso no es muy práctico. Ir Archivo> Nuevo archivo y entonces Archivo> Guardar y guárdalo en la carpeta que creaste anteriormente. (Documentos> Minecraft). Llamémoslo “hello_world.py“. No tiene que usar la extensión .py, esto se agregará automáticamente, pero es una buena práctica.

Si regresa al terminal y navega a la carpeta de Minecraft, debería ver el archivo que acaba de crear:

cd minecraft / ls

Puede ejecutar este archivo de esta manera:

python hello_world

Date cuenta cómo “pitón” es todo en minúsculas. Esto tiene que ser anterior al nombre del archivo, ya que le dice a Pi que el siguiente archivo es Python, por lo que debe ejecutarse como tal.

Vuelve al editor de Python y escribe:

Imprimir "¡Hola mundo!"

Guarde este archivo y vuelva a ejecutarlo. Ahora debería ver “Hola Mundo!” aparece en la línea de comandos - ¡ordenado! El comando de impresión simplemente le dice a Python que imprima el siguiente texto entre comillas dobles. Esto es bueno, pero no es muy útil para Minecraft, vinculémoslo:

desde mcpi.minecraft import Minecraft mc = Minecraft.create () mc.postToChat ("¡Hola, mundo!") 

Ahora, si guarda y ejecuta este archivo, debería ver “Hola Mundo!” Aparecen en el juego de minecraft. Vamos a desglosar el código:

desde mcpi.minecraft import Minecraft

Esta línea le dice a Python que quieres usar el código de otro archivo. Este archivo mcpi.minecraft fue desarrollado para permitir el control fácil de Minecraft.

mc = Minecraft.create ()

Esta línea crea un objeto llamado “mc” (Minecraft). Debe crear esto para permitir la comunicación con el juego de Minecraft; no es suficiente con solo incluir el archivo.

mc.postToChat ("Hola, mundo!")

Finalmente, esta línea le dice a Minecraft que escriba algo de texto en el chat. Intenta cambiar “Hola Mundo!” para otra cosa y ver qué pasa, pero recuerde incluir ambas comillas dobles. Si tiene problemas de software, estos son algunos errores comunes de Python y Minecraft Pi:

  • AttributeError: este es un error tipográfico, como pinta o prnt en lugar de imprimir
  • NameError: el nombre 'Minecraft' no está definido. Recuerde importar los módulos que necesita
  • NameError: el nombre 'true' no está definido. Python distingue entre mayúsculas y minúsculas, cambie a “Cierto”
  • socket.error: [Errno 111] Conexión rechazada: asegúrese de que Minecraft esté funcionando

Proyectos

Ahora que conoces los conceptos básicos de Python y Minecraft, hagamos algunos proyectos geniales. Todos los codecs pueden ser descargados desde Github..

Constructor de puentes automatizado

Este programa efectivamente construirá un puente sobre el agua. Cuando el jugador se acerca a un cuerpo de agua, el programa convertirá varios bloques en piedra. Como Minecraft usa un sistema de coordenadas, es muy fácil obtener la ubicación del jugador, junto con el tipo de bloques que lo rodean. Minecraft Pi está ligeramente limitado, por lo que no es posible actualizar varios bloques diferentes de forma masiva. Sin embargo, puedes codificar este comportamiento fácilmente..

Crear un nuevo archivo (Archivo> Nuevo archivo) y guardarlo como “bridge_builder.py“.

desde mcpi.minecraft importa Minecraft mc = Minecraft.create () # crea Minecraft Object mientras es Verdadero: x, y, z = mc.player.getPos () # store player position # almacena los bloques circundantes a = mc.getBlock (x, y - 1, z + 1) b = mc.getBlock (x, y - 1, z - 1) c = mc.getBlock (x - 1, y - 1, z) d = mc.getBlock (x + 1, y - 1, z) si a == 8 o a == 9 o b == 8 o b == 9 o c == 8 o c == 9 o d == 8 o d == 9: # 8 o 9 es agua. Establezca los bloques circundantes en el piso a un sólido (piedra) si se encuentra agua mc.setBlocks (x, y - 1, z, x + 1, y - 1, z + 1, 1) mc.setBlocks (x, y - 1 , z, x - 1, y - 1, z - 1, 1) mc.setBlocks (x, y - 1, z, x - 1, y - 1, z + 1, 1) mc.setBlocks (x, y - 1, z, x + 1, y - 1, z - 1, 1) 

Observe cómo el valor de y realmente está mirando y - 1. Este es el nivel mínimo. Si se utilizara el valor de y, el script buscaría bloques a la altura de la rodilla, no funcionaría muy bien! Mc.getBlock () devuelve el id de un bloque para las coordenadas dadas. Como x, y y z son las coordenadas del jugador, puedes sumarlas o restarlas para obtener posiciones alrededor del jugador. No tiene que usar los valores x, y, yz, puede usar cualquier número, sin embargo, puede que no sepa cómo se relaciona ese bloque en particular con el jugador; es mejor usar los valores relativos al jugador. Ejecute este archivo desde la línea de comandos y vea qué sucede.

Debes ver que una pequeña área de tierra se convierte en piedra una vez que el jugador alcanza un cuerpo de agua. No es genial, puedes caminar lo suficientemente rápido como para causar un problema. Podrías resolver esto convirtiendo un mayor volumen de agua en tierra. La parte final del método mc.setBlocks () es el id de bloque. Una es la identificación del bloque para la piedra. Usted podría cambiar esto a madera, hierba, o cualquier cosa. Si quisiera, podría convertirlo fácilmente en un diseño complejo, tal vez un puente colgante.!

Botón super minero

Este ejemplo hará corto el trabajo de minería. Consiste en un botón físico, que cuando se presiona, minará 10 bloques en cubos. Vamos a empezar con el botón. Al igual que los botones del Arduino, necesitará una pequeña cantidad de componentes electrónicos, todos los cuales se deben encontrar en un kit de inicio básico ¿Qué hay en su kit de inicio de Arduino? [Principiantes de Arduino] ¿Qué hay en tu Arduino Starter Kit? [Principiantes de Arduino] Frente a una caja llena de componentes electrónicos, es fácil sentirse abrumado. Aquí hay una guía de lo que encontrarás exactamente en tu kit. Lee mas :

  • 1 x Breadboard
  • 1 x interruptor momentáneo
  • 1 x resistencia de 220 ohmios
  • Hembra> cables de salto macho
  • Macho> Cables de salto macho

Aquí está el circuito:

Esta resistencia se llama “derribar” resistor. Ayuda a garantizar que lo que el Pi cree que es el botón que se presiona, realmente es el botón que se presiona. No tiene que usar esto, sin embargo, se recomienda, ya que puede encontrar mucho ruido y lecturas falsas sin él..

El botón está conectado al pin 14 de la Salida de entrada de propósito general (GPIO). Puede usar cualquier pin GPIO; sin embargo, mire primero el pinout, ya que no todos son controlables desde el Pi, y varían ligeramente entre los modelos..

Ahora que el botón está conectado, es hora de probarlo. Crea un nuevo archivo y guárdalo como “button_test.py“. Agregue este código, guárdelo y luego ejecútelo en Terminal.

importar RPi.GPIO como GPIO tiempo de importación GPIO.setmode (GPIO.BCM) # decirle al Pi qué encabezados usar GPIO.setup (14, GPIO.IN) # decirle al Pi este pin es una entrada, mientras que True: si GPIO.input (14) == Verdadero: # buscar el botón presionar imprimir "BOTÓN FUNCIONA!" # log result time.sleep (0.5) # espera 0.5 segundos 

prensa Control + C para detener el guión. Si todo funciona correctamente deberías ver “Trabajos de botones!” en la terminal. Observe cómo, al igual que el módulo de Minecraft, esta prueba está utilizando el RPi.GPIO y los módulos de tiempo. Esto permite que la Pi acceda a los pines del hardware y proporcione funciones de temporización útiles.

Ahora terminemos el resto del código. Crear un nuevo llamado “super_mine.py“. Aquí está el código:

importar RPi.GPIO como GPIO tiempo de importación desde mcpi.minecraft importar Minecraft mc = Minecraft.create () # create Minecraft Object GPIO.setmode (GPIO.BCM) # le dice a Pi qué encabezados usar GPIO.setup (14, GPIO.IN ) # indica al Pi que este pin es una entrada, mientras que Verdadero: si GPIO.input (14) == Verdadero: # busca el botón, presiona x, y, z = mc.player.getPos () # lee la posición del jugador mc.setBlocks (x, y, z, x + 10, y + 10, z + 10, 0) # mina 10 bloques mc.setBlocks (x, y, z, x - 10, y + 10, z - 10, 0) # mina 10 bloques time.sleep (0.5) # espera 0.5 segundos 

mc.player.getPos () devuelve las coordenadas actuales de los jugadores, que luego se almacenan en x, y y z. los setBlocks () El método le dice a Minecraft que llene todos los bloques entre el inicio y el final con el siguiente bloque. Cero es el bloque de identificación para el aire. Podría cambiar esto a otro bloque-id para rellenar un área. También puedes cambiar las coordenadas a +100 o incluso a +1000 bloques, sin embargo, el Pi puede comenzar a luchar si te vuelves demasiado loco. Observe cómo y + 10 es el mismo para ambas líneas. Podrías cambiar esto a y - 10 si quisieras remover bloques subterráneos.

Teletransportarse

Otro uso simple para este botón podría ser “teletransportarse”. El Minecraft Pi Api proporciona una manera de establecer la posición del jugador. El siguiente código “teletransportarse” el jugador a una ubicación preestablecida:

mc.player.setPos (0, 0, 0)

Tenga en cuenta que su método acepta tres parámetros; x, y, y z: para que pueda configurar esto para cualquier cosa que teletransporte al jugador al instante a esa ubicación.

Crea una copia del archivo super_mine (Archivo> Guardar copia como) y modifíquelo reemplazando el if con lo siguiente:

si GPIO.input (14) == Verdadero: # buscar el botón presione mc.player.setPos (0, 0, 0) # teleport player time.sleep (0.5) # esperar 0.5 segundos 

Este archivo ahora debería verse así:

importar RPi.GPIO como GPIO desde mcpi.minecraft importar Minecraft tiempo de importación mc = Minecraft.create () # crear Minecraft Object GPIO.setmode (GPIO.BCM) # decirle a Pi qué encabezados usar GPIO.setup (14, GPIO.IN ) # indica al Pi que este pin es una entrada mientras es Verdadero: si GPIO.input (14) == Verdadero: # busca el botón, presiona mc.player.setPos (0, 0, 0) # teleport player time.sleep (0.5) # espera 0.5 segundos 

Guardalo como “teleport.py” y correr.

Es posible que el reproductor se atasque dentro de algunos bloques al usar esto, en cuyo caso deberá ajustar las coordenadas a un espacio abierto conocido (la parte superior izquierda de la pantalla muestra su ubicación actual).

Construir una casa

Una última tarea para este botón es construir una casa. Al igual que en el ejemplo de extracción rápida anterior, esto simplemente reemplazará los bloques que rodean al jugador para hacer una casa. Se usarán diferentes identificadores de bloque para diferentes materiales (ventanas, paredes, etc.). Para hacer las cosas más fáciles de codificar, se creará un bloque sólido, y luego se eliminará el interior (establecer bloque en aire), esto creará una cáscara hueca. Podría agregar extras como una cama o una puerta, sin embargo, el proyecto de Minecraft Pi está un poco incompleto y, si bien estos objetos funcionan cuando los coloca el jugador, no son brillantes cuando usan Python..

desde mcpi.minecraft importa Minecraft importa RPi.GPIO como GPIO tiempo de importación mc = Minecraft.create () # crea Minecraft Object GPIO.setmode (GPIO.BCM) # dile a Pi qué encabezados usar GPIO.setup (14, GPIO.IN ) # indica a Pi que este pin es una entrada, mientras que True: si GPIO.input (14) == True: x, y, z = mc.player.getPos () mc.setBlocks (x + 2, y - 1, z + 2, x + 7, y + 3, z + 8, 5) # make shell mc.setBlocks (x + 3, y, z + 3, x + 6, y + 2, z + 7, 0) # remove dentro de mc.setBlocks (x + 2, y, z + 5, x + 2, y + 1, z + 5, 0) # crea la puerta mc.setBlocks (x + 4, y + 1, z + 8, x + 5, y + 1, z + 8, 102) # make window 1 mc.setBlocks (x + 4, y + 1, z + 2, x + 5, y + 1, z + 2, 102) # make window 2 mc.setBlocks (x + 7, y + 1, z + 4, x + 7, y + 1, z + 6, 102) # make window 3 

Guardar esto como “casa.py” y correr. Estando bien, deberías ver aparecer una pequeña casa (es posible que tengas que dar media vuelta para encontrarla). Es muy sencillo, una abertura y algunas ventanas. En teoría, no hay límite para la construcción de un edificio grande o complejo.

Hacer un mini juego

A continuación, vamos a hacer un mini-juego! Esto será bastante simple, cuando el jugador pise un bloque de arena, se convertirá en lava después de un tiempo aleatorio. Este es un buen juego para hacer, ya que puedes diseñar tus propios niveles o modificarlo para hacer las cosas más difíciles. No necesitarás el botón para este ejemplo..

Crea un nuevo archivo y guárdalo como “mini_game.py“. Aquí está el código:

desde mcpi.minecraft importa Minecraft importa tiempo de importación aleatorio mc = Minecraft.create () # crea Minecraft Object con True: x, y, z = mc.player.getPos () block_under_player = mc.getBlock (x, y - 1, z ) si block_under_player == 12: # jugador parado en la arena, inicia el temporizador random_time = random.uniform (0.1, 2.5) # genera el número aleatorio time.sleep (random_time); # espera mc.setBlock (x, y - 1, z, 11) # conviértelo en lava 

Este código es un buen arranque en el aleatorio() función: random.uniform (0.1, 2.5) generará un número aleatorio entre 0.1 (1/10 de segundo) y 2.5 (2 1/2 segundos). Aumentar estos números facilitará el juego..

¡Pruébalo! Párese en un bloque de arena, y pronto se convertirá en lava. Esta podría ser la base de un juego más complejo..

Haz un Otro Mini Juego

La premisa para este juego es simple: no te quedes parado en el piso de madera cuando se acabe el tiempo. El jugador se teletransporta a un “arena”. Se ven obligados a quedarse quietos hasta que comience el juego. Una vez iniciado, el piso se convertirá en agua una vez que se agote el tiempo. El jugador debe estar parado en la zona segura (bloques de diamante) para sobrevivir. Cada nivel reduce el temporizador en un segundo. Después de cada nivel exitoso, el área segura se hace más grande. Echa un vistazo al siguiente código:

tiempo de importación importación aleatoria de mcpi.minecraft importación Minecraft mc = Minecraft.create () # crear Minecraft Object # clear area mc.setBlocks (-10, 1, -10, 25, 5, 25, 0) # create arena shell mc. setBlocks (0, 0, 0, 25, 10, 25, 17) # hollow out arena mc.setBlocks (1, 1, 1, 24, 10, 24, 0) # mover jugador a arena mc.player.setPos (14 , 25, 20) # jugador teletransportador # hacer que se queden quietos # jugador teletransportado para comenzar la posición cada 1/10 de segundo. # haga esto durante 5 segundos y luego inicie el juego time.sleep (2) total_wait = 0 mc.postToChat ("Waiting to Start") mientras total_wait < 5: mc.player.setPos(14, 1, 20) # teleport player time.sleep(0.1) total_wait += 0.1 mc.postToChat("BEGIN!") # 10 levels for level in range(10): x, y, z = mc.player.getPos() level_time = 10 - level # reduce time by 1 second for each level mc.postToChat("Level - " + str(level + 1) + " start") # build floor mc.setBlocks(0, 0, 0, 25, 0, 25, 17) # make safe area safe_area_start = random.uniform(0, 22) safe_area_end = random.uniform(0, 22) mc.setBlocks(safe_area_start, 0, safe_area_end, safe_area_start + level, 0, safe_area_end + level, 57) elapsed_time = 0 while elapsed_time < 10: x, y, z = mc.player.getPos() time.sleep(0.25) elapsed_time += 0.25 # check player is still on floor if y < 0.75: mc.postToChat("Game Over") break; else: # remove floor mc.setBlocks(-10, 0, -10, 25, 0, 25, 8) # put safe area back mc.setBlocks(safe_area_start, 0, safe_area_end, safe_area_start + level, 0, safe_area_end + level, 57) time.sleep(2.5) continue break 

Guardar esto como “mini_game_2.py” y dale una carrera.

El Pi 2 tiene algunos problemas de rendimiento mientras se ejecuta Minecraft. El gráfico de uso de la unidad central de procesamiento (CPU) (esquina superior derecha) nunca muestra ninguna carga pesada, por lo que esto debe ser un diseño y optimizaciones deficientes por parte de los desarrolladores. Estos problemas no están relacionados con el código de ejecución (ya que continúan cuando Python no se está ejecutando), sin embargo, están compuestos por este mini juego. Si su Pi está realmente luchando, es posible que desee reducir el tamaño de la arena o overclockear su Pi ¿No es suficiente el jugo? ¿Exprime tu Raspberry Pi mediante overclocking no suficiente jugo? Exprima su Raspberry Pi con Overclocking Si hay algún hardware lanzado en 2012 del que es probable que se enamore, es la Raspberry Pi, una mini computadora diseñada y construida en el Reino Unido que se ha distribuido por todo el ... Lee mas .

Detector de diamante

Hagamos otro circuito. Esto usará un diodo emisor de luz (LED) para encenderse cuando haya diamantes debajo (dentro de 15 bloques). Esto es lo que necesitas:

  • 1 x Breadboard
  • 1 x LED
  • 1 x resistencia de 220 ohmios
  • Hembra> cables de salto macho
  • Macho> Cables de salto macho

Aquí está el circuito:

Conecte el ánodo (pata larga) al Pin GPIO 14. Este pin actúa como + 5v. Conecte el cátodo (pierna corta) a tierra.

He usado un juguete de mineral barato y lo modifiqué quitando la cubierta trasera y los componentes electrónicos, luego coloqué un LED debajo. Usted podría fácilmente hacer esto permanente con pegamento caliente o algo similar.

Guarde este código como “diamantes.py“:

importar RPi.GPIO como GPIO tiempo de importación desde mcpi.minecraft importar Minecraft mc = Minecraft.create () # crear Minecraft Object led_pin = 14 # almacenar el número de pin GPIO GPIO.setmode (GPIO.BCM) # decirle al Pi qué encabezados usar GPIO.setup (14, GPIO.OUT) # indica al Pi que este pin es una salida, mientras que True: # repite indefinidamente x, y, z = mc.player.getPos () para i en el rango (15): # mira cada bloque hasta el bloque 15 si mc.getBlock (x, y - i, z) == 56: GPIO.output (led_pin, True) # enciende el LED en time.sleep (0.25) # espera GPIO.output (led_pin, False) # apaga el LED time.sleep (0.25) # espera 

Cuando haya un bloque de mineral de diamante debajo del reproductor (dentro de 15 bloques), la luz parpadeará.

ThinkGeek Minecraft Light-Up Blue Stone Diamond Mineral - Seguro para mantener a los hombres cerditos ThinkGeek Minecraft Light-Up Blue Stone Diamond Mineral - Seguro para mantener a los Pigmen alejados Compre ahora en Amazon $ 31.99

¿Has hecho algo genial con Minecraft Pi? Hazme saber en los comentarios qué hiciste o hasta qué punto lo hiciste en los juegos..

Obtenga más información sobre: ​​Electrónica, Minecraft, Programación, Python, Raspberry Pi.