Κατασκευάστε το Rainbow Interactive Bridge χρησιμοποιώντας το Minecraft Raspberry Pi Edition: 11 βήματα
Κατασκευάστε το Rainbow Interactive Bridge χρησιμοποιώντας το Minecraft Raspberry Pi Edition: 11 βήματα
Anonim
Image
Image

Χθες, είδα τον 8χρονο ανιψιό μου να παίζει το Minecraft με το Raspberry Pi που του έδωσα πριν, τότε πήρα μια ιδέα, ότι χρησιμοποιεί τον κώδικα για να δημιουργήσω ένα προσαρμοσμένο και συναρπαστικό έργο μπλοκ LED Minecraft-pi. Το Minecraft Pi είναι ένας πολύ καλός τρόπος για να ξεκινήσετε με τον μικροϋπολογιστή Raspberry Pi, το Minecraft Pi είναι μια ειδική προσαρμοσμένη έκδοση του Minecraft που μας επιτρέπει να αλληλεπιδράσουμε με το παιχνίδι χρησιμοποιώντας ένα θανατηφόρο απλό Python API για να προσαρμόσουμε την εμπειρία του παιχνιδιού!

Υπάρχουν πολλά έργα που μπορείτε να κάνετε στον κόσμο του Minecraft με το Raspberry Pi, αλλά συγκεκριμένα για εμάς δεν ήταν αρκετό, ψάχναμε κάτι προκλητικό και ταυτόχρονα αναβοσβήνει. Σε αυτό το έργο, θα πατήσουμε σε πολλά μπλοκ Minecraft, θα εντοπίσουμε το αναγνωριστικό του μπλοκ και θα ανιχνεύσουμε το χρώμα του συγκεκριμένου μπλοκ στο οποίο πατήσαμε, με βάση το χρώμα που θα ανάψουμε το RGB LED για να δημιουργήσουμε παιχνίδι διαδραστικών βημάτων!

Θα χρησιμοποιήσω δύο μεθόδους για να επιτύχω το αποτέλεσμα, η πρώτη είναι η χρήση αξεσουάρ, τα οποία μπορεί να είναι πολύ χαοτικά… το δεύτερο χρησιμοποιεί το CrowPi2 (εκμάθηση υπολογιστή με πολλούς αισθητήρες, επί του παρόντος crowdfunded στο Kickstarter: CrowPi2)

ας ξεκινήσουμε και να δούμε πώς να αρχειοθετήσουμε ένα τόσο καταπληκτικό έργο!

Προμήθειες

Το CrowPi2 είναι τώρα ζωντανό στο kickstarter, το έργο CrowPi2 έχει συγκεντρώσει σχεδόν $ 250k.

Πατήστε τον σύνδεσμο:

Μέθοδος 1 Χρήση αξεσουάρ

Βήμα 1: Υλικά

● 1 x Raspberry Pi 4 μοντέλο Β

● 1 x κάρτα TF με εικόνα

● 1 x τροφοδοτικό Raspberry Pi

● Οθόνη 1 x 10,1 ιντσών

X 1 x Τροφοδοσία για οθόνη

● 1 x καλώδιο HDMI

● 1 x Πληκτρολόγιο και ποντίκι

X 1 x led RGB (κοινή κάθοδος)

● 4 x άλτες (από γυναίκα σε γυναίκα)

Βήμα 2: Διάγραμμα σύνδεσης

Διάγραμμα σύνδεσης
Διάγραμμα σύνδεσης

Στην πραγματικότητα υπάρχουν τρία φώτα στο έγχρωμο LED RGB, τα οποία είναι κόκκινο φως, πράσινο φως και μπλε φως. Ελέγξτε αυτά τα τρία φώτα για να εκπέμπουν φως διαφορετικής έντασης και όταν αναμειχθούν, μπορούν να εκπέμπουν φως διαφόρων χρωμάτων. Οι τέσσερις ακίδες στο φως LED είναι GND, R, G και B, αντίστοιχα. Το LED RGB που χρησιμοποίησα είναι μια κοινή κάθοδος και η σύνδεση με το Raspberry Pi έχει ως εξής:

