Ana Sayfa · Akademi · Robotik ve Kodlama · micro:bit · Düğmeler ve Olaylar

Düğmeler ve Olaylar

A ve B düğmeleriyle olay temelli programlar yazmayı öğren.

DERS PUSULASI

Bu sayfayı ne için kullanacaksın?

Ana fikir

micro:bit üzerindeki A ve B düğmelerine basıldığında programın belirli işleri yapmasını sağlayan olay temelli programlama mantığını öğreniyoruz.

Üretilecek kanıt

Kendi "duygu kartını" yap. Amaç: iki düğme ve A+B ile üç farklı yüz ifadesi göstermek. Görev adımları: A'ya basınca gülen yüz göster. B'ye basınca üzgün yüz göster. A+B'ye basınca şaşkın yüz göster. MakeCode taslağı: A düğmesine basıldığında mutlu yüz göster B düğmesine basıldığında üzgün yüz göster A+B düğmesine basıldığında şaşkın yüz göster MicroPython…

Kontrol tuzağı

A+B'yi diğer olaylardan sonra kontrol etmek MicroPython'da önce A ve B'yi tek tek kontrol edersen, sen iki tuşa basana kadar program çoktan A'yı yakalayıp çalışmış olur. A+B kontrolünü en başa koy; ancak o zaman ikisine birlikte basma ayrı bir olay gibi çalışır. was_pressed ile is_pressed karıştırmak is_pressed()…

Sonraki bağlantı

Değişkenler ve Döngüler: Düğmeyle artan bir sayaç yaparak bilgiyi bir değişkende saklamayı ve döngülerle tekrar etmeyi öğreneceğiz.

Modül kaynakları: Python Tutorial · Arduino Learn

SeviyeBaşlangıç
Yaş10–16
Süre25–35 dk
Ön koşulLED Matrisi
İçerikStandart ders · 1.357 kelime
Son güncelleme

Bir cümlelik özet

micro:bit üzerindeki A ve B düğmelerine basıldığında programın belirli işleri yapmasını sağlayan olay temelli programlama mantığını öğreniyoruz.

Neden önemli?

Önceki derste 5×5 LED matrisine kalp, ok veya kendi çizdiğin şekilleri gösterdin. Ama o programlar tek yönlüydü: micro:bit sadece senin yazdığın sırayı takip ediyordu, sana bir şey soramıyordu.

Düğmeler bu durumu değiştirir. Artık kart, kullanıcının ne yaptığını bekleyebilir. Bir tuşa basınca bir şey olur, başka bir tuşa basınca başka bir şey. Bu, bir programı etkileşimli hâle getirmenin en basit yoludur.

Etrafına bakınca aynı fikri her yerde görürsün. Asansör düğmesine basarsın, kabin gelir. Oyun kolundaki tuşa basarsın, karakter zıplar. Kapı ziline basarsın, ev içinde bir ses çalar. Bunların hepsinde ortak olan şey şudur: bir olay gerçekleşir ve program buna bir tepki verir. Bu derste micro:bit'i tam olarak böyle düşünmeye başlayacağız.

Olay nedir?

Olay (event), programın beklediği ve gerçekleştiğinde tepki verdiği bir durumdur. "A düğmesine basıldığında" bir olaydır. "Kart sallandığında" da bir olaydır.

Olay temelli programlamada iki şeyi ayırırız:

Günlük hayattan örnek: Kapı zili

Kapı zili tam bir olay-tepki örneğidir.

Zil, kimse basmadan çalmaz. Yani program sürekli "bir şey yap" demez; sadece olay gerçekleştiğinde çalışır. micro:bit düğmeleri de böyledir.

Günlük hayattan örnek: Işık düğmesi

Odandaki lamba düğmesini düşün.

Bir daha bastığında ışık söner. Aynı düğme, duruma göre farklı sonuç verebilir. micro:bit'te de aynı düğmeye basınca farklı şeyler yaptırabiliriz.

