Table des matières:

Construisez un pont interactif arc-en-ciel à l'aide de Minecraft Raspberry Pi Edition : 11 étapes
Construisez un pont interactif arc-en-ciel à l'aide de Minecraft Raspberry Pi Edition : 11 étapes

Vidéo: Construisez un pont interactif arc-en-ciel à l'aide de Minecraft Raspberry Pi Edition : 11 étapes

Vidéo: Construisez un pont interactif arc-en-ciel à l'aide de Minecraft Raspberry Pi Edition : 11 étapes
Vidéo: Ne JAMAIS partir SANS SA COPINE 🫢 #humour #blague #drole #couplegoals #internationalcouple #shorts 2024, Novembre
Anonim
Image
Image

Hier, j'ai vu mon neveu de 8 ans jouer à Minecraft avec le Raspberry Pi que je lui avais donné auparavant, puis j'ai eu une idée, qui utilise du code pour créer un projet de blocs LED Minecraft-pi personnalisé et passionnant. Minecraft Pi est un excellent moyen de démarrer avec le micro-ordinateur Raspberry Pi, le Minecraft Pi est une version spéciale sur mesure de Minecraft qui nous permet d'interagir avec le jeu à l'aide d'une API Python simple et mortelle pour personnaliser l'expérience de jeu et les accessoires !

Il existe de nombreux projets que vous pouvez réaliser dans le monde Minecraft avec le Raspberry Pi, mais spécifiquement pour nous, cela ne suffisait pas, nous recherchions quelque chose de stimulant et de clignotant en même temps. Dans ce projet, nous allons marcher sur plusieurs blocs Minecraft, détecter l'ID du bloc et détecter la couleur du bloc spécifique sur lequel nous avons marché, en fonction de la couleur que nous allons allumer notre LED RVB pour créer un jeu de pas interactif !

Je vais utiliser deux méthodes pour obtenir l'effet, la première consiste à utiliser les accessoires, ce qui peut être très chaotique…; le second utilise CrowPi2 (ordinateur d'apprentissage avec de nombreux capteurs, actuellement financé par le crowdfunding sur Kickstarter:CrowPi2)

Commençons et voyons comment archiver un projet aussi incroyable !

Fournitures

Le CrowPi2 est maintenant en ligne sur le kickstarter, le projet CrowPi2 a levé près de 250 000 $.

Cliquez sur le lien:

Méthode1 Utilisation d'accessoires

Étape 1: Matériaux

● 1 x Raspberry Pi 4 modèle B

● 1 x carte TF avec image

● 1 x alimentation Raspberry Pi

● 1 écran de 10,1 pouces

● 1 x alimentation pour moniteur

● 1 câble HDMI

● 1 x clavier et souris

● 1 x LED RVB (cathode commune)

● 4 x cavaliers (femelle à femelle)

Étape 2: Schéma de connexion

Diagramme de connexion
Diagramme de connexion

Il y a en fait trois lumières dans la LED de couleur RVB, qui sont la lumière rouge, la lumière verte et la lumière bleue. Contrôlez ces trois lumières pour émettre de la lumière d'intensités différentes, et lorsqu'elles sont mélangées, elles peuvent émettre de la lumière de différentes couleurs. Les quatre broches de la lumière LED sont respectivement GND, R, G et B. La LED RVB que j'ai utilisée est une cathode commune, et la connexion au Raspberry Pi est la suivante:

RaspberryPi 4B (dans le nom de la fonction) LED RVB

GPIO0 1 ROUGE

GPIO1 3 VERT

GPIO2 4 BLEU

TERRE 2 TERRE

La deuxième image est la connexion matérielle

Étape 3: Configurer pour SPI

Configurer pour SPI
Configurer pour SPI
Configurer pour SPI
Configurer pour SPI
Configurer pour SPI
Configurer pour SPI
Configurer pour SPI
Configurer pour SPI

Parce que nous devons utiliser le SPI pour contrôler le RVB, nous devons d'abord activer l'interface SPI, qui est désactivée par défaut. Vous pouvez suivre les étapes ci-dessous pour activer l'interface SPI:

