تعلم لغة Python والإلكترونيات مع Minecraft Pi Edition

تعلم لغة Python والإلكترونيات مع Minecraft Pi Edition

هل أردت دائمًا تعلم البرمجة ولكنك لا تعرف من أين تبدأ؟ تعرف على كيفية التحكم في Minecraft على Raspberry Pi باستخدام Python وبعض الإلكترونيات البسيطة. ها هي النتيجة النهائية:





ستحتاج إلى Pi 2 أو أحدث لهذا المشروع ، وبينما يمكنك إكمال معظم هذه المهام عبر سطر الأوامر عبر Secure Shell (SSH) ، سيركز هذا البرنامج التعليمي على الترميز مباشرة على Pi.





جديد في لعبة Minecraft؟ لا تقلق - ها هي ملفات دليل Minecraft للمبتدئين .





مقدمة إلى Minecraft Pi

تم تطوير Minecraft for the Raspberry Pi للتعلم والعبث (وهو مجاني). يأتي مزودًا بواجهة برمجة التطبيقات (API) التي توفر طريقة للكود للتحدث بسهولة إلى Minecraft. إنه أمر رائع لتعلم كيفية البرمجة في Python ، وكذلك البدء في استخدام الإلكترونيات.

ما هي لغة بايثون؟

بايثون هي لغة برمجة. إنها مفسرة ، مما يعني أنه عند تشغيل ملف أو برنامج Python ، يتعين على الكمبيوتر القيام ببعض الأعمال الصغيرة على الملف أولاً. الجانب السلبي هو أنه يمكن اعتباره بطيئًا عند مقارنته باللغات المترجمة [تمت إزالة عنوان URL المكسور].



تتمثل مزايا اللغات المفسرة في سرعة البرمجة ومدى ملاءمتها. لا تحتاج لإخبار الكمبيوتر ماذا او ما البيانات التي تريد تخزينها ، فقط تريد تخزين شيء ما وسيحدد الكمبيوتر ما يجب القيام به. هناك استثناءات بالطبع ، وهذه نظرة مبسطة إلى حد ما ، ولكن يجب أن تكون البرمجة ممتعة! إذا بدأت في البحث في التفاصيل الفنية المعقدة ، فقد يصبح الأمر مرهقًا بعض الشيء.