RaspberryPi 4B (στο όνομα λειτουργίας) LED RGB

GPIO0 1 ΚΟΚΚΙΝΟ

GPIO1 3 ΠΡΑΣΙΝΟ

GPIO2 4 ΜΠΛΕ

GND 2 GND

Η δεύτερη εικόνα είναι η σύνδεση υλικού

Βήμα 3: Διαμόρφωση για SPI

Διαμόρφωση για SPI
Διαμόρφωση για SPI
Διαμόρφωση για SPI
Διαμόρφωση για SPI
Διαμόρφωση για SPI
Διαμόρφωση για SPI
Διαμόρφωση για SPI
Διαμόρφωση για SPI

Επειδή πρέπει να χρησιμοποιήσουμε το SPI για τον έλεγχο του RGB, πρέπει πρώτα να ενεργοποιήσουμε τη διεπαφή SPI, η οποία είναι απενεργοποιημένη από προεπιλογή. Μπορείτε να ακολουθήσετε τα παρακάτω βήματα για να ενεργοποιήσετε τη διεπαφή SPI:

Πρώτον, μπορείτε να χρησιμοποιήσετε το γραφικό περιβάλλον εργασίας γραφείου, μεταβαίνοντας στο Pi start MenupreferencesRaspberry Pi Configuration, όπως φαίνεται στην πρώτη εικόνα.

Δεύτερον, μεταβείτε στο "Interfaces" και ενεργοποιήστε το SPI και κάντε κλικ στο OK (η δεύτερη εικόνα).

Τέλος, επανεκκινήστε το Pi σας για να βεβαιωθείτε ότι οι αλλαγές θα τεθούν σε ισχύ. Κάντε κλικ στο Pi Start MenuPreferencesShutdown. Δεδομένου ότι πρέπει απλά να κάνουμε επανεκκίνηση, κάντε κλικ στο κουμπί Επανεκκίνηση.

Βήμα 4: Ο κώδικας

Θα ξεκινήσουμε γράφοντας τον κώδικα python, πρώτα, θα ξεκινήσουμε εισάγοντας μερικές βιβλιοθήκες που θα χρειαστούμε για να ενσωματώσουμε τον κώδικά μας στον κόσμο του Minecraft. Στη συνέχεια, θα εισαγάγουμε τη βιβλιοθήκη ώρας, συγκεκριμένα μια συνάρτηση που ονομάζεται ύπνος. Η λειτουργία ύπνου θα μας επιτρέψει να περιμένουμε ένα συγκεκριμένο διάστημα πριν εκτελέσουμε μια συνάρτηση. Τελευταίο αλλά όχι λιγότερο σημαντικό, εισάγουμε βιβλιοθήκη RPi. GPIO που μας επιτρέπει να ελέγχουμε το GPIO στο Raspberry Pi.

από mcpi.minecraft import Minecraft from time import sleep sleep RPi. GPIO ως GPIO

Και αυτό είναι, τελειώσαμε με την εισαγωγή των βιβλιοθηκών, τώρα ήρθε η ώρα να τις χρησιμοποιήσουμε! Πρώτα απ 'όλα, είναι να χρησιμοποιήσετε τη βιβλιοθήκη Minecraft, θέλουμε να συνδέσουμε το σενάριο python μας στον κόσμο του Minecraft, μπορούμε να το κάνουμε κάνοντας κλήση στη λειτουργία init () της βιβλιοθήκης MCPI και, στη συνέχεια, ορίζοντας τη λειτουργία του GPIO και απενεργοποιώντας την προειδοποίηση.

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

Τώρα, ορίζουμε μερικά χρώματα ουράνιου τόξου σε δεκαεξαδικό, ώστε να μπορούμε να αλλάξουμε χρώματα RGB.

ΛΕΥΚΟ = 0xFFFFFF ΚΟΚΚΙΝΟ = 0xFF0000 ΠΟΡΤΟΚΑΛΙ = 0xFF7F00 ΚΙΤΡΙΝΟ = 0xFFFF00 ΠΡΑΣΙΝΟ = 0x00FF00 CYAN = 0x00FFFF ΜΠΛΕ = 0x0000FF PURPLE = 0xFF00FF MAGENTA = 0xFF0090

