Bir cümlelik özet
micro:bit'i bloklarla sürüklemek yerine, MicroPython denilen küçük bir Python sürümüyle yazılı komutlar kullanarak programlamayı öğreniyoruz.
Neden önemli?
Bloklar başlangıç için harikadır. Sürükle, bırak ve program hazır. Fakat programlar büyüdükçe blokları taşımak yavaşlar ve ekran kalabalıklaşır. İşte bu noktada yazılı kod devreye girer.
Daha önce Python modülünde if, döngü ve fonksiyon gördün. micro:bit üzerinde çalışan MicroPython, tam olarak o Python'un küçük kartlara sığdırılmış hâlidir. Yani öğrendiğin dil değişmiyor; sadece o dili artık gerçek bir donanıma söylüyorsun.
Aynı programı hem blok hem Python olarak yazmak, ikisi arasındaki köprüyü görmeni sağlar. Bir bloğun aslında hangi kod satırına karşılık geldiğini anladığında, ileride herhangi bir cihazı metin tabanlı kodla programlaman çok daha kolay olur.
Yazılı kodun bir başka faydası da paylaşmanın kolay olmasıdır. Bir blok programını arkadaşına anlatmak için ekran görüntüsü gerekir; ama birkaç satır Python'u bir mesajda kolayca gönderebilirsin. Bu derste amacımız yeni bir dil ezberlemek değil, zaten bildiğin Python'u küçük bir kartta çalışırken görmek.
MicroPython nedir?
MicroPython, sınırlı belleğe sahip küçük kartlarda çalışabilen bir Python sürümüdür. Bilgisayarındaki Python neredeyse aynıdır; ama micro:bit'in LED'leri, düğmeleri ve sensörleri için hazır komutlar ekler.
Bu komutlara ulaşmak için her programın başına tek bir satır yazarız:
from microbit import *
Bu satır, "micro:bit'e ait bütün hazır araçları getir" demektir. display, button_a, accelerometer ve sleep gibi isimler bu sayede kullanılabilir hâle gelir. Neredeyse her micro:bit programı bu satırla başlar.
Kodu nereye yazarız?
Kodu bir tarayıcı düzenleyicisine (Python editörü) veya bilgisayara kurulu bir editöre yazarız. Sonra "Flash" (yükle) düğmesiyle kartın belleğine gönderilir. Kart, gücü olduğu sürece bu programı tekrar tekrar çalıştırır.
En sık kullanılan dört araç
Blok koddan Python'a geçerken tanışman gereken dört temel araç var: ekran, düğmeler, ivmeölçer ve bekleme.
display — 5×5 LED ekranı
display, karttaki 25 küçük ışığı kontrol eder. Yazı, sayı veya hazır simgeleri gösterebilir.
from microbit import *
display.show(Image.HEART) # kalp simgesi
sleep(1000) # 1 saniye bekle
display.scroll("MERHABA") # yazıyı kaydırarak göster
display.show(...)tek bir görüntüyü veya karakteri gösterir.display.scroll(...)uzun yazıyı soldan sağa kaydırır.Image.HEART,Image.YES,Image.HAPPYgibi hazır simgeler vardır.
button_a ve button_b — iki düğme
Kartın üzerinde A ve B adında iki düğme vardır. Basılıp basılmadığını kontrol edebiliriz.
if button_a.is_pressed():
display.show(Image.HAPPY)
button_a.is_pressed(), düğmeye o an basılıysa True (doğru), değilse False (yanlış) verir. Bu, Python modülünde gördüğün if koşulunun tam olarak aynısıdır.
accelerometer — hareket sensörü
İvmeölçer (accelerometer), kartın nasıl tutulduğunu ve hareket ettiğini ölçen sensördür. En kolay kullanımı hazır jestleri tanımaktır:
if accelerometer.was_gesture("shake"):
display.scroll("SALLANDI")
"shake" sallamayı, "face up" ekranın yukarı baktığını anlatır. Bir sonraki derste adım sayar yaparken tam olarak bu sensörü kullanacağız.
sleep — bekleme
sleep(ms), programı belirtilen milisaniye kadar durdurur. 1000 milisaniye 1 saniyedir. Bekleme olmadan ekran değişimleri gözünün göremeyeceği kadar hızlı olur.
Bu dört araç, micro:bit programlarının büyük kısmını yazmana yeter. Bir düğmeye bak, bir şey göster, biraz bekle ve tekrar et. İleride sensörler ve radyo eklendikçe bile bu temel yapı değişmez.
Aynı program: önce blok, sonra Python
En iyi öğrenme yolu, bildiğin bir bloğu satır satır Python'a çevirmektir. Amaç şu: A düğmesine basılınca kalp, B düğmesine basılınca gülen yüz göstermek.
MakeCode blok sırası
sürekli
eğer <A düğmesine basıldı> ise
kalp simgesi göster
değilse eğer <B düğmesine basıldı> ise
mutlu simge göster
Aynısı MicroPython'da
from microbit import *
while True:
if button_a.is_pressed():
display.show(Image.HEART)
elif button_b.is_pressed():
display.show(Image.HAPPY)
Karşılaştıralım:
| Blok | Python |
|---|---|
| sürekli | while True: |
| eğer … ise | if …: |
| değilse eğer | elif …: |
| kalp simgesi göster | display.show(Image.HEART) |
Görüldüğü gibi mantık birebir aynı; yalnız yazım biçimi değişti. while True: bloğu, MakeCode'daki "sürekli" bloğunun karşılığıdır ve programı sonsuza kadar tekrar eder.
Mini uygulama
Kendi "ruh hâli düğmesi" programını yaz. Hedef:
- Başlangıçta ekranda kısa bir "SELAM" yazısı kaysın.
- A düğmesine basınca kalp görünsün.
- B düğmesine basınca üzgün bir yüz görünsün.
- Kart sallanınca ekran temizlensin.
Başlangıç için iskelet:
from microbit import *
display.scroll("SELAM")
while True:
if button_a.is_pressed():
display.show(Image.HEART)
elif button_b.is_pressed():
display.show(Image.SAD)
if accelerometer.was_gesture("shake"):
display.clear()
sleep(100)
Çalıştırdıktan sonra dene: Image.SAD yerine Image.YES yazarsan ne olur? sleep(100) satırını silersen program yine çalışır mı? Küçük değişiklikler yapıp sonucu gözlemlemek, kodu gerçekten anlamanın en iyi yoludur.
Uygulama laboratuvarı: Python ile micro:bit
Python ile micro:bit konusunu kalıcı hâle getirmenin en iyi yolu, kavramı küçük ve ölçülebilir bir göreve dönüştürmektir. Bu çalışmada MicroPython nedir? ile En sık kullanılan dört araç arasındaki ilişkiyi kullanarak simülatörde ve kart üzerinde denenmiş micro:bit programı ile test notları hazırlayacaksın. Amaç yalnız sonucun çalışması değil; hangi kararı neden verdiğini, neyi test ettiğini ve hangi durumda tasarımı değiştireceğini açıklayabilmektir.
Görev senaryosu
Şu senaryoyu ele al: düğmelerle menü seçimi yapılan küçük bilgi oyunu. Dersin ana hedefi “Blok koddan MicroPython'a geçip aynı programları Python'la yazmayı öğren” olduğuna göre önce problemi tek cümleyle tanımla. Ardından sistemin alacağı girdiyi, uygulayacağı işlemi ve üreteceği çıktıyı ayrı ayrı yaz. Bilmediğin bir ayrıntı varsa onu varsayım olarak işaretle; varsayımı gerçek bilgi gibi kullanma.
- Planla: Başlangıç durumunu, beklenen sonucu ve kullanacağın kavramları yaz.
- En küçük sürümü kur: Yalnız temel davranışı çalıştır; süsleme ve ek özellikleri sonraya bırak.
- Üç test hazırla: Normal bir durum, sınırda bir durum ve hatalı ya da beklenmeyen bir durum seç.
- Sonucu kaydet: Beklenen ile gerçekleşeni yan yana yaz; fark varsa olası nedeni belirt.
- Tek değişiklik yap: Aynı anda birçok şeyi değiştirmek yerine bir kararı düzeltip testi yeniden çalıştır.
Başarı ölçütleri
- Program simülatörde beklenen olayı üretiyor mu?
- Kart yeniden başlatıldığında değerler doğru mu?
- A ve B düğmelerinin birlikte basılması denendi mi?
- Radyo grubu ve mesaj biçimi iki kartta aynı mı?
- Harici bileşenlerde pin ve gerilim sınırları kontrol edildi mi?
“Python ile micro:bit” çalışmasını bitirdiğinde ürünü bir arkadaşına yalnız bölüm başlıklarıyla anlat. Arkadaşın düğmelerle menü seçimi yapılan küçük bilgi oyunu senaryosundaki adımları ve karar nedenlerini takip edebiliyorsa anlatım yeterince açıktır. Anlaşılmayan noktayı daha fazla terim ekleyerek değil, MicroPython nedir? ve En sık kullanılan dört araç ilişkisini daha küçük adımlara bölerek düzelt.
Sık yapılan hatalar
from microbit import * satırını unutmak
Bu satır olmadan display veya button_a gibi isimler tanınmaz ve program hata verir. Neredeyse her micro:bit programı bu satırla başlar.
İki nokta ve girintiyi atlamak
Python'da if, elif ve while satırlarının sonunda iki nokta (:) olmalı ve altındaki satırlar içeri girintili yazılmalıdır. Girinti Python için süs değil, hangi kodun bloğa ait olduğunu gösteren kuraldır.
sleep içine saniye yazmak
sleep(1) bir saniye değil, yalnız bir milisaniyedir ve gözün fark edemez. Bir saniye için sleep(1000) yazmalısın.
is_pressed() içindeki parantezi unutmak
button_a.is_pressed (parantezsiz) düğmeyi kontrol etmez. Sonuç almak için button_a.is_pressed() şeklinde parantezle yazılmalıdır.
Güvenlik notu
- micro:bit'i bir pil kutusuyla besleyeceksen bağlantıyı bir yetişkinle birlikte yap ve yalnız kart için uygun, düşük gerilimli pilleri kullan.
- Karta harici parça (LED, buzzer) bağlıyorsan derste öğrendiğin pin ve direnç kurallarına uy; bağlantıyı güç kapalıyken yap.
- Kartı bilgisayara takıp çıkarırken USB kablosunu yavaşça tut; metal yüzeylerin karttaki uçlara değmesine izin verme.
Ders özeti
- MicroPython, micro:bit gibi küçük kartlarda çalışan bir Python sürümüdür ve daha önce öğrendiğin dilin aynısıdır.
- Her program
from microbit import *satırıyla başlar; bu satır kartın hazır araçlarını getirir. - En temel araçlar
display(ekran),button_a/button_b(düğmeler),accelerometer(hareket) vesleep(bekleme) komutlarıdır. - Bir blok programı satır satır Python'a çevirerek "sürekli" yapısının
while True:, "eğer" yapısınınifolduğunu görürüz. - Girinti, iki nokta ve milisaniye gibi ayrıntılar Python'da sonucu doğrudan etkiler.
Kontrol soruları
- MicroPython, bilgisayardaki Python'dan farklı bir dil midir? Kısaca açıkla.
from microbit import *satırı ne işe yarar?display.show(...)iledisplay.scroll(...)arasındaki fark nedir?sleep(500)komutu programı ne kadar süre durdurur?- MakeCode'daki "sürekli" bloğunun MicroPython'daki karşılığı hangi satırdır?
Cevaplar
- Hayır, aynı dildir. MicroPython, Python'un küçük kartlara sığacak şekilde küçültülmüş hâlidir; kurallar aynı, sadece kart donanımı için ek komutlar vardır.
- micro:bit'e ait hazır araçları (display, düğmeler, sensörler, sleep) programa getirir. Bu satır olmadan bu isimler tanınmaz.
showtek bir görüntüyü veya karakteri yerinde gösterir;scrolluzun bir yazıyı soldan sağa kaydırarak gösterir.- Yarım saniye, yani 500 milisaniye durdurur (1000 milisaniye = 1 saniye).
while True:satırıdır; bu döngü içindeki kod sonsuza kadar tekrar eder.
Kaynak ve doğrulama notu
“Python ile micro:bit” dersi için doğrulama odağı MicroPython nedir? ile En sık kullanılan dört araç arasındaki ilişkinin örnekler üzerinde tutarlı çalışmasıdır. MakeCode ve MicroPython adları sürüme göre küçük farklılık gösterebilir. Önce simülatörde test yapılmalı; harici bileşen bağlanacaksa kartın pin ve gerilim sınırları ayrıca kontrol edilmelidir.
Sonraki ders
Proje: Adım Sayar — ivmeölçeri kullanarak her adımı sayan ve sonucu ekranda gösteren giyilebilir bir mini proje yapıyoruz.