Tout d'abord, vous pouvez utiliser l'interface graphique du bureau en vous dirigeant vers le démarrage Pi MenuréférencesRaspberry Pi Configuration, comme indiqué dans la première image.

Deuxièmement, accédez à "Interfaces", activez SPI et cliquez sur OK (la deuxième image).

Enfin, redémarrez votre Pi pour vous assurer que les modifications prennent effet. Cliquez sur Pi Start MenuPreferencesShutdown. Puisque nous avons juste besoin de redémarrer, cliquez sur le bouton Redémarrer.

Étape 4: le code

Nous allons commencer par écrire notre code python, tout d'abord, nous allons commencer par importer quelques bibliothèques dont nous aurons besoin pour intégrer notre code avec le monde Minecraft. Ensuite, nous importerons la bibliothèque de temps, en particulier une fonction appelée sleep. La fonction sleep va nous permettre d'attendre un intervalle spécifique avant d'exécuter une fonction. Enfin, nous importons la bibliothèque RPi. GPIO qui nous permet de contrôler le GPIO sur Raspberry Pi.

de mcpi.minecraft importer Minecraft à partir de l'heure importer dormir importer RPi. GPIO en tant que GPIO

Et voilà, nous en avons fini avec l'importation des bibliothèques, il est maintenant temps de les utiliser ! La première chose à faire est d'utiliser la bibliothèque Minecraft, nous voulons connecter notre script python au monde Minecraft, nous pouvons le faire en appelant la fonction init() de la bibliothèque MCPI, puis définir le mode GPIO et désactiver l'avertissement.

mc = Minecraft.create()GPIO.setmode(GPIO. BCM) GPIO.setwarnings(0)

Maintenant, nous définissons certaines couleurs arc-en-ciel en hexadécimal afin de pouvoir changer les couleurs RVB.

BLANC = 0xFFFFFF ROUGE = 0xFF0000 ORANGE = 0xFF7F00 JAUNE = 0xFFFF00 VERT = 0x00FF00 CYAN = 0x00FFFF BLEU = 0x0000FF VIOLET = 0xFF00FF MAGENTA = 0xFF0090

Ensuite, nous devons définir certaines variables pour enregistrer la couleur du bloc de laine, qui est déjà définie dans la liste de blocs 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

L'identifiant du bloc de laine dans Minecraft est 35. Maintenant, nous devons configurer la broche pour la LED RVB et la configurer pour eux.

red_pin = 17 green_pin = 18 blue_pin = 27

GPIO.setup(red_pin, GPIO. OUT, initial=1) GPIO.setup(green_pin, GPIO. OUT, initial=1) GPIO.setup(blue_pin, GPIO. OUT, initial=1)

Ensuite, configurez le PWM pour chaque broche, notez que la plage de valeur PWM est de 0 à 100. Ici, nous définissons d'abord la couleur de la led RVB sur blanc (100, 100, 100).

rouge = GPIO. PWM(red_pin, 100)

vert = GPIO. PWM(green_pin, 100)bleu = GPIO. PWM(blue_pin, 100) red.start (100) green.start (100) bleu.start (100)

Ce qui suit consiste à créer deux fonctions, qui peuvent être utilisées pour décoder la couleur et allumer la LED RVB ! Notez que la fonction map2hundred () consiste à mapper les valeurs de 255 à 100, comme nous l'avons dit précédemment, la valeur PWM doit être comprise entre 0 et 100.

def map2hundred (valeur): return int (valeur * 100 / 255)

def set_color(color_code): # Décoder red_value = color_code >> 16 & 0xFF green_value = color_code >> 8 & 0xFF blue_value = color_code >> 0 & 0xFF

# Valeurs de la carte red_value = map2hundred(red_value) green_value = map2hundred(green_value) blue_value = map2hundred(blue_value)

# Allumer! red. ChangeDutyCycle(red_value) green. ChangeDutyCycle(green_value) blue. ChangeDutyCycle(blue_value)