Στη συνέχεια, πρέπει να ορίσουμε ορισμένες μεταβλητές για να καταγράψουμε το χρώμα του μπλοκ μαλλιού, το οποίο έχει ήδη οριστεί στη λίστα μπλοκ 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

Το αναγνωριστικό του μπλοκ μαλλιού στο Minecraft είναι 35. Τώρα, πρέπει να διαμορφώσουμε την καρφίτσα για led RGB και να την ρυθμίσουμε.

red_pin = 17 green_pin = 18 blue_pin = 27

GPIO.setup (red_pin, GPIO. OUT, αρχικό = 1) GPIO.setup (green_pin, GPIO. OUT, αρχικό = 1) GPIO.setup (blue_pin, GPIO. OUT, αρχικό = 1)

Στη συνέχεια, ρυθμίστε το PWM για κάθε ακίδα, σημειώστε ότι το εύρος της τιμής PWM είναι 0-100. Εδώ, ορίσαμε πρώτα το χρώμα του RGB led σε λευκό (100, 100, 100).

κόκκινο = GPIO. PWM (red_pin, 100)

πράσινο = GPIO. PWM (green_pin, 100) blue = GPIO. PWM (blue_pin, 100) red.start (100) green.start (100) blue.start (100)

Ακολουθεί η δημιουργία δύο λειτουργιών, οι οποίες μπορούν να χρησιμοποιηθούν για να αποκωδικοποιήσουν το χρώμα και να φωτίσουν το RGB που εμφανίζεται! Σημειώστε ότι η συνάρτηση map2hundred () είναι η αντιστοίχιση τιμών από 255 έως 100, όπως προαναφέραμε, η τιμή PWM πρέπει να είναι 0-100.

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

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

# Τιμές χάρτη red_value = map2hundred (red_value) green_value = map2hundred (green_value) blue_value = map2hundred (blue_value)

# Φωτίσουν! κόκκινο. ChangeDutyCycle (red_value) green. ChangeDutyCycle (green_value) blue. ChangeDutyCycle (blue_value)

Μπράβο! Itρθε η ώρα να ξεκινήσουμε το κύριο πρόγραμμά μας, περιμένετε, μια άλλη μεταβλητή θα πρέπει να οριστεί για την καταγραφή του χρωματικού κωδικού του μπλοκ μαλλιού πριν από το κύριο πρόγραμμα:

last_data = 0 try: 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) ενώ True: x, y, z = mc.player.getPos () # θέση παίκτη (x, y, z) block = mc.getBlockWithData (x, y-1, z) # block ID #print (block) if block.id == WOOL και last_data! = Block.data: if block.data == W_RED: print ("Red!") Set_color (RED) if block.data == W_ORANGE: print ("Orange!") Set_color (ORANGE) αν block.data == W_ ΚΙΤΡΙΝΟ: 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) εκτός KeyboardIntruptrupt: pass GPIO.cleanup ()

Όπως φαίνεται το κύριο πρόγραμμα παραπάνω, πρώτα να χρησιμοποιήσουμε μερικές εντολές για να δημιουργήσουμε μερικά πολύχρωμα μπλοκ μαλλιού, στη συνέχεια θα πρέπει να μάθουμε τη θέση του παίκτη, ώστε να μπορέσουμε να πάρουμε το αναγνωριστικό των μπλοκ και τον κωδικό χρώματος. Αφού λάβουμε τις πληροφορίες μπλοκ, θα χρησιμοποιήσουμε τη δήλωση για να καθορίσουμε εάν το μπλοκ κάτω από τη συσκευή αναπαραγωγής είναι μπλοκ μαλλιού και αν έχει τον κωδικό χρώματος. Εάν ναι, κρίνετε ποιο χρώμα είναι το μπλοκ μαλλιού και καλέστε τη συνάρτηση set_color () για να αλλάξετε το χρώμα του RGB led το ίδιο με το μπλοκ μαλλιού.