micro:bit'in düğmeleri

micro:bit'in ön yüzünde, LED matrisinin iki yanında iki fiziksel düğme vardır:

Bu iki düğmeyi tek tek kullanabildiğin gibi, ikisine aynı anda basarak üçüncü bir seçenek de oluşturabilirsin: A+B.

MakeCode'da "düğmeye basıldığında" bloğu

MakeCode'da her olayın kendi bloğu vardır. "A düğmesine basıldığında" bloğunun içine ne koyarsan, sadece A'ya basınca çalışır.

Örnek: A ile kalp, B ile yıldız gösterelim.

A düğmesine basıldığında
  kalp simgesi göster

B düğmesine basıldığında
  yıldız simgesi göster

Dikkat et: burada sürekli bloğu yok. Kart, sen basana kadar bekler. Bastığın anda ilgili blok bir kez çalışır.

A+B ile üçüncü seçenek

Aynı programa A+B olayını ekleyebiliriz. İki düğmeye birlikte basınca ekranı temizleyelim.

A düğmesine basıldığında
  kalp simgesi göster

B düğmesine basıldığında
  yıldız simgesi göster

A+B düğmesine basıldığında
  ekranı temizle

Böylece tek kartla üç farklı komut verebiliyoruz: kalp, yıldız ve temizle.

Aynı program MicroPython'da

Aynı mantığı MicroPython ile de yazabiliriz. Burada önemli bir yöntem button_a.was_pressed() fonksiyonudur. Bu fonksiyon, "son kontrolden bu yana A'ya basıldı mı?" sorusuna True veya False yanıtı verir.

MicroPython'da olayları kendimiz bir döngü içinde kontrol ederiz:

from microbit import *

while True:
    if button_a.was_pressed():
        display.show(Image.HEART)
    elif button_b.was_pressed():
        display.show(Image.DIAMOND)
    if button_a.is_pressed() and button_b.is_pressed():
        display.clear()

Burada iki farklı yöntem var:

MakeCode bloğuyla mantık birebir aynıdır; sadece yazım biçimi değişir.

Mini uygulama

Kendi "duygu kartını" yap. Amaç: iki düğme ve A+B ile üç farklı yüz ifadesi göstermek.

Görev adımları:

  1. A'ya basınca gülen yüz göster.
  2. B'ye basınca üzgün yüz göster.
  3. A+B'ye basınca şaşkın yüz göster.

MakeCode taslağı:

A düğmesine basıldığında
  mutlu yüz göster

B düğmesine basıldığında
  üzgün yüz göster

A+B düğmesine basıldığında
  şaşkın yüz göster

MicroPython taslağı:

from microbit import *

while True:
    if button_a.is_pressed() and button_b.is_pressed():
        display.show(Image.SURPRISED)
    elif button_a.was_pressed():
        display.show(Image.HAPPY)
    elif button_b.was_pressed():
        display.show(Image.SAD)

Deneme fikirleri: sayaç ekle (A artırsın, B azaltsın), ya da A'ya her basışta farklı bir harf göster. Simülatörde test et, sonra gerçek karta yükle.

Uygulama laboratuvarı: Düğmeler ve Olaylar

Düğmeler ve Olaylar 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 Olay nedir? ile Günlük hayattan örnek: Işık düğmesi 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: bisiklet için yanıp sönen güvenlik ışığı prototipi. Dersin ana hedefi “A ve B düğmeleriyle olay temelli programlar 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.

  1. Planla: Başlangıç durumunu, beklenen sonucu ve kullanacağın kavramları yaz.
  2. En küçük sürümü kur: Yalnız temel davranışı çalıştır; süsleme ve ek özellikleri sonraya bırak.
  3. Üç test hazırla: Normal bir durum, sınırda bir durum ve hatalı ya da beklenmeyen bir durum seç.
  4. Sonucu kaydet: Beklenen ile gerçekleşeni yan yana yaz; fark varsa olası nedeni belirt.
  5. 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