Bien fait! Il est temps de lancer notre programme principal, attendez, une autre variable doit être définie pour enregistrer le code couleur du bloc de laine avant le programme principal:

last_data = 0 essayez: 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) tant que True: x, y, z = mc.player.getPos() # position du joueur (x, y, z) block = mc.getBlockWithData(x, y-1, z) # block ID #print(block) if block.id == WOOL et 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_ JAUNE: print("Jaune!") set_color(JAUNE) 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) sauf KeyboardInterrupt: pass GPIO.cleanup()

Comme le programme principal est montré ci-dessus, d'abord pour utiliser certaines commandes pour générer des blocs de laine colorés, nous devons ensuite connaître la position du joueur afin que nous puissions obtenir l'identifiant des blocs et son code couleur. Après avoir obtenu les informations sur le bloc, nous utiliserons l'instruction pour déterminer si le bloc sous le lecteur est un bloc de laine et s'il a le code couleur. Si oui, jugez de la couleur du bloc de laine et appelez la fonction set_color() pour changer la couleur de la led RVB de la même manière que le bloc de laine.

De plus, nous ajoutons une instruction try/except pour intercepter l'exception d'interruption utilisateur lorsque nous voulons quitter le programme pour effacer la sortie des broches GPIO.

Ci-joint le code complet.

Bravo, tellement d'accessoires et trop compliqué non ? Ne vous inquiétez pas, voyons la deuxième méthode pour réaliser le projet, qui vous fera vous sentir plus flexible et pratique, qui utilise notre CrowPi2 !

Étape 5: Le résultat

Image
Image

Ouvrez le jeu et lancez le script, vous verrez le résultat dans la vidéo ci-dessus

Ensuite, nous utiliserons CrowPi2 pour construire le pont interactif Rainbow ensuite

Étape 6: Utilisation de CrowPi2-Materials

●1 x CrowPi2

Étape 7: Utilisation du schéma de connexion CrowPi2

Ce n'est pas nécessaire. Il existe de nombreux capteurs et composants utiles (plus de 20) sur CrowPi2, tout cela dans un ordinateur portable raspberry pi et une plate-forme d'éducation STEM qui nous permet de réaliser plusieurs projets avec facilité et sans sueur ! Dans ce cas, nous utiliserons un module attrayant et coloré sur CrowPi2, qui est un module matriciel RVB 8x8, qui nous permet de contrôler 64 leds RVB en même temps !

Étape 8: Utilisation de CrowPi2 - Configurer pour SPI

Ce n'est pas nécessaire. CrowPi2 est livré avec une image intégrée avec un système d'apprentissage ! Tout a été préparé, ce qui signifie que vous pouvez programmer et apprendre directement. De plus, avec notre CrowPi2, c'est facile et déjà intégré à la carte en tant que plate-forme STEAM prête à l'emploi.

Étape 9: Utilisation de CrowPi2 - le code

Maintenant, il est temps de commencer notre programme! Tout d'abord, importez quelques bibliothèques, telles que la bibliothèque MCPI qui est la bibliothèque Minecraft Pi Python qui nous permet d'utiliser une API très simple pour s'intégrer au monde Minecraft; bibliothèque de temps qui nous permet à la fonction sleep d'attendre un intervalle spécifique avant d'exécuter une fonction; Bibliothèque RPi. GPIO qui nous permet de contrôler les broches GPIO du Raspberry Pi.

de mcpi.minecraft importer Minecraft à partir de l'heure importer dormir importer RPi. GPIO en tant que GPIO

Enfin, nous importerons une bibliothèque appelée rpi_ws281x qui est la bibliothèque de matrice RVB, à l'intérieur de la bibliothèque, nous utiliserons plusieurs fonctions telles que PixelStrip pour configurer l'objet de bande LED et Color pour configurer un objet de couleur RVB à allumer nos LED RVB

de rpi_ws281x importer PixelStrip, couleur

Et voilà, nous en avons fini avec l'importation des bibliothèques, il est maintenant temps de les utiliser ! De même, la première chose à faire est d'utiliser la bibliothèque Minecraft, nous voulons connecter notre script python au monde Minecraft, nous pouvons le faire en appelant la fonction init de la bibliothèque MCPI:

