İvmeölçer

İvmeölçerle sallama, eğim ve hareketi algılayıp tepki üretmeyi öğren.

DERS PUSULASI

Bu sayfayı ne için kullanacaksın?

Ana fikir

İvmeölçer, micro:bit'in kartın nasıl hareket ettiğini, hangi yöne eğildiğini ve sallanıp sallanmadığını hissetmesini sağlayan küçük bir sensördür.

Üretilecek kanıt

Bir "denge oyunu" yap. Amaç: kartı olabildiğince düz tutmak. Yeni bir MakeCode projesi aç (veya MicroPython editörünü kullan). Sürekli çalışan bir döngü kur. x eksenini oku ve bir değişkene koy. Eğer x, -100 ile 100 arasındaysa yeşil bir onay simgesi (örneğin kalp) göster. Değilse, eğim yönüne göre sağ veya sol ok göster. Kartı elinde tutup düz kalmaya…

Kontrol tuzağı

Ekseni karıştırmak x sağ-sol, y ileri-geridir. Ok yanlış yöne bakıyorsa büyük ihtimalle yanlış ekseni okuyorsundur. Önce print ile değerleri gözlemle. Eşik değerini unutmak if x > 0 yazarsan kartın en ufak eğiminde bile ok değişir ve ekran titrer gibi görünür. Bu yüzden 200–400 gibi bir eşik kullan. Bekleme (sleep)…

Sonraki bağlantı

Sıcaklık ve Işık Ölçümü: micro:bit'in ortam sıcaklığını ve ışık miktarını nasıl algıladığını öğreneceğiz.

Modül kaynakları: Python Tutorial · Arduino Learn

SeviyeBaşlangıç
Yaş10–16
Süre25–35 dk
Ön koşulDeğişkenler ve Döngüler
İçerikStandart ders · 1.373 kelime
Son güncelleme

Bir cümlelik özet

İvmeölçer, micro:bit'in kartın nasıl hareket ettiğini, hangi yöne eğildiğini ve sallanıp sallanmadığını hissetmesini sağlayan küçük bir sensördür.

Neden önemli?

Telefonunu yan çevirdiğinde ekranın da dönmesini hiç düşündün mü? Ya da bir adım sayarın attığın her adımı nasıl saydığını? Bunların hepsinin arkasında ivmeölçer (İngilizcesi accelerometer) adında bir sensör vardır. İvmeölçer, hareketi ve yer çekimini ölçer.

micro:bit'in içinde de böyle bir sensör bulunur. Bu sayede kart, düğmelere basmadan da ne yaptığını anlayabilir. Kartı sallarsın, o bunu fark eder. Kartı eğersin, hangi yöne eğildiğini bilir. Böylece programların gerçek dünyayla konuşmaya başlar.

Önceki derste değişkenleri ve döngüleri öğrendin. Bu derste bu bilgileri bir sensörle birleştirip fiziksel dünyaya tepki veren programlar yazacağız. Artık kodun sadece ekranda değil, senin elinin hareketinde yaşayacak.

İvmeölçer nedir?

İvmeölçer, hareketteki değişimi ölçen bir sensördür. Kartı hızlandırdığında, yavaşlattığında, eğdiğinde ya da salladığında bunu sayılara çevirir. Program da bu sayıları okuyarak karar verir.

İvmeölçer üç yönü aynı anda ölçer. Bu yönlere eksen deriz:

Her eksen bir sayı verir. Kart düz ve hareketsiz dururken bu sayılar sıfıra yakındır. Kartı bir yöne eğdiğinde, o yöne ait sayı büyür ya da eksiye düşer.

Günlük hayattan örnek: Telefon ekranının dönmesi

Telefonunu dik tutarken ekran dikey görünür. Yan çevirdiğinde ekran otomatik olarak yatay olur. Telefon bunu ivmeölçerle anlar: yer çekiminin hangi yönde çektiğini ölçer ve ekranı ona göre çevirir.

Günlük hayattan örnek: Oyun kolu ve adım sayar

Bir yarış oyununda telefonu direksiyon gibi sağa sola çevirdiğinde araba döner. Bileğindeki adım sayar ise her adımda oluşan küçük sarsıntıyı ivmeölçerle yakalar ve sayar. İkisi de aynı sensörü farklı amaçlarla kullanır.

"Sallandığında" olayı

micro:bit, sallama hareketini kendisi tanıyabilir. Sen tek tek sayıları okumak zorunda kalmazsın. "Sallandığında" olayını (event) kullanırsın; kart sallandığı anda içindeki komutlar çalışır.

MakeCode blokları ile bir "sallayınca zar" örneği:

sürekli
  (boş)
"sallandığında"
  sayı_göster (rastgele 1 ile 6 arası)

Aynı fikir MicroPython ile:

from microbit import *
import random

while True:
    if accelerometer.was_gesture('shake'):
        display.show(str(random.randint(1, 6)))

Burada was_gesture('shake') micro:bit'e "az önce sallandın mı?" diye sorar. Cevap evet ise random.randint(1, 6) ile 1–6 arası rastgele bir sayı seçilir ve ekrana yazılır. Artık elinde dijital bir zar var: her sallayışta yeni bir sayı.

micro:bit yalnız "shake" (sallama) değil, başka hareketleri de tanır: up, down, left, right, face up, face down gibi. Bunlar kartın hangi yüzünün yukarı baktığını ya da hangi yöne eğildiğini anlatır.