Επιπλέον, προσθέτουμε μια δήλωση try/only για να πιάσουμε την εξαίρεση της διακοπής χρήστη όταν θέλουμε να τερματίσουμε το πρόγραμμα για να διαγράψουμε την έξοδο των καρφιτσών GPIO.

Επισυνάπτεται ο πλήρης κωδικός.

Μπράβο, τόσα πολλά αξεσουάρ και πολύ περίπλοκα σωστά; Μην ανησυχείτε, ας δούμε τη δεύτερη μέθοδο για την επίτευξη του έργου, η οποία θα σας κάνει να νιώσετε πιο ευέλικτοι και βολικοί, που χρησιμοποιεί το CrowPi2!

Βήμα 5: Το αποτέλεσμα

Image
Image

Ανοίξτε το παιχνίδι και εκτελέστε το σενάριο, θα δείτε το αποτέλεσμα στο παραπάνω βίντεο

Στη συνέχεια, θα χρησιμοποιήσουμε το CrowPi2 για να δημιουργήσουμε τη διαδραστική γέφυρα Rainbow στη συνέχεια

Βήμα 6: Χρήση υλικών CrowPi2

● 1 x CrowPi2

Βήμα 7: Χρήση του διαγράμματος σύνδεσης CrowPi2

Δεν χρειάζεται. Υπάρχουν πολλοί χρήσιμοι αισθητήρες και εξαρτήματα (περισσότερα από 20) στο CrowPi2, είναι όλα σε ένα φορητό υπολογιστή raspberry pi και μια εκπαιδευτική πλατφόρμα STEM που μας επιτρέπει να κάνουμε πολλά έργα με ευκολία και χωρίς ιδρώτα! Σε αυτή την περίπτωση, θα χρησιμοποιήσουμε μια ελκυστική και πολύχρωμη μονάδα στο CrowPi2, η οποία είναι μια μονάδα μήτρας 8x8 RGB, η οποία μας επιτρέπει να ελέγχουμε ταυτόχρονα led 64 RGB!

Βήμα 8: Χρήση του CrowPi2- Διαμόρφωση για SPI

Δεν χρειάζεται. Το CrowPi2 έρχεται με ενσωματωμένη εικόνα με σύστημα εκμάθησης! Όλα έχουν προετοιμαστεί, πράγμα που σημαίνει ότι μπορείτε να προγραμματίσετε και να μάθετε απευθείας. Εξάλλου, με το CrowPi2 μας είναι εύκολο και ήδη ενσωματωμένο στον πίνακα ως πλατφόρμα STEAM έτοιμο να ξεκινήσει.

Βήμα 9: Χρήση του CrowPi2- του κώδικα

Τώρα, ήρθε η ώρα να ξεκινήσουμε το πρόγραμμα μας! Αρχικά, εισαγάγετε μερικές βιβλιοθήκες, όπως η βιβλιοθήκη MCPI που είναι η βιβλιοθήκη Minecraft Pi Python που μας επιτρέπει να χρησιμοποιήσουμε ένα πολύ απλό API για να ενσωματωθούμε στον κόσμο του Minecraft. βιβλιοθήκη χρόνου που μας επιτρέπει να κοιμηθούμε τη λειτουργία για να περιμένουμε ένα συγκεκριμένο διάστημα πριν εκτελέσουμε μια συνάρτηση. Βιβλιοθήκη RPi. GPIO που μας επιτρέπει να ελέγχουμε τις ακίδες Raspberry Pi GPIO.

από το mcpi.minecraft import Minecraft from time import sleep import RPi. GPIO ως GPIO

Τέλος, θα εισαγάγουμε μια βιβλιοθήκη που ονομάζεται rpi_ws281x, η οποία είναι η βιβλιοθήκη RGB Matrix, μέσα στη βιβλιοθήκη, υπάρχουν πολλαπλές λειτουργίες που θα χρησιμοποιήσουμε, όπως το PixelStrip για τη ρύθμιση του αντικειμένου λωρίδας LED και το Color για τη διαμόρφωση ενός αντικειμένου χρώματος RGB για φωτισμό τα LED μας RGB