mc = Minecraft.create()

Maintenant, chaque fois que nous voulons effectuer des opérations sur le monde minecrat, nous pouvons utiliser l'objet mc.

La prochaine étape sera de définir la classe de matrice LED RVB que nous utiliserons pour contrôler nos LED RVB, nous initialisons la classe avec la configuration de base comme le nombre de leds, de broches, la luminosité etc…

nous créons une fonction appelée clean qui "nettoiera" le moins avec une couleur spécifique donnée et aussi une fonction appelée run qui initialisera l'objet LED RGB réel à la première fois que nous voulons l'utiliser.

classe RGB_Matrix:

def _init_(self):

# Configuration de la bande LED:

self. LED_COUNT = 64 # Nombre de pixels LED.

self. LED_PIN = 12 # broche GPIO connectée aux pixels (18 utilise PWM !).

self. LED_FREQ_HZ = 800000 # Fréquence du signal LED en hertz (généralement 800khz)

self. LED_DMA = 10 # canal DMA à utiliser pour générer le signal (essayez 10)

self. LED_BRIGHTNESS = 10 # Mettre à 0 pour le plus sombre et 255 pour le plus clair

self. LED_INVERT = False # True pour inverser le signal

self. LED_CHANNEL = 0 # défini sur '1' pour les GPIO 13, 19, 41, 45 ou 53

# Définir des fonctions qui animent les LED de différentes manières. def clean(self, strip, color):

# essuyez toutes les LED à la fois

pour i dans la plage (strip.numPixels()):

strip.setPixelColor(i, couleur)

strip.show()

def run(self):

# Créez un objet NeoPixel avec une configuration appropriée.

bande = PixelStrip(self. LED_COUNT, self. LED_PIN, self. LED_FREQ_HZ, self. LED_DMA, self. LED_INVERT, self. LED_BRIGHTNESS, self. LED_CHANNEL)

essayer:

bande de retour

sauf KeyboardInterrupt:

# nettoyer la matrice LED avant interruption

auto.nettoyer (bander)

Une fois que nous avons terminé avec ce qui précède, il est temps d'invoquer ces classes et de créer des objets que nous pouvons utiliser dans notre code, créons d'abord un objet de matrice LED RVB que nous pouvons utiliser à l'aide de la classe que nous avons créée précédemment:

MatrixObject = RGB_Matrix()

Utilisons maintenant cet objet pour créer un objet bande LED active que nous utiliserons pour contrôler nos LED individuelles sur la matrice RVB:

bande = matriceObjet.run()

Enfin pour activer cette bande, nous aurons besoin d'exécuter une dernière fonction:

strip.begin()

L'API Minecraft comprend de nombreux blocs, chaque bloc Minecraft a son propre identifiant. Dans notre exemple, nous avons pris une certaine quantité de blocs Minecraft et essayé de deviner quelle couleur leur convient le mieux.

RVB signifie rouge, vert et bleu, nous aurons donc besoin de 3 valeurs différentes allant de 0 à 255 pour chacune, les couleurs peuvent être au format HEX ou RVB, nous utilisons le format RVB pour notre exemple.

Dans le monde Minecraft Pi, il existe des identifiants de blocs normaux et des identifiants de blocs de laine spéciaux, la laine spéciale relève du numéro d'identification 35 mais avec des sous-numéros allant à de nombreux identifiants différents… Nous allons résoudre ce problème en créant 2 listes distinctes, une pour les blocs normaux et une liste pour les blocs de laine spéciaux:

La première liste est pour les blocs normaux, par exemple 0 représente le bloc Air, nous allons le définir de couleur 0, 0, 0 qui est vide ou complètement blanc, lorsque le joueur sautera ou volera dans le jeu, le RVB s'éteindra, 1 est un bloc différent avec la couleur RVB 128, 128, 128 et ainsi de suite…

#Couleurs de l'arc-en-ciel