لغة Python حساسة لحالة الأحرف. من المهم معرفة ذلك ، لأن بايثون لن تتعرف على الأشياء حتى لو تم تهجئتها بشكل صحيح إذا كانت القضية خاطئة. لن تعمل 'Dosomething ()' إذا كانت الطريقة تسمى بالفعل 'DoSomething ()'. تستخدم Python أيضًا المسافة البادئة . قد لا تهتم لغات البرمجة الأخرى بعدد المسافات البادئة في الكود الخاص بك ، بينما لغة Python هل رعاية. تُستخدم المسافات البادئة لإخبار Python بمكان وجود الكود. قد تستخدم لغات أخرى 'Curly Braces' ({}) لتجميع التعليمات البرمجية - لا تستخدم Python هذه. تستخدم Python علامة التجزئة (#) للتعليقات ، وتُستخدم التعليقات لإخبار المطورين الآخرين أو الأشخاص الذين ينظرون إلى الكود بما يفعله جزء معين ، أو سبب الحاجة إليه. تتجاهل بايثون أي شيء بعد التجزئة.





أخيرًا ، هناك إصداران رئيسيان من Python - Python 2.7.x و Python 3.x. هناك بعض الاختلافات بين الاثنين ( ما هي الاختلافات؟ ). سيستخدم هذا البرنامج التعليمي Python 3.

الإعداد الأولي

توفير Pi الخاص بك هو بالفعل إعداد وتشغيل Raspbian ، ليس هناك الكثير من الإعداد الأولي المطلوب.





افتح Terminal ( القائمة> الملحقات> المحطة الطرفية ) وقم بتشغيل هذا الأمر. من الممارسات الجيدة دائمًا تحديث قائمة المستودعات باستمرار ، وسيؤدي ذلك إلى تنزيل أحدث قائمة بالبرامج (لن يتم تنزيل البرامج نفسها ، وهذا يساعد Pi على معرفة البرامج التي يطلق عليها ومكان العثور عليها).

sudo apt-get update

الآن قم بتحديث Pi (قد يستغرق هذا بعض الوقت):

sudo apt-get upgrade

تم تثبيت Python و Minecraft Pi بالفعل ، ولكن إذا لم يتم تثبيت Minecraft Pi لأي سبب ، فمن السهل تثبيته:

sudo apt-get install minecraft-pi

انتقل إلى المستندات وأنشئ مجلدًا جديدًا باسم 'Minecraft':

cd Documents/
mkdir Minecraft

يمكنك عرض محتويات هذا المجلد الجديد:

ls

إليك نصيحة - إذا بدأت في الكتابة وضغطت على مفتاح TAB ، فسيحاول سطر الأوامر إكمال العبارة تلقائيًا نيابةً عنك.

يمكنك فحص المسار إلى الدليل الحالي باستخدام pwd ، والتي تعني طباعة دليل العمل:

pwd

ابدأ Minecraft بالذهاب إلى القائمة> الألعاب> Minecraft Pi . ستحتاج إلى هذا الجري ، لكنك ستعود إليه لاحقًا.

افتح Python 3 من القائمة> البرمجة> Python 3 (IDLE) . يوفر لك هذا البرنامج طريقة لتشغيل أوامر Python وكتابة البرامج.

يمكنك الآن كتابة أوامر Python الخاصة بك هنا ، لكن هذا ليس عمليًا للغاية. اذهب إلى ملف> ملف جديد وثم ملف> حفظ واحفظ هذا في المجلد الذي قمت بإنشائه مسبقًا. ( المستندات> Minecraft ). دعنا نسميها hello_world.py '. ليس عليك استخدام الامتداد .py ، ستتم إضافته تلقائيًا ، لكنها ممارسة جيدة.

إذا عدت إلى الجهاز ، وانتقلت إلى مجلد Minecraft ، فسترى الملف الذي أنشأته للتو:

cd Minecraft/
ls

يمكنك تشغيل هذا الملف مثل هذا:

python hello_world

لاحظ كيف أن كلمة 'python' كلها أحرف صغيرة. يجب أن يكون هذا قبل اسم الملف ، حيث يخبر Pi أن الملف التالي هو Python ، لذلك يجب تنفيذه على هذا النحو.

عد إلى محرر Python واكتب:

print 'Hello, World!'

احفظ هذا الملف وشغّله مرة أخرى - يجب أن ترى الآن 'Hello، World!' تظهر في سطر الأوامر - أنيق! أمر الطباعة ببساطة يخبر Python بإخراج النص التالي بعلامات اقتباس مزدوجة. هذا جيد ، لكنه ليس مفيدًا بشكل رهيب لـ Minecraft ، دعنا نربطه:

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

الآن إذا قمت بحفظ هذا الملف وتشغيله ، يجب أن ترى 'Hello، World!' تظهر في لعبة Minecraft. لنفصل الكود:

from mcpi.minecraft import Minecraft

يخبر هذا السطر Python أنك تريد استخدام كود من ملف آخر. تم تطوير ملف mcpi.minecraft هذا للسماح بالتحكم السهل في Minecraft.

mc = Minecraft.create()

ينشئ هذا الخط كائنًا يسمى 'mc' (Minecraft). يجب عليك إنشاء هذا للسماح بالاتصال بلعبة Minecraft - لا يكفي تضمين الملف فقط.

mc.postToChat('Hello, World!')

أخيرًا ، يخبر هذا السطر Minecraft بكتابة بعض النص إلى الدردشة. حاول تغيير عبارة 'Hello، World!' لشيء آخر وشاهد ما يحدث ، ولكن تذكر تضمين كل من علامات الاقتباس المزدوجة. إذا كنت تواجه مشكلات في البرامج ، فهذه بعض أخطاء Python و Minecraft Pi الشائعة:

  • AttributeError - هذا خطأ مطبعي ، مثل pint أو prnt بدلاً من الطباعة
  • NameError: الاسم 'Minecraft' غير محدد - تذكر استيراد الوحدات التي تحتاجها
  • NameError: لم يتم تعريف الاسم 'true' - لغة Python حساسة لحالة الأحرف ، قم بالتغيير إلى 'True'
  • socket.error: [Errno 111] تم رفض الاتصال - تأكد من تشغيل Minecraft

المشاريع

الآن بعد أن تعرفت على أساسيات Python و Minecraft ، فلنقم ببعض المشاريع الرائعة. يمكن تنزيل جميع برامج الترميز من Github.

منشئ الجسر الآلي

سيقوم هذا البرنامج ببناء جسر فعال فوق الماء. عندما يقترب اللاعب من جسم مائي ، سيقوم البرنامج بتحويل عدة كتل إلى حجر. نظرًا لأن Minecraft تستخدم نظام إحداثيات ، فمن السهل جدًا الحصول على موقع المشغل ، إلى جانب نوع الكتل حول اللاعب. Minecraft Pi محدودة نوعًا ما ، لذا لا يمكن تحديث العديد من الكتل المختلفة بشكل مجمّع. ومع ذلك ، يمكنك بسهولة ترميز هذا السلوك بنفسك.

قم بإنشاء ملف جديد ( ملف> ملف جديد ) واحفظه باسم ' 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)

لاحظ كيف تنظر قيمة y فعليًا إلى y - 1. هذا هو مستوى الأرضية. إذا تم استخدام قيمة y ، فسيبحث البرنامج النصي عن الكتل عند مستوى الركبة تقريبًا - ولن يعمل جيدًا! Mc.getBlock () إرجاع معرف كتلة للإحداثيات المحددة. نظرًا لأن x و y و z هي إحداثيات المشغل ، يمكنك الجمع أو الطرح منها للحصول على مواضع حول اللاعب. لا يتعين عليك استخدام قيم x و y و z ، يمكنك استخدام أي رقم ، ولكن قد لا تعرف كيف ترتبط هذه الكتلة باللاعب - من الأفضل استخدام القيم المتعلقة باللاعب. قم بتشغيل هذا الملف من سطر الأوامر وشاهد ما يحدث.

يجب أن ترى أن مساحة صغيرة من الأرض تتحول إلى حجر بمجرد وصول اللاعب إلى مسطح مائي. إنه ليس رائعًا - أنت قادر على المشي بسرعة كافية لإحداث مشكلة. يمكنك حل هذا عن طريق تحويل كمية أكبر من الماء إلى اليابسة. الجزء الأخير من طريقة mc.setBlocks () هو معرف الكتلة. واحد هو معرف الكتلة للحجر. يمكنك تغيير هذا إلى خشب أو عشب أو أي شيء. إذا كنت ترغب في ذلك ، يمكنك بسهولة تحويل هذا إلى تصميم معقد - ربما جسر معلق!

زر التعدين الفائق

هذا المثال سيجعل عمل التعدين قصيرًا. يتكون من زر مادي ، عند الضغط عليه ، سوف يقوم بتعدين 10 كتل مكعبة. لنبدأ بالزر. على غرار الأزرار الموجودة على Arduino ، ستحتاج إلى كمية صغيرة من الأجهزة الإلكترونية ، وكلها يجب أن تكون موجودة في مجموعة أدوات بدء التشغيل الأساسية:

  • 1 × اللوح
  • 1 × مفتاح مؤقت
  • 1 × 220 أوم المقاوم
  • أنثى> ذكر كابلات القفز
  • ذكر> ذكر كابلات القفز

ها هي الدائرة:

اتصال زر Pi

يسمى هذا المقاوم بمقاومة 'هدم'. إنه يساعد على التأكد من أن ما يعتقده Pi هو الزر الذي يتم الضغط عليه ، حقًا هو الزر الذي يتم الضغط عليه. ليس عليك استخدام هذا ، ولكن يوصى به ، حيث قد تجد الكثير من الضوضاء والقراءات الخاطئة بدونه.

الزر متصل بـ General Purpose Input Output (GPIO) pin 14. يمكنك استخدام أي دبوس GPIO ، ولكن انظر إلى pinout أولاً ، نظرًا لأنها لا يمكن التحكم فيها جميعًا من Pi ، وتختلف قليلاً بين النماذج.

الآن وقد تم توصيل الزر ، حان الوقت لاختباره. قم بإنشاء ملف جديد وحفظه باسم ' button_test.py '. أضف هذا الرمز واحفظه ثم قم بتشغيله في 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

صحافة التحكم + ج لإيقاف البرنامج النصي. إذا كان كل شيء يعمل بشكل صحيح ، يجب أن ترى 'BUTTON WORKS!' في المحطة. لاحظ كيف ، مثل وحدة Minecraft ، يستخدم هذا الاختبار وحدات RPi.GPIO والوقت. تسمح هذه لـ Pi بالوصول إلى دبابيس الأجهزة وتوفر وظائف توقيت مفيدة.

الآن دعنا ننهي بقية الكود. إنشاء ملف جديد يسمى ' super_mine.py '. ها هو الكود:

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 () إرجاع الإحداثيات الحالية للاعبين ، والتي يتم تخزينها بعد ذلك في x و y و z. ال setBlocks () تخبر الطريقة Minecraft بملء جميع الكتل بين البداية والنهاية بالكتلة التالية. الصفر هو معرف الكتلة للهواء. يمكنك تغيير هذا إلى معرف كتلة آخر لملء منطقة بشكل صلب. يمكنك أيضًا تغيير الإحداثيات إلى +100 أو حتى +1000 كتلة ، ولكن قد يبدأ Pi في المعاناة إذا شعرت بالجنون. لاحظ كيف أن y + 10 هو نفسه لكلا الخطين. يمكنك تغيير هذا إلى y - 10 إذا أردت إزالة الكتل الموجودة تحت الأرض.

النقل الآني

استخدام بسيط آخر لهذا الزر يمكن أن يكون 'النقل الفوري'. يوفر Minecraft Pi Api طريقة لتعيين موضع اللاعب. سيقوم الكود التالي 'بالنقل الفوري' للاعب إلى موقع محدد مسبقًا:

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

لاحظ أن طريقته تقبل ثلاث معاملات ؛ x و y و z - لذا يمكنك ضبط هذه الأشياء على أي شيء لنقل اللاعب فورًا إلى هذا الموقع.

قم بإنشاء نسخة من ملف super_mine ( ملف> حفظ نسخ باسم ) وتعديله باستبدال if بما يلي:

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

يجب أن يبدو هذا الملف الآن كما يلي:

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

احفظه باسم ' النقل الفضائي ' و اهرب.

قد تجد اللاعب عالقًا داخل بعض الكتل عند استخدام هذا ، وفي هذه الحالة ستحتاج إلى ضبط الإحداثيات على مساحة مفتوحة معروفة (يظهر أعلى يسار الشاشة موقعك الحالي).

ابني منزل

مهمة أخيرة لهذا الزر هي بناء منزل. يشبه إلى حد كبير مثال التعدين السريع أعلاه ، سيحل هذا ببساطة محل الكتل المحيطة باللاعب لإنشاء منزل. سيتم استخدام كتل مختلفة لمواد مختلفة (النوافذ والجدران وما إلى ذلك). لتسهيل كتابة الأشياء ، سيتم إنشاء كتلة صلبة ، ثم إزالة الجزء الداخلي (مجموعة الكتلة على الهواء) ، سيؤدي ذلك إلى إنشاء غلاف مجوف. يمكنك إضافة إضافات مثل السرير أو الباب ، لكن مشروع Minecraft Pi غير مكتمل بعض الشيء ، وبينما تعمل هذه الكائنات عند وضعها من قبل اللاعب ، فإنها ليست رائعة عند استخدام 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

احفظ هذا باسم ' البيت ' و اهرب. كل شيء على ما يرام ، يجب أن ترى منزلًا صغيرًا يظهر (قد تحتاج إلى الالتفاف للعثور عليه). انها بسيطة جدا ، وفتحة وبعض النوافذ. من الناحية النظرية ، لا يوجد حد لمدى ضخامة أو تعقيد المبنى الذي يمكنك تشييده.

اصنع لعبة صغيرة

بعد ذلك ، دعنا نصنع لعبة صغيرة! سيكون هذا بسيطًا للغاية ، عندما يخطو اللاعب على كتلة من الرمال ، ستتحول إلى حمم بعد فترة زمنية عشوائية. هذه لعبة جيدة ، حيث يمكنك تصميم مستوياتك الخاصة أو تعديلها لجعل الأمور أكثر صعوبة. لن تحتاج إلى الزر لهذا المثال.

قم بإنشاء ملف جديد وحفظه باسم ' mini_game.py '. ها هو الكود:

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

هذا الرمز هو بداية جيدة على عشوائي() وظيفة: عشوائي موحد (0.1، 2.5) سيولد عددًا عشوائيًا بين 0.1 (1/10 ثانية) و 2.5 (2 1/2 ثانية). زيادة هذه الأرقام ستجعل اللعبة أسهل.

حاول! قف على كتلة من الرمل ، وسرعان ما ستتحول إلى حمم بركانية. قد يكون هذا أساس لعبة أكثر تعقيدًا.

اصنع لعبة صغيرة أخرى

إن مقدمة هذه اللعبة بسيطة - لا تقف على أرضية خشبية عندما ينتهي الوقت. يتم نقل اللاعب إلى 'ساحة'. إنهم مجبرون على الوقوف بلا حراك حتى تبدأ اللعبة. بمجرد أن تبدأ ، سوف تتحول الأرضية إلى الماء بمجرد نفاد المؤقت. يجب أن يقف اللاعب في المنطقة الآمنة (الكتل الماسية) من أجل البقاء. كل مستوى يقلل من الموقت بمقدار ثانية واحدة. بعد كل مستوى ناجح ، تصبح المنطقة الآمنة أكبر. تحقق من الكود أدناه:

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

احفظ هذا باسم ' mini_game_2.py وجربه.

يواجه Pi 2 بعض مشكلات الأداء أثناء تشغيل Minecraft. الرسم البياني لاستخدام وحدة المعالجة المركزية (CPU) ( الزاوية العليا اليمنى ) لا يُظهر أبدًا أي حمل ثقيل ، لذلك يجب أن يرجع ذلك إلى ضعف التصميم والتحسينات من قبل المطورين. لا تتعلق هذه المشكلات بتشغيل الكود (حيث تستمر عندما لا تعمل Python) ، ومع ذلك تتفاقم هذه اللعبة المصغرة. إذا كان Pi الخاص بك يكافح حقًا ، فقد ترغب في تقليل حجم الساحة أو رفع تردد التشغيل عن Pi الخاص بك.

لا يوجد اتصال بالإنترنت windows 10 ولكن متصل

كاشف الماس

لنقم بدائرة أخرى. سيستخدم هذا الصمام الثنائي الباعث للضوء (LED) للإضاءة عندما يكون هناك ماسات تحتها (في حدود 15 كتلة). هذا ما تحتاجه:

  • 1 × اللوح
  • 1 × ليد
  • 1 × 220 أوم المقاوم
  • أنثى> ذكر كابلات القفز
  • ذكر> ذكر كابلات القفز

ها هي الدائرة:

قم بتوصيل الأنود (الساق الطويلة) بـ GPIO Pin 14. يعمل هذا الدبوس مثل + 5v. قم بتوصيل الكاثود (قصير الساق) بالأرض.

لقد استخدمت لعبة خام رخيصة وقمت بتعديلها عن طريق إزالة الغطاء الخلفي والإلكترونيات ، ثم وضعت مؤشر LED تحتها. يمكنك بسهولة جعل هذا دائمًا باستخدام الغراء الساخن أو شيء مشابه.

احفظ هذا الرمز باسم ' الماس ':

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

عندما يكون هناك كتلة خام الماس أسفل المشغل (في حدود 15 كتلة) سيومض الضوء.

ThinkGeek Minecraft Light-Up Blue Stone Diamond Ore - تأكد من إبقاء Pigmen بعيدًا اشترِ الآن على أمازون

هل صنعت شيئًا رائعًا مع Minecraft Pi؟ اسمحوا لي أن أعرف في التعليقات ما الذي قدمته أو إلى أي مدى وصلت إليه في الألعاب.

نأمل أن تعجبك العناصر التي نوصي بها ونناقشها! لدى MUO شراكات تابعة ورعاية ، لذلك نتلقى حصة من الإيرادات من بعض مشترياتك. لن يؤثر هذا على السعر الذي تدفعه ويساعدنا في تقديم أفضل توصيات المنتجات.

يشارك يشارك سقسقة بريد الالكتروني هل يستحق الترقية إلى Windows 11؟

تم إعادة تصميم Windows. لكن هل هذا كافٍ لإقناعك بالانتقال من Windows 10 إلى Windows 11؟

اقرأ التالي
مواضيع ذات صلة
  • افعلها بنفسك
  • برمجة
  • ماين كرافت
  • فطيرة التوت
  • إلكترونيات
  • بايثون
نبذة عن الكاتب جو كوبورن(تم نشر 136 مقالاً)

تخرج جو في علوم الكمبيوتر من جامعة لينكولن بالمملكة المتحدة. إنه مطور برامج محترف ، وعندما لا يطير بطائرات بدون طيار أو يكتب الموسيقى ، يمكن العثور عليه في كثير من الأحيان يلتقط الصور أو ينتج مقاطع فيديو.

المزيد من Joe Coburn

اشترك في نشرتنا الإخبارية

انضم إلى النشرة الإخبارية لدينا للحصول على نصائح تقنية ومراجعات وكتب إلكترونية مجانية وصفقات حصرية!

انقر هنا للاشتراك