από rpi_ws281x εισαγωγή PixelStrip, Χρώμα

Και αυτό είναι, τελειώσαμε με την εισαγωγή των βιβλιοθηκών, τώρα ήρθε η ώρα να τις χρησιμοποιήσουμε! Ομοίως, το πρώτο πράγμα είναι να χρησιμοποιήσετε τη βιβλιοθήκη Minecraft, θέλουμε να συνδέσουμε το σενάριο python με τον κόσμο του Minecraft. Αυτό μπορούμε να το κάνουμε επικαλούμενοι τη λειτουργία init της βιβλιοθήκης MCPI:

mc = Minecraft.create ()

Τώρα κάθε φορά που θέλουμε να εκτελέσουμε λειτουργίες στον κόσμο του minecrat, μπορούμε να χρησιμοποιήσουμε το αντικείμενο mc.

Το επόμενο βήμα θα είναι να καθορίσουμε την κλάση μήτρας RGB LED που θα χρησιμοποιήσουμε για τον έλεγχο των LED RGB, αρχικοποιούμε την τάξη με βασικές ρυθμίσεις, όπως αριθμό led, καρφίτσες, φωτεινότητα κλπ…

δημιουργούμε μια συνάρτηση που ονομάζεται καθαρή, η οποία θα "καθαρίζει" λιγότερο με συγκεκριμένο χρώμα και επίσης μια συνάρτηση που ονομάζεται εκτέλεση που θα αρχικοποιήσει το πραγματικό αντικείμενο RGB LED την πρώτη φορά που θέλουμε να το χρησιμοποιήσουμε.

κατηγορία RGB_Matrix:

def _init _ (self):

# Διαμόρφωση λωρίδας LED:

self. LED_COUNT = 64 # Αριθμός εικονοστοιχείων LED.

self. LED_PIN = 12 # καρφίτσα GPIO συνδεδεμένος με τα εικονοστοιχεία (18 χρησιμοποιεί PWM!).

self. LED_FREQ_HZ = 800000 # Συχνότητα σήματος LED σε hertz (συνήθως 800khz)

self. LED_DMA = 10 # κανάλι DMA για χρήση για τη δημιουργία σήματος (δοκιμάστε 10)

self. LED_BRIGHTNESS = 10 # Ορίστε στο 0 για το πιο σκοτεινό και 255 για το πιο φωτεινό

self. LED_INVERT = Λάθος # Σωστό για αντιστροφή του σήματος

self. LED_CHANNEL = 0 # ορίστηκε σε '1' για GPIO 13, 19, 41, 45 ή 53

# Ορίστε τις λειτουργίες που ζωντανεύουν τις λυχνίες LED με διάφορους τρόπους. def καθαρισμός (μόνος, λωρίδα, χρώμα):

# σκουπίστε όλα τα LED ταυτόχρονα

για i στο εύρος (strip.numPixels ()):

strip.setPixelColor (i, χρώμα)

strip.show ()

def run (self):

# Δημιουργήστε αντικείμενο NeoPixel με κατάλληλη διαμόρφωση.

λωρίδα = PixelStrip (self. LED_COUNT, self. LED_PIN, self. LED_FREQ_HZ, self. LED_DMA, self. LED_INVERT, self. LED_BRIGHTNESS, self. LED_CHANNEL)

προσπαθήστε:

λωρίδα επιστροφής

εκτός από το KeyboardIntruptrupt:

# καθαρίστε τη λυχνία LED μήτρας πριν από τη διακοπή

self.clean (λωρίδα)

Αφού τελειώσουμε με τα παραπάνω, ήρθε η ώρα να επικαλεστούμε αυτές τις κλάσεις και να δημιουργήσουμε αντικείμενα που μπορούμε να χρησιμοποιήσουμε στον κώδικά μας, πρώτα ας δημιουργήσουμε ένα αντικείμενο μήτρας RGB LED που μπορούμε να χρησιμοποιήσουμε χρησιμοποιώντας την κλάση που δημιουργήσαμε νωρίτερα:

matrixObject = RGB_Matrix ()

Τώρα ας χρησιμοποιήσουμε αυτό το αντικείμενο για να δημιουργήσουμε ενεργό αντικείμενο λωρίδας LED που θα χρησιμοποιήσουμε για τον έλεγχο των επιμέρους LED μας στο RGB Matrix:

strip = matrixObject.run ()

Τέλος, για να ενεργοποιήσουμε αυτήν τη λωρίδα, θα χρειαστεί να εκτελέσουμε μια τελευταία συνάρτηση:

strip.begin ()

Το Minecraft API περιλαμβάνει πολλά μπλοκ, κάθε μπλοκ Minecraft έχει το δικό του αναγνωριστικό. Στο παράδειγμά μας, πήραμε κάποια ποσότητα μπλοκ Minecraft και προσπαθήσαμε να μαντέψουμε ποιο χρώμα είναι πιο κατάλληλο για αυτά.

Το RGB σημαίνει κόκκινο, πράσινο και μπλε, έτσι θα χρειαστούμε 3 διαφορετικές τιμές που κυμαίνονται από 0 έως 255 για κάθε μία, τα χρώματα μπορεί να είναι μορφή HEX ή RGB, χρησιμοποιούμε τη μορφή RGB για το παράδειγμά μας.

Στον κόσμο του Minecraft Pi υπάρχουν κανονικά αναγνωριστικά μπλοκ και ειδικά αναγνωριστικά μπλοκ μαλλιού, το ειδικό μαλλί υπάγεται στον αριθμό ταυτότητας 35 αλλά με υπο -αριθμούς που κυμαίνονται σε πολλά διαφορετικά αναγνωριστικά… Θα λύσουμε αυτό το πρόβλημα δημιουργώντας 2 ξεχωριστές λίστες, μία για κανονικά μπλοκ και μια λίστα για ειδικά μπλοκ μαλλιού:

Η πρώτη λίστα είναι για κανονικά μπλοκ, για παράδειγμα 0 αντιπροσωπεύει το μπλοκ αέρα, θα το ορίσουμε χρώμα 0, 0, 0 που είναι κενό ή εντελώς λευκό, όταν ο παίκτης θα πηδήξει ή θα πετάξει στο παιχνίδι το RGB θα απενεργοποιηθεί, 1 είναι διαφορετικό μπλοκ με χρώμα RGB 128, 128, 128 και ούτω καθεξής…

#Χρώματα ουράνιου τόξου

rainbow_colors = {

"0": Χρώμα (0, 0, 0), "1": Χρώμα (128, 128, 128), "2": Χρώμα (0, 255, 0), "3": Χρώμα (160, 82, 45), "4": Χρώμα (128, 128, 128), "22": Χρώμα (0, 0, 255)

}

Για τα μπλοκ μαλλιού κάνουμε το ίδιο, αλλά είναι σημαντικό να θυμόμαστε ότι όλα τα μπλοκ έχουν αναγνωριστικό 35, σε αυτήν τη λίστα ορίζουμε τους υποτύπους του μπλοκ που είναι μπλοκ μαλλιού. Διαφορετικοί τύποι μαλλιού έχουν διαφορετικά χρώματα, αλλά όλοι είναι μπλοκ μαλλιού.

μαλλί_χρώματα = {

"6": Χρώμα (255, 105, 180), "5": Χρώμα (0, 255, 0), "4": Χρώμα (255, 255, 0), "14": Χρώμα (255, 0, 0), "2": Χρώμα (255, 0, 255)

}

Τώρα που έχουμε τελειώσει με τον καθορισμό του κύριου προγράμματος, των τάξεων και των λειτουργιών μας, ήρθε η ώρα να ενσωματωθούμε με τον ενσωματωμένο αισθητήρα CrowPi2 RGB LED.

Το κύριο πρόγραμμα θα λάβει τις παραμέτρους που ορίσαμε νωρίτερα και θα επηρεάσει το υλικό.

Θα χρησιμοποιήσουμε το CrowPi2 RGB LED για να τα φωτίσουμε με βάση τα βήματα που κάνουμε μέσα στο Minecraft Pi σε κάθε μπλοκ, ας ξεκινήσουμε!

Το πρώτο πράγμα που θα κάνουμε είναι να δημιουργήσουμε μερικά μπλοκ μαλλιού με εντολές και να δημιουργήσουμε ένα βρόχο while, για να διατηρήσουμε το πρόγραμμα σε λειτουργία όσο παίζουμε το παιχνίδι.

Θα χρειαστεί να λάβουμε ορισμένα δεδομένα από τη συσκευή αναπαραγωγής, πρώτα χρησιμοποιούμε την εντολή player.getPos () για να πάρουμε τη θέση του παίκτη και στη συνέχεια χρησιμοποιούμε το getBlockWithData () για να πάρουμε το μπλοκ στο οποίο βρισκόμαστε αυτήν τη στιγμή (η συντεταγμένη y είναι -1 σημαίνει κάτω από τον παίκτη)

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)

ενώ True:

x, y, z = mc.player.getPos () # θέση παίκτη (x, y, z)

blockType, data = mc.getBlockWithData (x, y-1, z) # αναγνωριστικό μπλοκ

εκτύπωση (blockType)

Στη συνέχεια, θα ελέγξουμε εάν το μπλοκ είναι μάλλινο μπλοκ, αριθμός αναγνωριστικού μπλοκ 35, αν είναι, θα αναφερθούμε σε χρώματα μαλλιού με το χρώμα του μπλοκ με βάση το αναγνωριστικό του λεξικού και θα φωτίσουμε ανάλογα το σωστό χρώμα.

αν blockType == 35:

# προσαρμοσμένα χρώματα μαλλιού

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

Αν δεν πρόκειται για μάλλινο μπλοκ, θα ελέγξουμε αν το μπλοκ βρίσκεται επί του παρόντος στο λεξικό rainbow_colors για να αποφύγουμε εξαιρέσεις, αν είναι θα συνεχίσουμε παίρνοντας το χρώμα και αλλάζοντας το RGB.

εάν str (blockType) σε rainbow_colors:

εκτύπωση (rainbow_colors [str (blockType)])

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

ύπνος (0,5)

Μπορείτε πάντα να δοκιμάσετε και να προσθέσετε περισσότερα μπλοκ στο rainbow_color για να προσθέσετε περισσότερα χρώματα και περισσότερη υποστήριξη μπλοκ!

Τέλειος! Η εκτέλεση έργων με αξεσουάρ είναι περίπλοκη, αλλά χρησιμοποιώντας το ολοκληρωμένο κύκλωμα CrowPi2, τα πράγματα γίνονται πολύ πιο εύκολα! Επιπλέον, υπάρχουν περισσότεροι από 20 αισθητήρες και εξαρτήματα στο CrowPi2, το οποίο σας επιτρέπει να επιτύχετε τα ιδανικά έργα σας, ακόμη και έργα AI!

Παρακάτω είναι ο πλήρης κωδικός:

Βήμα 10: Χρήση του CrowPi2-το αποτέλεσμα

Ανοίξτε το παιχνίδι και εκτελέστε το σενάριο, θα δείτε το αποτέλεσμα στο παραπάνω βίντεο:

Βήμα 11: Χρήση του CrowPi2- Προχωρώντας περαιτέρω

Τώρα ολοκληρώσαμε το πολύχρωμο έργο μας στο παιχνίδι Minecraft με το CrowPi2. Γιατί να μην προσπαθήσετε να χρησιμοποιήσετε άλλους αισθητήρες και εξαρτήματα στο CrowPi2 για να παίξετε με το παιχνίδι, όπως το joystick για τον έλεγχο της κίνησης του παίκτη, το RFID για τη δημιουργία μπλοκ με βάση διαφορετικές κάρτες NFC κ.λπ. Διασκεδάστε με το παιχνίδι σας στο CrowPi2 και ελπίζετε ότι θα το κάνετε πιο απίθανα έργα με το CrowPi2!

Τώρα, το CrowPi2 είναι τώρα στο Kickstarter, μπορείτε επίσης να απολαύσετε την ελκυστική τιμή.

Επισυνάψτε τον σύνδεσμο της σελίδας Kickstarter CrowPi2