couleurs_arc-en-ciel = {

"0":Couleur (0, 0, 0), "1":Couleur (128, 128, 128), "2":Couleur (0, 255, 0), "3":Couleur (160, 82, 45), "4":Couleur (128, 128, 128), "22":Couleur (0, 0, 255)

}

Pour les blocs de laine nous faisons la même chose mais il est important de se rappeler que tous les blocs ont un ID de 35, dans cette liste nous définissons les sous-types du bloc qui est le bloc de laine. Différents sous-types de laine ont des couleurs différentes, mais tous sont des blocs de laine.

couleurs_laine = {

"6":Couleur (255, 105, 180), "5":Couleur (0, 255, 0), "4":Couleur (255, 255, 0), "14":Couleur (255, 0, 0), "2":Couleur (255, 0, 255)

}

Maintenant, lorsque nous avons fini de définir notre programme principal, nos classes et nos fonctions, il est temps de l'intégrer à notre capteur embarqué à LED CrowPi2 RGB.

Le programme principal prendra les paramètres que nous avons définis précédemment et mettra l'impact sur le matériel.

Nous allons utiliser la LED CrowPi2 RGB afin de les éclairer en fonction des étapes que nous effectuons à l'intérieur du Minecraft Pi sur chaque bloc, commençons !

La première chose que nous allons faire est de générer des blocs de laine avec des commandes et de créer une boucle while, pour que le programme continue de fonctionner tant que nous jouons au jeu.

Nous aurons besoin d'obtenir des données du joueur, nous utilisons d'abord la commande player.getPos() pour obtenir la position du joueur, puis nous utilisons getBlockWithData() pour obtenir le bloc sur lequel nous nous trouvons actuellement (la coordonnée y est -1 qui signifie sous le lecteur)

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)

tant que vrai:

x, y, z = mc.player.getPos() # position du joueur (x, y, z)

blockType, data = mc.getBlockWithData(x, y-1, z) # ID de bloc

print(blockType)

Ensuite, nous vérifierons si le bloc est un bloc de laine, numéro d'identification du bloc 35, si c'est le cas, nous nous référerons à laine_colors avec la couleur du bloc en fonction de l'ID du dictionnaire et éclairerons la bonne couleur en conséquence.

si blockType == 35:

# couleurs de laine personnalisées

matrixObject.clean(strip, laine_colors[str(data)])

Si ce n'est pas un bloc de laine, nous vérifierons si le bloc est actuellement dans le dictionnaire rainbow_colors pour éviter les exceptions, si c'est le cas, nous continuerons en prenant la couleur et en changeant le RVB.

if str(blockType) dans rainbow_colors:

print(rainbow_colors[str(blockType)])

matrixObject.clean(strip, rainbow_colors[str(blockType)])

dormir (0,5)

Vous pouvez toujours essayer d'ajouter plus de blocs à rainbow_color pour ajouter plus de couleurs et plus de support de blocs !

Parfait! Réaliser des projets avec des accessoires est compliqué mais avec le circuit intégré CrowPi2, les choses deviennent beaucoup plus faciles ! De plus, il y a plus de 20 capteurs et composants sur CrowPi2, ce qui vous permet de réaliser vos projets idéaux et même des projets d'IA !

Ci-dessous le code complet:

Étape 10: Utilisation de CrowPi2-le résultat

Ouvrez le jeu et lancez le script, vous verrez le résultat dans la vidéo ci-dessus:

Étape 11: Utiliser CrowPi2 - Aller plus loin

Nous avons maintenant terminé notre projet coloré dans le jeu Minecraft avec CrowPi2. Pourquoi ne pas essayer d'utiliser d'autres capteurs et composants sur CrowPi2 pour jouer avec le jeu, comme un joystick pour contrôler les mouvements du joueur, RFID pour générer des blocs basés sur différentes cartes NFC, etc. Amusez-vous avec votre jeu sur CrowPi2 et espérons que vous pourrez le faire plus de projets incroyables avec CrowPi2 !

Maintenant, CrowPi2 est maintenant sur Kickstarter, vous pouvez également profiter du prix attractif.

Attachez le lien de la page Kickstarter CrowPi2

Conseillé: