สารบัญ:
- เสบียง
- ขั้นตอนที่ 1: วัสดุ
- ขั้นตอนที่ 2: แผนภาพการเชื่อมต่อ
- ขั้นตอนที่ 3: กำหนดค่าสำหรับ SPI
- ขั้นตอนที่ 4: รหัส
- ขั้นตอนที่ 5: ผลลัพธ์
- ขั้นตอนที่ 6: การใช้ CrowPi2-Materials
- ขั้นตอนที่ 7: การใช้แผนภาพการเชื่อมต่อ CrowPi2-
- ขั้นตอนที่ 8: การใช้ CrowPi2- กำหนดค่าสำหรับ SPI
- ขั้นตอนที่ 9: การใช้ CrowPi2- รหัส
- ขั้นตอนที่ 10: การใช้ CrowPi2-ผลลัพธ์
- ขั้นตอนที่ 11: การใช้ CrowPi2- ก้าวต่อไป
วีดีโอ: สร้าง Rainbow Interactive Bridge โดยใช้ Minecraft Raspberry Pi Edition: 11 ขั้นตอน
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:03
เมื่อวานฉันเห็นหลานชายอายุ 8 ขวบเล่น Minecraft กับ Raspberry Pi ที่ฉันให้ไว้ก่อนหน้านี้ แล้วฉันก็ได้ไอเดีย นั่นคือการใช้โค้ดเพื่อสร้างโปรเจ็กต์บล็อก LED Minecraft-pi ที่น่าตื่นเต้นและปรับแต่งได้เอง Minecraft Pi เป็นวิธีที่ยอดเยี่ยมในการเริ่มต้นกับไมโครคอมพิวเตอร์ Raspberry Pi Minecraft Pi เป็นเวอร์ชันพิเศษของ Minecraft ที่สร้างขึ้นเองซึ่งช่วยให้เราสามารถโต้ตอบกับเกมได้โดยใช้ Python API ที่อันตรายถึงตายเพื่อปรับแต่งประสบการณ์เกมและอุปกรณ์ประกอบฉาก!
มีหลายโปรเจ็กต์ที่คุณสามารถทำได้ในโลก Minecraft ด้วย Raspberry Pi แต่สำหรับพวกเราโดยเฉพาะ มันยังไม่เพียงพอ เรากำลังมองหาบางสิ่งที่ท้าทายและกะพริบตาพร้อมๆ กัน ในโปรเจ็กต์นี้ เราจะเหยียบบล็อก Minecraft หลายบล็อก ตรวจหา ID ของบล็อก และตรวจหาสีของบล็อกเฉพาะที่เราเหยียบ ตามสีที่เราจะจุดไฟ LED RGB เพื่อสร้างเกมขั้นตอนแบบโต้ตอบ!
ฉันจะใช้สองวิธีเพื่อให้ได้เอฟเฟกต์ วิธีแรกคือการใช้เครื่องประดับ ซึ่งอาจจะดูวุ่นวายมาก…; อย่างที่สองคือการใช้ CrowPi2 (การเรียนรู้คอมพิวเตอร์ที่มีเซ็นเซอร์หลายตัว ปัจจุบันระดมทุนผ่าน Kickstarter:CrowPi2)
มาเริ่มกันเลย และดูวิธีการเก็บถาวรโครงการที่น่าทึ่งดังกล่าว!
เสบียง
ตอนนี้ CrowPi2 ใช้งานจริงบน kickstarter แล้ว โครงการ CrowPi2 ได้ระดมทุนเกือบ 250,000 ดอลลาร์
กดลิงค์:
วิธีที่ 1 การใช้อุปกรณ์เสริม
ขั้นตอนที่ 1: วัสดุ
● 1 x Raspberry Pi 4 รุ่น B
● การ์ด TF 1 ใบพร้อมรูปภาพ
● 1 x แหล่งจ่ายไฟ Raspberry Pi
● จอภาพ 1 x 10.1 นิ้ว
● 1 x แหล่งจ่ายไฟสำหรับจอภาพ
● 1 x สาย HDMI
● 1 x คีย์บอร์ดและเมาส์
● 1 x RGB led (แคโทดทั่วไป)
● 4 x จัมเปอร์ (หญิงกับหญิง)
ขั้นตอนที่ 2: แผนภาพการเชื่อมต่อ
ไฟ LED สี RGB มีสามดวง ได้แก่ แสงสีแดง แสงสีเขียว และแสงสีน้ำเงิน ควบคุมไฟทั้งสามดวงนี้เพื่อปล่อยแสงที่มีความเข้มต่างกัน และเมื่อผสมกันก็จะปล่อยแสงออกมาเป็นสีต่างๆ ได้ หมุดสี่ตัวบนไฟ LED คือ GND, R, G และ B ตามลำดับ RGB LED ที่ฉันใช้เป็นแคโทดทั่วไป และการเชื่อมต่อกับ Raspberry Pi มีดังนี้:
RaspberryPi 4B (ในชื่อฟังก์ชัน) RGB LED
GPIO0 1 สีแดง
GPIO1 3 สีเขียว
GPIO2 4 สีฟ้า
GND 2 GND
ภาพที่สองคือการเชื่อมต่อฮาร์ดแวร์
ขั้นตอนที่ 3: กำหนดค่าสำหรับ SPI
เนื่องจากเราจำเป็นต้องใช้ SPI เพื่อควบคุม RGB เราจึงต้องเปิดใช้งานอินเทอร์เฟซ SPI ก่อน ซึ่งจะถูกปิดใช้งานโดยค่าเริ่มต้น คุณสามารถทำตามขั้นตอนด้านล่างเพื่อเปิดใช้งานอินเทอร์เฟซ SPI:
ขั้นแรก คุณสามารถใช้ Desktop GUI ได้โดยไปที่ Pi start MenupreferencesRaspberry Pi Configuration ดังที่แสดงในภาพแรก
ประการที่สอง ไปที่ "อินเทอร์เฟซ" และเปิดใช้งาน SPI แล้วคลิกตกลง (ภาพที่สอง)
สุดท้าย รีสตาร์ท Pi ของคุณเพื่อให้แน่ใจว่าการเปลี่ยนแปลงจะมีผล คลิกที่ Pi Start MenuPreferencesShutdown เนื่องจากเราเพียงแค่ต้องรีสตาร์ท ให้คลิกที่ปุ่ม Reboot
ขั้นตอนที่ 4: รหัส
เราจะเริ่มต้นด้วยการเขียนโค้ดหลามของเรา อันดับแรก เราจะเริ่มต้นด้วยการนำเข้าไลบรารีสองสามแห่งที่เราจำเป็นต้องใช้เพื่อรวมโค้ดของเราเข้ากับโลกของ Minecraft จากนั้น เราจะนำเข้าไลบรารีเวลา โดยเฉพาะฟังก์ชันที่เรียกว่าสลีป ฟังก์ชันสลีปจะช่วยให้เรารอช่วงเวลาหนึ่งก่อนดำเนินการฟังก์ชัน สุดท้ายแต่ไม่ท้ายสุด เรานำเข้าไลบรารี RPi. GPIO ซึ่งช่วยให้เราควบคุม GPIO บน Raspberry Pi ได้
จาก mcpi.minecraft นำเข้า Minecraft จากเวลานำเข้า sleep นำเข้า RPi. GPIO เป็น GPIO
และนั่นคือทั้งหมด เรานำเข้าไลบรารีเสร็จแล้ว ตอนนี้ได้เวลาใช้งานแล้ว! สิ่งแรกเลยคือการใช้ไลบรารี่ Minecraft เราต้องการเชื่อมต่อสคริปต์หลามของเรากับโลก Minecraft เราสามารถทำได้โดยเรียกใช้ฟังก์ชัน init() ของไลบรารี MCPI จากนั้นตั้งค่าโหมดของ GPIO และปิดใช้งานการเตือน
mc = Minecraft. สร้าง()GPIO.setmode(GPIO. BCM) GPIO.setwarnings(0)
ตอนนี้ เรากำหนดสีรุ้งเป็นเลขฐานสิบหกเพื่อให้เราสามารถเปลี่ยนสี RGB ได้
สีขาว = 0xFFFFFF สีแดง = 0xFF0000 สีส้ม = 0xFF7F00 สีเหลือง = 0xFFFF00 สีเขียว = 0x00FF00 สีฟ้า = 0x00FFFF สีน้ำเงิน = 0x0000FF สีม่วง = 0xFF00FF สีม่วงแดง = 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
เรา ID ของบล็อกขนสัตว์ใน Minecraft คือ 35 ตอนนี้ เราต้องกำหนดค่าพินสำหรับ RGB led และตั้งค่าสำหรับพวกเขา
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)
จากนั้น ตั้งค่า PWM สำหรับแต่ละพิน โปรดทราบว่าช่วงของค่า PWM คือ 0-100 ที่นี่เราตั้งค่าสีของ RGB ให้เป็นสีขาว (100, 100, 100) ก่อน
สีแดง = GPIO. PWM(red_pin, 100)
สีเขียว = GPIO. PWM(green_pin, 100) สีน้ำเงิน = GPIO. PWM(blue_pin, 100) red.start(100) green.start(100) blue.start(100)
ต่อไปนี้คือการสร้างสองฟังก์ชัน ซึ่งสามารถใช้เพื่อถอดรหัสสีและให้แสง RGB ที่นำขึ้น! โปรดทราบว่าฟังก์ชัน map2hundred() คือการจับคู่ค่าจาก 255 ถึง 100 ดังที่เราได้กล่าวไว้ก่อนหน้านี้ ค่า PWM ควรเป็น 0-100
def map2hundred(value): คืนค่า int(value * 100 / 255)
def set_color (color_code): # ถอดรหัส 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)
# เปิดไฟ! red. ChangeDutyCycle(red_value) green. ChangeDutyCycle(green_value) สีน้ำเงิน. ChangeDutyCycle(blue_value)
ทำได้ดี! ถึงเวลาเริ่มต้นโปรแกรมหลักของเรา รอสักครู่ ควรกำหนดตัวแปรอื่นเพื่อบันทึกรหัสสีของบล็อกขนแกะก่อนโปรแกรมหลัก:
last_data = 0 ลอง: 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) ถ้า 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) if 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)) ถ้า block.data == W_BLUE: print("Blue!") set_color(BLUE) ถ้า block.data == W_PURPLE: print("Purple!") set_color(PURPLE) ถ้า block.data == W_MAGENTA: print(" สีม่วงแดง!") set_color(MAGENTA) ถ้า block.data == W_WHITE: print("White!") set_color(WHITE) last_data = block.data sleep(0.05) ยกเว้น KeyboardInterrupt: ผ่าน GPIO.cleanup()
ดังที่โปรแกรมหลักแสดงไว้ด้านบน ขั้นแรกให้ใช้คำสั่งเพื่อสร้างบล็อกขนสัตว์ที่มีสีสัน จากนั้นเราต้องค้นหาตำแหน่งของผู้เล่นเพื่อที่เราจะได้รหัสของบล็อกและรหัสสีของมัน หลังจากได้รับข้อมูลบล็อก เราจะใช้คำสั่งเพื่อตรวจสอบว่าบล็อกที่อยู่ใต้ผู้เล่นเป็นบล็อกขนสัตว์หรือไม่ และมีรหัสสีหรือไม่ ถ้าใช่ ให้ตัดสินว่าบล็อกผ้าขนสัตว์เป็นสีใด และเรียกใช้ฟังก์ชัน set_color() เพื่อเปลี่ยนสีของ RGB ที่นำไปสู่บล็อกผ้าขนสัตว์
นอกจากนี้ เราเพิ่มคำสั่ง try/except เพื่อตรวจจับการยกเว้นการขัดจังหวะของผู้ใช้ เมื่อเราต้องการออกจากโปรแกรมเพื่อล้างเอาต์พุตของพิน GPIO
สิ่งที่แนบมาคือรหัสที่สมบูรณ์
ทำได้ดีมาก มีอุปกรณ์เสริมมากมายและซับซ้อนเกินไปใช่ไหม ไม่ต้องกังวล มาดูวิธีที่ 2 ในการทำโปรเจ็กต์ให้สำเร็จ ซึ่งจะทำให้คุณรู้สึกยืดหยุ่นและสะดวกสบายมากขึ้น ซึ่งก็คือการใช้ CrowPi2 ของเรานั่นเอง!
ขั้นตอนที่ 5: ผลลัพธ์
เปิดเกมและเรียกใช้สคริปต์ คุณจะเห็นผลลัพธ์ในวิดีโอด้านบน
จากนั้นเราจะใช้ CrowPi2 เพื่อสร้าง Rainbow Interactive Bridge ต่อไป
ขั้นตอนที่ 6: การใช้ CrowPi2-Materials
●1 x CrowPi2
ขั้นตอนที่ 7: การใช้แผนภาพการเชื่อมต่อ CrowPi2-
ไม่จำเป็น. CrowPi2 มีเซ็นเซอร์และส่วนประกอบที่มีประโยชน์มากมาย (มากกว่า 20 ชิ้น) ซึ่งทั้งหมดนี้รวมอยู่ในแล็ปท็อป raspberry pi และแพลตฟอร์มการศึกษา STEM เดียวที่ช่วยให้เราทำหลาย ๆ โครงการได้อย่างง่ายดายและไม่ต้องเหนื่อย ในกรณีนี้ เราจะใช้โมดูลที่น่าสนใจและมีสีสันบน CrowPi2 ซึ่งเป็นโมดูลเมทริกซ์ RGB ขนาด 8x8 ซึ่งช่วยให้เราควบคุมไฟ LED 64 RGB ได้ในเวลาเดียวกัน!
ขั้นตอนที่ 8: การใช้ CrowPi2- กำหนดค่าสำหรับ SPI
ไม่จำเป็น. CrowPi2 มาพร้อมกับภาพในตัวพร้อมระบบการเรียนรู้! ทุกอย่างได้รับการเตรียมการซึ่งหมายความว่าคุณสามารถโปรแกรมและเรียนรู้ได้โดยตรง นอกจากนี้ CrowPi2 ของเรายังใช้งานง่ายและรวมเข้ากับบอร์ดเป็นแพลตฟอร์ม STEAM ที่พร้อมใช้งานแล้ว
ขั้นตอนที่ 9: การใช้ CrowPi2- รหัส
ถึงเวลาเริ่มต้นโปรแกรมของเราแล้ว! ขั้นแรก ให้นำเข้าไลบรารี่สองสามแห่ง เช่น ไลบรารี MCPI ซึ่งเป็นไลบรารี่ Minecraft Pi Python ที่ช่วยให้เราใช้ API ที่ง่ายมากเพื่อรวมเข้ากับโลกของ Minecraft; ห้องสมุดเวลา ซึ่งช่วยให้เราฟังก์ชั่นสลีปเพื่อรอช่วงเวลาหนึ่งก่อนดำเนินการฟังก์ชั่น ไลบรารี RPi. GPIO ซึ่งช่วยให้เราควบคุมพิน Raspberry Pi GPIO
จาก mcpi.minecraft นำเข้า Minecraft จากเวลานำเข้า sleep นำเข้า RPi. GPIO เป็น GPIO
สุดท้ายเราจะนำเข้าไลบรารีชื่อ rpi_ws281x ซึ่งเป็นไลบรารี RGB Matrix ภายในไลบรารีมีฟังก์ชั่นหลายอย่างที่เราจะใช้เช่น PixelStrip เพื่อตั้งค่าวัตถุแถบ LED และ Color เพื่อกำหนดค่าวัตถุสี RGB ให้สว่างขึ้น ไฟ LED RGB ของเรา
จาก rpi_ws281x นำเข้า PixelStrip, Color
และนั่นคือทั้งหมด เรานำเข้าไลบรารีเสร็จแล้ว ตอนนี้ได้เวลาใช้งานแล้ว! เช่นเดียวกัน สิ่งแรกคือการใช้ไลบรารี Minecraft เราต้องการเชื่อมต่อสคริปต์ python ของเรากับโลก Minecraft ที่เราสามารถทำได้โดยเรียกใช้ฟังก์ชัน init ของไลบรารี MCPI:
mc = Minecraft.create()
ตอนนี้ทุกครั้งที่เราต้องการดำเนินการในโลกของ minecrat เราสามารถใช้วัตถุ mc ได้
ขั้นตอนต่อไปคือการกำหนดคลาส RGB LED matrix ที่เราจะใช้เพื่อควบคุม RGB LEDs ของเรา เราเริ่มต้นคลาสด้วยการกำหนดค่าพื้นฐาน เช่น จำนวนไฟ LED, พิน, ความสว่าง ฯลฯ …
เราสร้างฟังก์ชันที่เรียกว่า clean ซึ่งจะ "ล้าง" ให้น้อยลงด้วยสีที่ระบุและฟังก์ชันที่เรียกว่า run ซึ่งจะเริ่มต้นวัตถุ RGB LED จริงในครั้งแรกที่เราต้องการใช้
คลาส RGB_Matrix:
def _init_ (ตัวเอง):
# การกำหนดค่าแถบ LED:
self. LED_COUNT = 64 # จำนวนพิกเซล LED
self. LED_PIN = 12 # GPIO pin เชื่อมต่อกับพิกเซล (18 ใช้ PWM!)
self. LED_FREQ_HZ = 800000 # ความถี่สัญญาณ LED ในหน่วยเฮิรตซ์ (ปกติคือ 800khz)
self. LED_DMA = 10 # DMA channel ที่จะใช้สำหรับสร้างสัญญาณ (ลอง 10)
self. LED_BRIGHTNESS = 10 # ตั้งค่าเป็น 0 สำหรับมืดที่สุดและ 255 สำหรับสว่างที่สุด
self. LED_INVERT = False # True เพื่อกลับสัญญาณ
self. LED_CHANNEL = 0 # ตั้งค่าเป็น '1' สำหรับ GPIO 13, 19, 41, 45 หรือ 53
# กำหนดฟังก์ชั่นที่ทำให้ไฟ LED เคลื่อนไหวได้หลายวิธี def สะอาด (ตัวเอง, แถบ, สี):
#เช็ดไฟ LED ทั้งหมดในครั้งเดียว
สำหรับฉันอยู่ในช่วง (strip.numPixels()):
strip.setPixelColor(i, สี)
แถบ.show()
def รัน (ตัวเอง):
# สร้างวัตถุ NeoPixel ด้วยการกำหนดค่าที่เหมาะสม
แถบ = PixelStrip (self. LED_COUNT, ตนเอง LED_PIN
ตัวเอง LED_FREQ_HZ, ตนเอง LED_DMA, self. LED_INVERT, self. LED_BRIGHTNESS, ตัวเอง LED_CHANNEL)
ลอง:
แถบกลับ
ยกเว้น KeyboardInterrupt:
# ทำความสะอาด LED เมทริกซ์ก่อนหยุดชะงัก
self.clean(สตริป)
หลังจากที่เราทำสิ่งข้างต้นเสร็จแล้ว ก็ถึงเวลาเรียกใช้คลาสเหล่านั้นและสร้างวัตถุที่เราสามารถใช้ในโค้ดของเรา ขั้นแรก มาสร้างวัตถุ RGB LED matrix ที่เราสามารถใช้ได้โดยใช้คลาสที่เราสร้างไว้ก่อนหน้านี้:
matrixObject = RGB_Matrix()
ตอนนี้ ลองใช้วัตถุนี้เพื่อสร้างวัตถุแถบ LED ที่ใช้งานอยู่ที่เราจะใช้เพื่อควบคุม LED แต่ละดวงของเราบน RGB Matrix:
แถบ = matrixObject.run()
ในที่สุด เพื่อเปิดใช้งานแถบนี้ เราจะต้องเรียกใช้ฟังก์ชันสุดท้าย:
แถบ.begin()
Minecraft API มีบล็อกจำนวนมาก บล็อก Minecraft แต่ละบล็อกมี ID ของตัวเอง ในตัวอย่างของเรา เราได้นำบล็อก Minecraft จำนวนหนึ่งและพยายามเดาว่าสีใดเหมาะสมที่สุดสำหรับพวกเขา
RGB ย่อมาจาก Red, Green และ Blue ดังนั้นเราต้องการ 3 ค่าที่แตกต่างกันตั้งแต่ 0 ถึง 255 สำหรับแต่ละค่า สีอาจเป็นรูปแบบ HEX หรือ RGB เรากำลังใช้รูปแบบ RGB สำหรับตัวอย่างของเรา
ในโลก Minecraft Pi มีรหัสบล็อกปกติและรหัสบล็อกขนแกะพิเศษ ขนพิเศษอยู่ภายใต้หมายเลข ID 35 แต่มีหมายเลขย่อยตั้งแต่รหัสต่าง ๆ มากมาย … เราจะแก้ปัญหานี้โดยสร้าง 2 รายการแยกกัน รายการหนึ่งสำหรับบล็อกปกติ และหนึ่งรายการสำหรับบล็อกขนสัตว์พิเศษ:
รายการแรกมีไว้สำหรับบล็อกปกติ เช่น 0 หมายถึง Air block เราจะตั้งค่าเป็นสี 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)
}
สำหรับบล็อกขนสัตว์ เราทำเช่นเดียวกัน แต่สิ่งสำคัญคือต้องจำไว้ว่าบล็อกทั้งหมดมี ID 35 ในรายการนี้ เรากำหนดประเภทย่อยของบล็อกซึ่งเป็นบล็อกขนสัตว์ ชนิดย่อยของผ้าขนสัตว์ที่แตกต่างกันมีสีที่แตกต่างกัน แต่ทั้งหมดเป็นบล็อกผ้าขนสัตว์
wool_colors = {
"6":สี(255, 105, 180), "5":สี(0, 255, 0), "4":สี(255, 255, 0), "14":สี(255, 0, 0), "2":สี(255, 0, 255)
}
ตอนนี้เมื่อเรากำหนดโปรแกรมหลัก คลาส และฟังก์ชันเสร็จแล้ว ก็ถึงเวลาที่จะผสานรวมกับเซ็นเซอร์ CrowPi2 RGB LED บนบอร์ดของเรา
โปรแกรมหลักจะใช้พารามิเตอร์ที่เรากำหนดไว้ก่อนหน้านี้และส่งผลต่อฮาร์ดแวร์
เราจะใช้ไฟ LED CrowPi2 RGB เพื่อให้แสงสว่างตามขั้นตอนที่เราทำใน Minecraft Pi ในแต่ละบล็อก มาเริ่มกันเลย!
สิ่งแรกที่เราจะทำคือสร้างบล็อกขนสัตว์ด้วยคำสั่ง และสร้างลูปชั่วขณะ เพื่อให้โปรแกรมทำงานต่อไปตราบเท่าที่เราเล่นเกม
เราต้องการข้อมูลบางอย่างจากผู้เล่น อย่างแรกเราใช้คำสั่ง 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)
ในขณะที่จริง:
x, y, z = mc.player.getPos() # ตำแหน่งผู้เล่น (x, y, z)
blockType, data = mc.getBlockWithData(x, y-1, z) # block ID
พิมพ์ (blockType)
จากนั้นเราจะตรวจสอบว่าบล็อกเป็นบล็อกขนสัตว์หรือไม่ หมายเลข ID บล็อก 35 หากเป็น เราจะอ้างถึง wool_colors ด้วยสีของบล็อกตาม ID ของพจนานุกรมและให้สีที่ถูกต้องสว่างขึ้น
ถ้า blockType == 35:
#สีผ้าวูลสั่งทำ
matrixObject.clean(แถบผ้า wool_colors[str(data)])
หากไม่ใช่บล็อกขนสัตว์ เราจะตรวจสอบว่าบล็อกนั้นอยู่ในพจนานุกรม rainbow_colors หรือไม่ เพื่อหลีกเลี่ยงข้อยกเว้น หากเป็นเช่นนั้น เราจะดำเนินการต่อไปโดยเปลี่ยนสีและเปลี่ยน RGB
ถ้า str(blockType) ใน rainbow_colors:
พิมพ์(rainbow_colors[str(blockType)])
matrixObject.clean(แถบ, rainbow_colors[str(blockType)])
นอน(0.5)
คุณสามารถลองเพิ่มบล็อคให้กับ rainbow_color เพื่อเพิ่มสีสันและรองรับบล็อคได้มากขึ้น!
สมบูรณ์แบบ! การทำโปรเจ็กต์โดยใช้อุปกรณ์เสริมนั้นซับซ้อน แต่การใช้วงจรรวม CrowPi2 สิ่งต่างๆ จะง่ายขึ้นมาก! ยิ่งไปกว่านั้น ยังมีเซ็นเซอร์และส่วนประกอบมากกว่า 20 ตัวบน CrowPi2 ซึ่งช่วยให้คุณบรรลุโครงการในอุดมคติของคุณและแม้แต่โครงการ AI!
ด้านล่างเป็นรหัสที่สมบูรณ์:
ขั้นตอนที่ 10: การใช้ CrowPi2-ผลลัพธ์
เปิดเกมและเรียกใช้สคริปต์ คุณจะเห็นผลลัพธ์ในวิดีโอด้านบน:
ขั้นตอนที่ 11: การใช้ CrowPi2- ก้าวต่อไป
ตอนนี้เราเสร็จสิ้นโครงการที่มีสีสันในเกม Minecraft ด้วย CrowPi2 ทำไมไม่ลองใช้เซ็นเซอร์และส่วนประกอบอื่นๆ บน CrowPi2 เพื่อเล่นเกม เช่น จอยสติ๊กเพื่อควบคุมการเคลื่อนไหวของผู้เล่น, RFID เพื่อสร้างบล็อคโดยอิงจากการ์ด NFC ต่างๆ และอื่นๆ ขอให้สนุกกับเกมของคุณบน CrowPi2 และหวังว่าคุณจะทำได้ โครงการที่น่าทึ่งมากขึ้นด้วย CrowPi2!
ตอนนี้ CrowPi2 อยู่ใน Kickstarter แล้ว คุณสามารถเพลิดเพลินกับราคาที่น่าดึงดูดใจได้
แนบลิงค์หน้า Kickstarter CrowPi2
แนะนำ:
สร้าง Tank Volume Reader ในราคาต่ำกว่า 30 ดอลลาร์ โดยใช้ ESP32: 5 ขั้นตอน (พร้อมรูปภาพ)
สร้างเครื่องอ่านปริมาณถังน้ำมันในราคาต่ำกว่า 30 เหรียญโดยใช้ ESP32: Internet of Things ได้นำแอพพลิเคชั่นอุปกรณ์ที่ซับซ้อนก่อนหน้านี้มาสู่บ้านของผู้ผลิตคราฟต์เบียร์และผู้ผลิตไวน์จำนวนมาก การประยุกต์ใช้งานกับเซ็นเซอร์ระดับถูกใช้มาเป็นเวลาหลายทศวรรษในโรงกลั่นขนาดใหญ่ โรงบำบัดน้ำ และเคมี
Neopixel Ws2812 Rainbow LED เรืองแสงพร้อม M5stick-C - เรียกใช้ Rainbow บน Neopixel Ws2812 โดยใช้ M5stack M5stick C โดยใช้ Arduino IDE: 5 ขั้นตอน
Neopixel Ws2812 Rainbow LED เรืองแสงพร้อม M5stick-C | เรียกใช้ Rainbow บน Neopixel Ws2812 โดยใช้ M5stack M5stick C การใช้ Arduino IDE: สวัสดีทุกคนในคำแนะนำนี้ เราจะเรียนรู้วิธีใช้ neopixel ws2812 LED หรือแถบนำหรือเมทริกซ์นำหรือวงแหวน LED พร้อมบอร์ดพัฒนา m5stack m5stick-C พร้อม Arduino IDE และเราจะทำ ลายรุ้งกับมัน
การควบคุมวิทยุ RF 433MHZ โดยใช้ HT12D HT12E - การสร้างรีโมทคอนโทรล Rf โดยใช้ HT12E & HT12D ด้วย 433mhz: 5 ขั้นตอน
การควบคุมวิทยุ RF 433MHZ โดยใช้ HT12D HT12E | การสร้างการควบคุมระยะไกล Rf โดยใช้ HT12E & HT12D ด้วย 433mhz: ในคำแนะนำนี้ฉันจะแสดงวิธีสร้างรีโมทคอนโทรล RADIO โดยใช้โมดูลตัวรับส่งสัญญาณ 433mhz พร้อมการเข้ารหัส HT12E & IC ถอดรหัส HT12D ในคำแนะนำนี้ คุณจะสามารถส่งและรับข้อมูลโดยใช้ส่วนประกอบราคาถูกมาก เช่น HT
Makey Makey Interactive Story โดยใช้ Scratch!: 6 ขั้นตอน
Makey Makey Interactive Story โดยใช้ Scratch!: คำแนะนำในการสร้างเรื่องราวแบบโต้ตอบบน Scratch โดยใช้ Makey Makey และที่สำคัญที่สุดคือจินตนาการของคุณ
สร้าง Apple HomeKit Temperature Sensor (BME280) โดยใช้ RaspberryPI และ BME280: 5 ขั้นตอน
สร้าง Apple HomeKit Temperature Sensor (BME280) โดยใช้ RaspberryPI และ BME280: ฉันได้ลองใช้งานอุปกรณ์ IOT ในช่วงไม่กี่เดือนที่ผ่านมา และได้ปรับใช้เซ็นเซอร์ต่างๆ ประมาณ 10 ตัวเพื่อตรวจสอบสภาพรอบๆ บ้านและกระท่อมของฉัน และเดิมทีฉันเริ่มใช้เซ็นเซอร์วัดความชื้นสัมพัทธ์ AOSONG DHT22