Học Python và Điện tử với Minecraft Pi Edition

Học Python và Điện tử với Minecraft Pi Edition

Bạn luôn muốn học viết mã nhưng không biết bắt đầu từ đâu? Tìm hiểu cách điều khiển Minecraft trên Raspberry Pi bằng Python và một số thiết bị điện tử đơn giản. Đây là kết quả cuối cùng:





Bạn sẽ cần Pi 2 hoặc mới hơn cho dự án này và trong khi bạn có thể hoàn thành hầu hết các tác vụ này thông qua dòng lệnh qua Secure Shell (SSH), hướng dẫn này sẽ tập trung vào việc viết mã trực tiếp trên Pi.





Bạn mới sử dụng Minecraft? Đừng lo lắng - đây là của chúng tôi Hướng dẫn cho người mới bắt đầu Minecraft .





Giới thiệu về Minecraft Pi

Minecraft cho Raspberry Pi đã được phát triển để học hỏi và mày mò (và hoàn toàn miễn phí). Nó đi kèm với Giao diện lập trình ứng dụng (API) cung cấp một cách để mã dễ dàng giao tiếp với Minecraft. Thật tuyệt vời khi học cách viết mã bằng Python, cũng như bắt đầu với thiết bị điện tử.

Python là gì?

Python là một ngôn ngữ lập trình. Nó là diễn giải , có nghĩa là khi bạn chạy một tệp hoặc chương trình Python, trước tiên máy tính phải thực hiện một chút công việc với tệp đó. Nhược điểm là nó có thể được coi là chậm khi so sánh với các ngôn ngữ biên dịch [Đã xóa URL bị hỏng].



Lợi ích của các ngôn ngữ thông dịch là tốc độ mã hóa và tính thân thiện của chúng. Bạn không cần phải nói với máy tính Cái gì dữ liệu bạn muốn lưu trữ, chỉ là bạn muốn lưu trữ thứ gì đó và máy tính sẽ tìm ra những việc cần làm. Tất nhiên, vẫn có những trường hợp ngoại lệ, và đây là một cái nhìn đơn giản hơn một chút, tuy nhiên việc lập trình sẽ rất thú vị! Nếu bạn bắt đầu đào sâu vào các chi tiết kỹ thuật phức tạp, nó có thể trở nên hơi tốn công.

Python phân biệt chữ hoa chữ thường. Điều quan trọng cần biết là Python sẽ không nhận ra các đối tượng ngay cả khi chúng được viết đúng chính tả nếu trường hợp là sai. 'Dosomething ()' sẽ không hoạt động nếu phương thức thực sự được gọi là 'DoSomething ()'. Python cũng sử dụng thụt lề . Các ngôn ngữ lập trình khác có thể không quan tâm mã của bạn có bao nhiêu thụt lề, trong khi Python làm quan tâm. Thụt lề được sử dụng để cho Python biết mã thuộc về đâu. Các ngôn ngữ khác có thể sử dụng 'Dấu ngoặc nhọn' ({}) để nhóm mã - Python không sử dụng những ngôn ngữ này. Python sử dụng hàm băm (#) cho các nhận xét và các nhận xét được sử dụng để cho các nhà phát triển khác hoặc những người đang xem mã biết chức năng của một phần cụ thể hoặc tại sao nó lại cần thiết. Python bỏ qua bất kỳ thứ gì sau một hàm băm.





Cuối cùng, có hai phiên bản chính của Python - Python 2.7.x và Python 3.x. Có một số khác biệt giữa hai ( Sự khác biệt là gì? ). Hướng dẫn này sẽ sử dụng Python 3.

Thiết lập ban đầu

Việc cung cấp số Pi của bạn đã thiết lập và chạy Raspbian , không cần nhiều thiết lập ban đầu.





Mở thiết bị đầu cuối ( Menu> Phụ kiện> Thiết bị đầu cuối ) và chạy lệnh này. Thông lệ tốt là luôn cập nhật danh sách kho lưu trữ và điều này sẽ tải xuống danh sách các chương trình mới nhất (nó sẽ không tự tải xuống các chương trình, điều này giúp Pi biết chương trình được gọi là gì và tìm chúng ở đâu).

sudo apt-get update

Bây giờ hãy cập nhật Pi (quá trình này có thể mất một lúc):

sudo apt-get upgrade

Python và Minecraft Pi đã được cài đặt sẵn, tuy nhiên nếu Minecraft Pi không được cài đặt vì bất kỳ lý do gì, việc cài đặt rất đơn giản:

sudo apt-get install minecraft-pi

Điều hướng đến tài liệu và tạo một thư mục mới có tên 'Minecraft':

cd Documents/
mkdir Minecraft

Bạn có thể xem nội dung của thư mục mới này:

ls

Đây là một mẹo - nếu bạn bắt đầu nhập và nhấn phím TAB, dòng lệnh sẽ cố gắng tự động hoàn thành câu lệnh cho bạn.

Bạn có thể kiểm tra đường dẫn đến thư mục hiện tại bằng cách sử dụng pwd, viết tắt của Print Working Directory:

pwd

Bắt đầu Minecraft bằng cách đi tới Menu> Trò chơi> Minecraft Pi . Bạn sẽ cần nó chạy, nhưng sẽ quay lại nó sau.

Mở Python 3 từ Menu> Lập trình> Python 3 (IDLE) . Chương trình này cung cấp một cách để bạn chạy các lệnh Python và viết chương trình.

Bây giờ bạn có thể nhập các lệnh Python của mình ở đây, nhưng điều đó không thực tế lắm. Đi đến Tệp> Tệp mới và sau đó Tệp> Lưu và lưu nó trong thư mục bạn đã tạo trước đó. ( Tài liệu> Minecraft ). Hãy gọi nó là ' hello_world.py '. Bạn không cần phải sử dụng phần mở rộng .py, phần mở rộng này sẽ được thêm tự động, nhưng đó là cách tốt.

Nếu bạn chuyển trở lại thiết bị đầu cuối và điều hướng vào thư mục Minecraft, bạn sẽ thấy tệp bạn vừa tạo:

cd Minecraft/
ls

Bạn có thể chạy tệp này như sau:

python hello_world

Lưu ý rằng 'python' là chữ thường như thế nào. Điều này phải ở trước tên tệp, vì nó cho Pi biết rằng tệp sau là Python, vì vậy nó phải được thực thi như vậy.

Chuyển trở lại trình soạn thảo Python và nhập:

print 'Hello, World!'

Lưu tệp này và chạy lại - bây giờ bạn sẽ thấy 'Hello, World!' xuất hiện trong dòng lệnh - gọn gàng! Lệnh print chỉ đơn giản là yêu cầu Python xuất ra văn bản sau trong dấu ngoặc kép. Điều này là tốt, nhưng không quá hữu ích cho Minecraft, hãy liên kết nó với nhau:

from mcpi.minecraft import Minecraft
mc = Minecraft.create()
mc.postToChat('Hello, World!')

Bây giờ nếu bạn lưu và chạy tệp này, bạn sẽ thấy 'Hello, World!' xuất hiện trong trò chơi Minecraft. Hãy phân tích mã:

from mcpi.minecraft import Minecraft

Dòng này cho Python biết rằng bạn muốn sử dụng mã từ một tệp khác. Tệp mcpi.minecraft này được phát triển để cho phép dễ dàng điều khiển Minecraft.

mc = Minecraft.create()

Dòng này tạo một đối tượng có tên là 'mc' (Minecraft). Bạn phải tạo điều này để cho phép giao tiếp với trò chơi Minecraft - chỉ bao gồm tệp là chưa đủ.

mc.postToChat('Hello, World!')

Cuối cùng, dòng này yêu cầu Minecraft viết một số văn bản vào cuộc trò chuyện. Hãy thử thay đổi 'Xin chào, Thế giới!' sang một cái gì đó khác và xem điều gì sẽ xảy ra, nhưng hãy nhớ bao gồm cả hai dấu ngoặc kép. Nếu bạn đang gặp sự cố phần mềm, đây là một số lỗi Python và Minecraft Pi phổ biến:

  • AttributeError - đây là lỗi đánh máy, chẳng hạn như pint hoặc prnt thay vì in
  • NameError: tên 'Minecraft' không được xác định - hãy nhớ nhập các mô-đun bạn cần
  • NameError: tên 'true' không được xác định - Python phân biệt chữ hoa chữ thường, hãy thay đổi thành 'True'
  • socket.error: [Errno 111] Kết nối bị từ chối - Đảm bảo Minecraft đang chạy

Dự án

Bây giờ bạn đã biết những kiến ​​thức cơ bản về Python và Minecraft, hãy thực hiện một số dự án thú vị. Tất cả codecan được tải xuống từ Github.

Trình tạo cầu tự động

Chương trình này sẽ xây dựng một cách hiệu quả một cây cầu trên mặt nước. Khi người chơi đến gần một vùng nước, chương trình sẽ chuyển đổi một số khối thành đá. Vì Minecraft sử dụng một hệ thống tọa độ, rất dễ dàng để có được vị trí của người chơi, cùng với loại khối xung quanh người chơi. Minecraft Pi hơi hạn chế nên không thể cập nhật hàng loạt nhiều khối khác nhau. Tuy nhiên, bạn có thể dễ dàng tự viết mã hành vi này.

Tạo một tệp mới ( Tệp> Tệp mới ) và lưu nó thành ' bridge_builder.py '.

from mcpi.minecraft import Minecraft
mc = Minecraft.create() # create Minecraft Object
while True:
x, y, z = mc.player.getPos() # store player position

# store the surrounding blocks
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)
if a == 8 or a == 9 or b == 8 or b == 9 or c == 8 or c == 9 or d == 8 or d == 9:
# 8 or 9 is water. Set surrounding blocks on floor to a solid (stone) if water is found
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)

Lưu ý rằng giá trị y thực sự đang xem xét y - 1. Đây là mức sàn. Nếu giá trị của y được sử dụng, tập lệnh sẽ tìm kiếm các khối ở khoảng đầu gối - nó sẽ không hoạt động tốt lắm! Mc.getBlock () trả về id của một khối cho các tọa độ đã cho. Vì x, y và z là tọa độ của người chơi, bạn có thể cộng hoặc trừ chúng để có được các vị trí xung quanh người chơi. Bạn không nhất thiết phải sử dụng các giá trị x, y và z, bạn có thể sử dụng bất kỳ số nào, tuy nhiên bạn có thể không biết khối cụ thể đó liên quan như thế nào với trình phát - tốt hơn nên sử dụng các giá trị liên quan đến trình phát. Chạy tệp này từ dòng lệnh và xem điều gì sẽ xảy ra.

Bạn sẽ thấy rằng một khu vực nhỏ trên mặt đất sẽ biến thành đá khi người chơi chạm đến một vùng nước. Nó không phải là tuyệt vời - bạn có thể đi bộ đủ nhanh để gây ra vấn đề. Bạn có thể giải quyết vấn đề này bằng cách chuyển một lượng nước lớn hơn vào đất liền. Phần cuối cùng của phương thức mc.setBlocks () là id khối. Một là id khối cho đá. Bạn có thể thay đổi điều này thành gỗ, cỏ hoặc bất cứ thứ gì. Nếu bạn muốn, bạn có thể dễ dàng chuyển đổi nó thành một thiết kế phức tạp - có thể là một cây cầu treo!

Nút siêu khai thác

Ví dụ này sẽ làm cho công việc khai thác ngắn hơn. Nó bao gồm một nút vật lý, khi nhấn, sẽ khai thác 10 khối lập phương. Hãy bắt đầu với nút. Tương tự như các nút trên Arduino, bạn sẽ cần một lượng nhỏ thiết bị điện tử, tất cả đều phải được tìm thấy trong bộ khởi động cơ bản:

  • 1 x Breadboard
  • 1 x công tắc tạm thời
  • 1 x điện trở 220 ohm
  • Nữ> cáp nhảy nam
  • Nam> Cáp nhảy nam

Đây là mạch:

Pi-Nút-Kết nối

Điện trở này được gọi là điện trở 'kéo xuống'. Nó giúp đảm bảo rằng những gì Pi nghĩ là nút đang được nhấn, thực sự là nút đang được nhấn. Tuy nhiên, bạn không nhất thiết phải sử dụng điều này, vì bạn có thể tìm thấy nhiều tạp âm và các kết quả đọc sai nếu không có nó.

Nút này được kết nối với chân Đầu ra Mục đích Chung (GPIO) 14. Bạn có thể sử dụng bất kỳ chân GPIO nào, tuy nhiên hãy xem sơ đồ chân đầu tiên, vì không phải tất cả chúng đều có thể điều khiển được từ Pi và khác nhau một chút giữa các kiểu máy.

Bây giờ nút đã được kết nối, đã đến lúc kiểm tra nó. Tạo một tệp mới và lưu nó dưới dạng ' button_test.py '. Thêm mã này, lưu nó rồi chạy nó trong Terminal.

import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BCM) # tell the Pi what headers to use
GPIO.setup(14, GPIO.IN) # tell the Pi this pin is an input
while True:
if GPIO.input(14) == True: # look for button press
print 'BUTTON WORKS!' # log result
time.sleep(0.5) # wait 0.5 seconds

nhấn Control + C để dừng tập lệnh. Nếu mọi thứ hoạt động bình thường, bạn sẽ thấy 'NÚT CÔNG TRÌNH!' trong Nhà ga. Lưu ý rằng, giống như mô-đun Minecraft, thử nghiệm này đang sử dụng mô-đun RPi.GPIO và thời gian. Những điều này cho phép Pi truy cập vào các chân phần cứng và cung cấp các chức năng định thời hữu ích.

Bây giờ hãy hoàn thành phần còn lại của mã. Tạo một tệp mới được gọi là ' super_mine.py '. Đây là mã:

import RPi.GPIO as GPIO
import time
from mcpi.minecraft import Minecraft
mc = Minecraft.create() # create Minecraft Object
GPIO.setmode(GPIO.BCM) # tell the Pi what headers to use
GPIO.setup(14, GPIO.IN) # tell the Pi this pin is an input
while True:
if GPIO.input(14) == True: # look for button press
x, y, z = mc.player.getPos() # read the player position
mc.setBlocks(x, y, z, x + 10, y + 10, z + 10, 0) # mine 10 blocks
mc.setBlocks(x, y, z, x - 10, y + 10, z - 10, 0) # mine 10 blocks
time.sleep(0.5) # wait 0.5 seconds

mc.player.getPos () trả về tọa độ hiện tại của người chơi, sau đó được lưu trữ trong x, y và z. Các setBlocks () phương thức yêu cầu Minecraft điền vào tất cả các khối từ đầu đến cuối bằng khối sau. Số không là khối-id cho không khí. Bạn có thể thay đổi mã này thành id khối khác để lấp đầy một khu vực. Bạn cũng có thể thay đổi tọa độ thành +100 hoặc thậm chí +1000 khối, tuy nhiên Pi có thể bắt đầu gặp khó khăn nếu bạn quá điên cuồng. Chú ý rằng y + 10 giống nhau như thế nào đối với cả hai dòng. Bạn có thể thay đổi giá trị này thành y - 10 nếu bạn muốn xóa các khối dưới lòng đất.

Dịch chuyển

Một cách sử dụng đơn giản khác cho nút này có thể là 'dịch chuyển tức thời'. Minecraft Pi Api cung cấp một cách để đặt vị trí của người chơi. Đoạn mã sau sẽ 'dịch chuyển' người chơi đến một vị trí đặt trước:

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

Lưu ý rằng phương thức của anh ta chấp nhận ba tham số; x, y và z - vì vậy bạn có thể đặt chúng thành bất kỳ thứ gì để dịch chuyển tức thì người chơi đến vị trí đó.

Tạo bản sao của tệp super_mine ( Tệp> Lưu Sao chép Dưới dạng ) và sửa đổi nó bằng cách thay thế if bằng điều sau:

if GPIO.input(14) == True: # look for button press
mc.player.setPos(0, 0, 0) # teleport player
time.sleep(0.5) # wait 0.5 seconds

Tệp này bây giờ sẽ giống như sau:

import RPi.GPIO as GPIO
from mcpi.minecraft import Minecraft
import time
mc = Minecraft.create() # create Minecraft Object
GPIO.setmode(GPIO.BCM) # tell the Pi what headers to use
GPIO.setup(14, GPIO.IN) # tell the Pi this pin is an input
while True:
if GPIO.input(14) == True: # look for button press
mc.player.setPos(0, 0, 0) # teleport player
time.sleep(0.5) # wait 0.5 seconds

Lưu nó thành ' teleport.py ' và chạy.

Bạn có thể thấy người chơi bị kẹt bên trong một số khối khi sử dụng điều này, trong trường hợp này, bạn sẽ cần điều chỉnh tọa độ thành một không gian mở đã biết (phía trên bên trái của màn hình hiển thị vị trí hiện tại của bạn).

Xây nhà

Một nhiệm vụ cuối cùng cho nút này là xây dựng một ngôi nhà. Giống như ví dụ khai thác nhanh ở trên, điều này chỉ đơn giản là thay thế các khối xung quanh người chơi để tạo thành một ngôi nhà. Các mã khối khác nhau sẽ được sử dụng cho các vật liệu khác nhau (cửa sổ, tường, v.v.). Để giúp mọi thứ dễ viết mã hơn, một khối rắn sẽ được tạo ra, và sau đó phần bên trong được loại bỏ (đặt khối thành không khí), điều này sẽ tạo ra một lớp vỏ rỗng. Bạn có thể thêm các tiện ích bổ sung như giường hoặc cửa, tuy nhiên dự án Minecraft Pi chưa hoàn thiện một chút và mặc dù những đối tượng này hoạt động khi người chơi đặt vào, nhưng chúng không rực rỡ khi sử dụng Python.

from mcpi.minecraft import Minecraft
import RPi.GPIO as GPIO
import time
mc = Minecraft.create() # create Minecraft Object
GPIO.setmode(GPIO.BCM) # tell the Pi what headers to use
GPIO.setup(14, GPIO.IN) # tell the Pi this pin is an input
while True:
if 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 inside
mc.setBlocks(x + 2, y, z + 5, x + 2, y + 1, z + 5, 0) # make doorway
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

Lưu cái này thành ' house.py ' và chạy. Mọi việc đang tốt đẹp, bạn sẽ thấy một ngôi nhà nhỏ xuất hiện (bạn có thể phải quay đầu lại để tìm nó). Nó rất đơn giản, một lỗ mở và một số cửa sổ. Về lý thuyết, không có giới hạn về mức độ lớn hay phức tạp của một tòa nhà mà bạn có thể xây dựng.

Tạo một trò chơi nhỏ

Tiếp theo, chúng ta hãy làm một trò chơi nhỏ! Việc này sẽ khá đơn giản, khi người chơi dẫm phải một khối cát, nó sẽ biến thành dung nham sau một khoảng thời gian ngẫu nhiên. Đây là một trò chơi hay để thực hiện, vì bạn có thể thiết kế các cấp độ của riêng mình hoặc sửa đổi nó để làm cho mọi thứ khó hơn. Bạn sẽ không cần nút cho ví dụ này.

Tạo một tệp mới và lưu nó dưới dạng ' mini_game.py '. Đây là mã:

from mcpi.minecraft import Minecraft
import random
import time
mc = Minecraft.create() # create Minecraft Object
while True:
x, y, z = mc.player.getPos()
block_under_player = mc.getBlock(x, y - 1, z)

if block_under_player == 12:
# player standing on sand, start the timer
random_time = random.uniform(0.1, 2.5) # generate random number
time.sleep(random_time); # wait
mc.setBlock(x, y - 1, z, 11) # turn it into lava

Mã này là một khởi động tốt trên ngẫu nhiên() hàm số: random.uniform (0,1, 2,5) sẽ tạo ra một số ngẫu nhiên trong khoảng từ 0,1 (1/10 giây) đến 2,5 (2 1/2 giây). Tăng những con số này sẽ làm cho trò chơi dễ dàng hơn.

Hãy thử nó ra! Đứng trên một khối cát, và nó sẽ sớm biến thành dung nham. Đây có thể là cơ sở của một trò chơi phức tạp hơn.

Tạo một trò chơi nhỏ khác

Tiền đề cho trò chơi này rất đơn giản - đừng đứng trên sàn gỗ khi hết thời gian. Người chơi được dịch chuyển vào một 'đấu trường'. Họ buộc phải đứng yên cho đến khi trận đấu bắt đầu. Sau khi bắt đầu, sàn sẽ chuyển sang nước khi hết thời gian. Người chơi phải đứng trong vùng an toàn (khối kim cương) để sống sót. Mỗi cấp độ giảm bộ đếm thời gian một giây. Sau mỗi cấp độ thành công, khu vực an toàn sẽ lớn hơn. Kiểm tra mã bên dưới:

import time
import random
from mcpi.minecraft import Minecraft
mc = Minecraft.create() # create 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)
# move player to arena
mc.player.setPos(14, 25, 20) # teleport player
# make them stay put
# teleport player to start position every 1/10th second.
# do this for 5 seconds then start the game
time.sleep(2)
total_wait = 0
mc.postToChat('Waiting to Start')
while 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

Lưu cái này thành ' mini_game_2.py 'và chạy thử.

Pi 2 có một số vấn đề về hiệu suất khi chạy Minecraft. Biểu đồ sử dụng Bộ xử lý trung tâm (CPU) ( góc trên bên phải ) không bao giờ hiển thị bất kỳ tải nặng nào, vì vậy điều này phải do các nhà phát triển thiết kế và tối ưu hóa kém. Những vấn đề này không liên quan đến việc chạy mã (vì chúng tiếp tục khi Python không chạy), tuy nhiên chúng được kết hợp bởi trò chơi nhỏ này. Nếu Pi của bạn thực sự gặp khó khăn, bạn có thể muốn giảm kích thước của đấu trường hoặc ép xung Pi của mình.

cách lấy pokemon cho ipad

Máy dò kim cương

Hãy làm một mạch khác. Điều này sẽ sử dụng một Diode phát sáng (LED) để phát sáng khi có kim cương bên dưới (trong vòng 15 khối). Đây là những gì bạn cần:

  • 1 x Breadboard
  • 1 x đèn LED
  • 1 x điện trở 220 ohm
  • Nữ> cáp nhảy nam
  • Nam> Cáp nhảy nam

Đây là mạch:

Kết nối Anode (chân dài) với GPIO Pin 14. Chân này hoạt động giống như + 5v. Kết nối Cathode (chân ngắn) với đất.

Tôi đã sử dụng một món đồ chơi quặng rẻ tiền và sửa đổi nó bằng cách tháo nắp sau và các thiết bị điện tử, sau đó tôi đặt một đèn LED bên dưới nó. Bạn có thể dễ dàng làm cho nó lâu dài bằng keo nóng hoặc thứ gì đó tương tự.

Lưu mã này thành ' diamond.py ':

import RPi.GPIO as GPIO
import time
from mcpi.minecraft import Minecraft
mc = Minecraft.create() # create Minecraft Object
led_pin = 14 # store the GPIO pin number
GPIO.setmode(GPIO.BCM) # tell the Pi what headers to use
GPIO.setup(14, GPIO.OUT) # tell the Pi this pin is an output
while True:
# repeat indefinitely
x, y, z = mc.player.getPos()
for i in range(15):
# look at every block until block 15
if mc.getBlock(x, y - i, z) == 56:
GPIO.output(led_pin, True) # turn LED on
time.sleep(0.25) # wait
GPIO.output(led_pin, False) # turn LED off
time.sleep(0.25) # wait

Khi có một khối quặng kim cương bên dưới người chơi (trong vòng 15 khối) đèn sẽ nhấp nháy.

ThinkGeek Minecraft Light-Up Quặng kim cương đá xanh - Chắc chắn sẽ khiến Pigmen tránh xa MUA NGAY TRÊN AMAZON

Bạn đã làm được điều gì đó thú vị với Minecraft Pi chưa? Hãy cho tôi biết trong phần nhận xét bạn đã làm được gì hoặc bạn đã làm được bao xa trong các trò chơi.

Chúng tôi hy vọng bạn thích các mặt hàng chúng tôi giới thiệu và thảo luận! MUO có quan hệ đối tác liên kết và được tài trợ, vì vậy chúng tôi nhận được một phần doanh thu từ một số giao dịch mua của bạn. Điều này sẽ không ảnh hưởng đến giá bạn phải trả và giúp chúng tôi đưa ra các đề xuất sản phẩm tốt nhất.

Đăng lại Đăng lại tiếng riu ríu E-mail Nâng cấp lên Windows 11 có đáng không?

Windows đã được thiết kế lại. Nhưng điều đó có đủ thuyết phục bạn chuyển từ Windows 10 sang Windows 11?

Đọc tiếp
Chủ đề liên quan
  • DIY
  • Lập trình
  • Minecraft
  • Raspberry Pi
  • Thiết bị điện tử
  • Python
Giới thiệu về tác giả Joe Coburn(136 bài báo đã xuất bản)

Joe tốt nghiệp ngành Khoa học Máy tính tại Đại học Lincoln, Vương quốc Anh. Anh ấy là một nhà phát triển phần mềm chuyên nghiệp và khi anh ấy không lái máy bay không người lái hay viết nhạc, anh ấy thường có thể bị bắt gặp chụp ảnh hoặc sản xuất video.

Xem thêm từ Joe Coburn

Theo dõi bản tin của chúng tôi

Tham gia bản tin của chúng tôi để biết các mẹo công nghệ, đánh giá, sách điện tử miễn phí và các ưu đãi độc quyền!

Bấm vào đây để đăng ký
Thể LoạI Diy