x, y, z eksenlerini okumak

Bazen bir olayı beklemek yerine eksen değerini doğrudan okumak isteriz. micro:bit her ekseni miligravite denilen bir birimle verir. Kartı düz tutarsan x ve y sıfıra yakındır. Sağa eğdikçe x artar, sola eğdikçe x eksiye düşer.

MicroPython ile üç ekseni okumak:

from microbit import *

while True:
    x = accelerometer.get_x()
    y = accelerometer.get_y()
    z = accelerometer.get_z()
    print(x, y, z)
    sleep(200)

Bu programı çalıştırıp kartı yavaşça eğdiğinde bilgisayardaki sayıların değiştiğini görürsün. Bu, sensörün nasıl "hissettiğini" gözünle görmenin en iyi yoludur.

Eğim algılama: Ok yönünü göster

Şimdi eğime göre ekranda bir ok gösterelim. Kartı sağa eğersen sağ ok, sola eğersen sol ok belirir. Bunun için x eksenini bir eşik (threshold) değeriyle karşılaştırırız.

MakeCode mantığıyla:

sürekli
  eğer <ivme (x) > 300> ise
    ok göster (Doğu)
  değilse eğer <ivme (x) < -300> ise
    ok göster (Batı)
  değilse
    simge göster (nokta)

Aynı program MicroPython ile:

from microbit import *

while True:
    x = accelerometer.get_x()
    if x > 300:
        display.show(Image.ARROW_E)
    elif x < -300:
        display.show(Image.ARROW_W)
    else:
        display.show(Image.HEART_SMALL)
    sleep(100)

Burada 300 sayısı bir eşik değeridir. Kart yeterince eğilmeden ok görünmesin diye küçük hareketleri yok sayarız. Eşiği büyütürsen daha çok eğmen gerekir; küçültürsen sensör daha hassas olur.

Mini uygulama

Bir "denge oyunu" yap. Amaç: kartı olabildiğince düz tutmak.

  1. Yeni bir MakeCode projesi aç (veya MicroPython editörünü kullan).
  2. Sürekli çalışan bir döngü kur.
  3. x eksenini oku ve bir değişkene koy.
  4. Eğer x, -100 ile 100 arasındaysa yeşil bir onay simgesi (örneğin kalp) göster.
  5. Değilse, eğim yönüne göre sağ veya sol ok göster.
  6. Kartı elinde tutup düz kalmaya çalış; oklar sana hangi yöne eğildiğini söyler.

Ek görev: Bir de "sallandığında" olayı ekle. Kart sallanınca ekranda rastgele bir sayı çıksın; böylece hem zar hem denge oyunu aynı programda olsun.

Kendine sor:

Uygulama laboratuvarı: İvmeölçer

İvmeölçer 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 İvmeölçer nedir? ile Günlük hayattan örnek: Oyun kolu ve adım sayar 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 “İvmeölçerle sallama, eğim ve hareketi algılayıp tepki üretmeyi öğ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

“İvmeölçer” ç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, İvmeölçer nedir? ve Günlük hayattan örnek: Oyun kolu ve adım sayar ilişkisini daha küçük adımlara bölerek düzelt.

Sık yapılan hatalar

Ekseni karıştırmak

x sağ-sol, y ileri-geridir. Ok yanlış yöne bakıyorsa büyük ihtimalle yanlış ekseni okuyorsundur. Önce print ile değerleri gözlemle.

Eşik değerini unutmak

if x > 0 yazarsan kartın en ufak eğiminde bile ok değişir ve ekran titrer gibi görünür. Bu yüzden 200–400 gibi bir eşik kullan.

Bekleme (sleep) koymamak

Döngü çok hızlı dönerse ekran okunamaz. sleep(100) gibi kısa bir bekleme koymak görüntüyü sakinleştirir.

"Sallandığında"yı sürekli döngüde okumamak

MicroPython'da was_gesture yalnız sorulduğu anda kontrol edilir. Onu bir while True döngüsü içinde çağırmazsan sallamayı hiç yakalayamazsın.

Güvenlik notu

Ders özeti

Kontrol soruları

  1. İvmeölçer neyi ölçer?
  2. x ekseni hangi yöndeki eğimi gösterir?
  3. Zar yapmak için hangi olayı ve hangi komutu kullandık?
  4. accelerometer.get_x() komutu ne döndürür?
  5. Ok gösteren programda 300 sayısı ne işe yarar?

Cevaplar

  1. Kartın hareketini, eğimini, hızındaki değişimi ve sallanmasını (yer çekimini) ölçer.
  2. Sağ–sol eğimini gösterir. Sağa eğince artar, sola eğince eksiye düşer.
  3. "Sallandığında" olayını ve random.randint(1, 6) (rastgele sayı) komutunu kullandık.
  4. x ekseni boyunca ölçülen ivme değerini, miligravite biriminde bir sayı olarak döndürür.
  5. Bir eşik değeridir. Kartın küçük hareketlerini yok sayıp ancak yeterince eğildiğinde ok göstermemizi sağlar.

Kaynak ve doğrulama notu

“İvmeölçer” dersi için doğrulama odağı İvmeölçer nedir? ile Günlük hayattan örnek: Oyun kolu ve adım sayar 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

Sıcaklık ve Işık Ölçümü: micro:bit'in ortam sıcaklığını ve ışık miktarını nasıl algıladığını öğ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.