Merhabalar,
Bu yazımızda micro:bit’i nasıl bir Oyun Kumandasına çevireceğimizi anlatacağız.
**Proje yapan 14 yaşındaki Musab Kılıç arkadaşımız ve micro:bit’in kendi resmi sayfasında projesi yayımlanmış! Maker Faire’ye gittiyseniz aşağıda anlatacağımız projeye orada da rastlamışsınızdır. 🙂 Projenin anasayfasına buradan ulaşabilirsiniz.
Projenin nasıl çalıştığını linke tıklayarak izleyebilirsiniz:
https://github.com/musabkilic/MicroBike/blob/master/res/microbike.gif
Nasıl Çalışıyor?
Yapacağımız proje BBC micro:bit kartını kullanarak bilgisayarımızdaki oyunları kontrol etmemizi sağlıyor. Projemiz için biraz da Python kodu yazmamız gerekecek.:)
Başlayalım!
Kurulum:
Öncelikle cihazımıza bazı kurulumlar yapmamız gerekecek.
-
-
- Daha önce Python ile çalışmadıysanız buraya tıklayarak indirebilirsiniz.
- Bilgisayarınızda Pip yoksa buradaki yönergeyi takip ederek kurulumu gerçekleştirebilirsiniz. Pip, Python için kullanabileceğiniz paket yöneticisidir ve Python paketleriyle kurulum yapmayı oldukça kolaylaştırır.
- MicroBike klasöründeki gerekli modülleri indirin.
-
Komut Satırı Kullanımı:
Yeni bir komut satırı penceresi açıyoruz. Ardından aşağıdaki komut satırını yazıyoruz. Aşağıdaki kod bloğu Github’dan MicroBike için en güncel kodu almamızı sağlıyor.
git clone https://github.com/musabkilic/MicroBike
**Komut satırı penceresi Windows kullanıcıları için “Komut Istemi”, Mac kullanıcıları için “Terminal” ve Linux kullanıcıları için ise “Shell” ya da “Terminal” olarak adlandırılır.
Komut satırı pencerenizde ‘cd’ komutunu kullanarak MicroBike klasörümüze gidiyoruz.
cd MicroBike
Gerekli modülleri indirelim.
pip install -U -q -r requirements.txt
Yukarıda eklediğimiz kod satırlarının nasıl çalıştığını aşağıdaki linkten izleyebilirsiniz:
https://asciinema.org/a/ZaQaO2bJWUP4FyigsiC4IOaBZ
micro:bit Kurulumu:
micro:bit’i mikro USB kablo kullanarak bilgisayarımıza bağlıyoruz. bitio.hex dosyasının güncel versiyonunu buraya tıklayarak alıp ve micro:bit’e gönderiyoruz.
**Eğer Windows ile çalışıyorsanız, bilgisayarınıza Windows Serial Driver’ı da indirmeniz gerekmektedir.
Komut satırımıza controller.py
yazarak MicroBike’ı kullanabiliriz !
Nasıl Çalışır?
controller.py
kodunun nasıl çalıştığını inceleyelim. Öncelikle modülleri kullanabilmemiz için aşağıdaki gibi import etmemiz gerekiyor.
import microbit
import time
from pykeyboard import PyKeyboard
Bu 3 modülün ne işe yaradığına bakalım; microbit modülü micro:bit’ten gelen verileri okuma ve onu kontrolü, time modülü belirli bir zamanı beklemek için ve pykeyboard modülü ise klavye(yani oyunu) kontrolü.
#Function for Changing a Key def changeKeyState(key, value, key_name): global keyboard_keys #Change Only Neccessary if value!=keyboard_keys[key_name]: if value: keyboard.press_key(key) else: keyboard.release_key(key) keyboard_keys[key_name] = value
changeKeyState
fonksiyonu klavyedeki tuşları kontrol etmemizi sağlayan bir fonksiyondur.
#Specify Keyboard keyboard = PyKeyboard() #Set Accelerometer Values previous_values = microbit.accelerometer.get_values() #Set Keyboard Keys keyboard_keys = {"L":False,"R":False,"F":False,"S":False} #Set Images stable = microbit.Image("00000:00000:99999:00000:00000") images = {"N": microbit.Image.ARROW_N, "NE": microbit.Image.ARROW_NE, "NW": microbit.Image.ARROW_NW, "E": microbit.Image.ARROW_E, "W": microbit.Image.ARROW_W, "": stable}
Daha sonra kullanmak üzere bazı değişkenler tanımlıyoruz.
#Wait for User to Press a Button while 1: #Blink microbit.display.show(microbit.Image.ARROW_W) time.sleep(0.5) microbit.display.clear() #Start the Program if a Button is Pressed if microbit.button_a.was_pressed() or microbit.button_b.was_pressed(): break time.sleep(0.5)
Bu bizim ilk döngümüz. Kullanıcı A veya B butonlarına basana kadar yanıp sönmeye devam edecektir. Düğmeye bastıktan sonra buton kontrol kod bloğu çalışmaya başlayacaktır.
#Start the Loop while 1: #Get Accelerometer Values accelerometer_values = microbit.accelerometer.get_values() x,y,z = accelerometer_values #Calculate Avarege Motion in X,Y,Z Directions motion = sum(map(lambda x:abs(accelerometer_values[x]-previous_values[x]),range(3)))/3
Bu kısım ana fonksiyonumuz. Gerekli değerleri alarak ve hareketi hesaplayarak başlıyoruz.
#Change Direction changeKeyState(keyboard.up_key,y>400,"F") changeKeyState(keyboard.right_key,x>60,"R") changeKeyState(keyboard.left_key,x<-60,"W") changeKeyState(keyboard.shift_key,motion>500,"S") #Set Direction to Show direction = "" if y>400: direction += "N" if x>60: direction += "E" elif x<-60: direction += "W" #Show the Direction microbit.display.show(images[direction]) #Set Current Accelerometer Values to Previous previous_values = accelerometer_values
Devamında oyunu kontrol etmeden daha önce aldığımız bilgileri kullanacağız.Klavye tuşları, micro:bit sağa ve sola döndüğünde tetiklenecek.
micro:bit’in yönünü değiştirmek için de aynı bilgileri kullanıyoruz. Projemizin sonuna geldik.
Micro:bit ile yaptığınız projelerde sosyal medyada #MarketSamm ve #microbitTurkiye etiketlerini eklemeyi unutmayın! Bir sonraki projede görüşmek üzere. 🙂
Is it okay if we feature your site in our next email newsletter? It’s a perfect fit for a piece we’re doing and I think our audience would find some of the content on your site super useful.
I know you’re probably busy, so just a simple yes or no would suffice.
Many Thanks,
I just wanted to followup on the request I submitted through your contact form a couple weeks ago as I haven’t heard anything back. I pasted it below for your reference.
Is it okay if we feature your site in our next email newsletter? It’s a perfect fit for a piece we’re doing and I think our audience would find some of the content on your site super useful.
I know you’re probably busy, so just a simple yes or no would suffice.
Many Thanks,
Hello Erika,
For cooperating and more, please contact us market@samm.com
Cheers.
[…] bu sefer de yeni projesi olan LightBit projesini anlatacağız. (MicroBike projesine buradan […]