“Düğmeler ve Olaylar” çalışmasını bitirdiğinde ürünü bir arkadaşına yalnız bölüm başlıklarıyla anlat. Arkadaşın bisiklet için yanıp sönen güvenlik ışığı prototipi senaryosundaki adımları ve karar nedenlerini takip edebiliyorsa anlatım yeterince açıktır. Anlaşılmayan noktayı daha fazla terim ekleyerek değil, Olay nedir? ve Günlük hayattan örnek: Işık düğmesi ilişkisini daha küçük adımlara bölerek düzelt.

Sık yapılan hatalar

A+B'yi diğer olaylardan sonra kontrol etmek

MicroPython'da önce A ve B'yi tek tek kontrol edersen, sen iki tuşa basana kadar program çoktan A'yı yakalayıp çalışmış olur. A+B kontrolünü en başa koy; ancak o zaman ikisine birlikte basma ayrı bir olay gibi çalışır.

was_pressed ile is_pressed karıştırmak

is_pressed() düğme basılı olduğu sürece tekrar tekrar True döner; bu yüzden ekran hızlıca titreyebilir. Tek bir basışa tek tepki istiyorsan was_pressed() kullan.

"Sürekli" içine gösterip beklememek

MakeCode'da simgeyi sürekli bloğuna koyarsan, kart düğmeye bakmadan sürekli aynı şeyi gösterir. Düğme tepkisi istiyorsan komutu "düğmeye basıldığında" bloğunun içine koy.

Ekranı hiç temizlememek

Kalp gösterip sonra yıldız gösterince, eski LED'lerin bir kısmı açık kalabilir. Yeni bir şekil göstermeden önce gerekirse ekranı temizle komutunu kullan.

Güvenlik notu

micro:bit düşük gerilimle çalışan güvenli bir karttır; ama yine de birkaç noktaya dikkat et:

Ders özeti

Kontrol soruları

  1. Olay temelli programlamada "olay" ve "tepki" ne demektir?
  2. micro:bit'te kaç düğme olayı vardır ve bunlar nelerdir?
  3. MakeCode'da A'ya basınca kalp göstermek için komutu hangi bloğun içine koyarsın?
  4. MicroPython'da button_a.was_pressed() fonksiyonu neyi kontrol eder?
  5. was_pressed() ile is_pressed() arasındaki fark nedir?

Cevaplar

  1. Olay, gerçekleşmesini beklediğimiz bir durumdur (örneğin A'ya basılması). Tepki, o olay olduğunda programın yaptığı iştir (örneğin kalp göstermek).
  2. Üç düğme olayı vardır: A, B ve iki düğmeye aynı anda basıldığında oluşan A+B.
  3. Komutu "A düğmesine basıldığında" bloğunun içine koyarsın; sürekli bloğuna değil.
  4. Son kontrolden bu yana A düğmesine basılıp basılmadığını kontrol eder; basıldıysa True, basılmadıysa False döner.
  5. was_pressed() bir basma olayını (basıp bırakma) bir kez yakalar; is_pressed() ise düğmenin şu anda basılı olup olmadığına bakar ve basılı kaldıkça True döner.

Kaynak ve doğrulama notu

“Düğmeler ve Olaylar” dersi için doğrulama odağı Olay nedir? ile Günlük hayattan örnek: Işık düğmesi 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

Değişkenler ve Döngüler: Düğmeyle artan bir sayaç yaparak bilgiyi bir değişkende saklamayı ve döngülerle tekrar etmeyi öğreneceğiz.

Quiz’i Başlatmicro:bit bölümüne dön
SORU HAVUZU

Bu dersi 10 soruyla pekiştir

Bu ders için 20 soruluk bir havuz hazırlandı. Her başlangıçta 10 soru ve seçenekler yeniden karıştırılır.