micro-bit-bike-2-02

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

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. 🙂

 

0 0 vote
Article Rating
Subscribe
Bildir
guest
4 Yorum
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
Erika Miller
8 ay önce

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,

Erika Miller
8 ay önce

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,

Masoud Toorani
Yönetici
7 ay önce

Hello Erika,

For cooperating and more, please contact us market@samm.com

Cheers.

trackback
6 ay önce

[…] bu sefer de yeni projesi olan LightBit projesini anlatacağız. (MicroBike projesine buradan […]