MODÜL 02 DERS 3 / 6 · 60 DK

Blocks ile sür: robotun ilk hareketi

Şimdiye kadar robotunu kurdun ve kablolarını bağladın. Ama robot hala kıpırdamadı. Bu ders o anın dersi: bu sayfanın sonunda robotun ilk kez kendi başına ileri gidecek, dönecek, senin verdiğin komutla hareket edecek. Üstelik tek satır yazı yazmadan. Her şeyi renkli blokları sürükleyip birbirine takarak yapacaksın.

Blocks, komutların hazır tuğlalar halinde durduğu bir ortam. Sen bu tuğlaları lego gibi üst üste dizersin, robot da o sırayla çalışır. Yanlış yazım, unutulan noktalı virgül yok; sadece doğru tuğlayı doğru yere takma işi var.

Bu dersin hedefi
  • İki motoru bloklarla tanımlamak ve robota "sol motor şurada, sağ motor şurada" demek.
  • Kumandanın çubuk hareketini motora bağlayıp robotu ilk kez sürmek.
  • Askıdayken yönü kontrol edip sonra güvenle yere indirmek.
  • Arcade ve tank sürüşü değiştirip aralarındaki farkı kendi elinle görmek.

Kanca: yazı robotu nasıl canlandırır? (10 dk)

🎬 VİDEO · kanca · 45 sn · Robot yükseltide tekerleri havada dönüyor, sonra yere iniyor ve ilk kez ileri gidiyor; kumandayı tutan çocuğun heyecanı

Videodaki robot dün senin robotunun tıpkısıydı: kurulu ama sessiz. Şimdi hareket ediyor. Aradaki tek fark birinin ona "ne yapacağını" söylemiş olması.

Bir düşün: robotun içinde motor var, motorun sürücüsü var, pil var. Hepsi hazır. Peki motor kendi başına neden dönmüyor? Çünkü hiçbiri ne zaman, ne kadar, ne yöne döneceğini bilmiyor. Bu kararı veren şey program: robota adım adım ne yapacağını söyleyen komut dizisi.

Bugün o komutları sen vereceksin. Ama önce kısa bir tahmin: senin robotunun iki motoru var, biri solda biri sağda. Robotun ileri gitmesi için iki motor nasıl dönmeli? Ya sadece sağa dönmesini istersen? Cevabı aklında tut; birazdan bloklarla test edeceğiz.

Kur ve sür: robotu ilk kez hareket ettir (20 dk)

Bilgisayarında Blocks ortamını aç. Karşında blokların durduğu bir kutu (araç kutusu) ve blokları dizeceğin boş bir çalışma alanı var.

📷 Görsel alanı · Blocks ortamının ilk açılışı: solda blok araç kutusu, ortada boş çalışma alanı, üstte robot kurulum/hook blokları grubu

1. İki motoru tanımla

Robotun sol ve sağ motorunun hangi pinlere bağlı olduğunu Modül 02'nin elektronik dersinden biliyorsun: sol motor 16 ve 17, sağ motor 18 ve 19. Robota bunu söylemen gerekiyor.

Araç kutusundan motor_define bloğunu al ve çalışma alanına bırak. Bu blok tek bir motora isim ve pin verir. İçine motorun adını (sol) ve iki pin numarasını (16, 17) yaz.

Sonra bir motor_define bloğu daha al: bu sefer sag, 18, 19.

📷 Görsel alanı · Yan yana iki motor_define bloğu: biri "sol / 16 / 17", diğeri "sag / 18 / 19" değerleriyle dolu

Artık robot iki motorunu tanıyor. Ama henüz onlara ne yapacaklarını söylemedin.

2. Sürüş bloğunu sürüş döngüsüne koy

Robotun kumandayı sürekli dinlemesi lazım: çubuğu her ittiğinde tepki vermeli. Bunun için teleop_loop bloğunu bul. Bu blok saniyede yaklaşık elli kez tekrar tekrar çalışır; içine ne koyarsan robot onu durmadan yapar. (Teleop, robotu kumandayla sürdüğün mod demek.)

teleop_loop'un içine araç kutusundan drive_arcade bloğunu sürükle. Bu hazır blok senin yerine düşünür: ona "ne kadar ileri" ve "ne kadar dön" dersen, sol ve sağ motora gitmesi gereken hızı kendi hesaplar. Az önce kafanda kurduğun "ileri giderken iki motor birlikte, dönerken biri fazla" mantığını bu blok içinde taşıyor.

drive_arcade bloğunun iki boşluğu var: ileri/geri ve dönüş. Bunları kumandanın çubuklarına bağlayacaksın.

3. Joystick eksenlerini tak

Araç kutusunun joystick bölümünden eksen bloklarını al. Kumandanın her çubuğu iki yönde okunur ve sana -1 ile +1 arası bir sayı verir: çubuğu tam ittiğinde +1, tam çektiğinde -1, ortadayken 0.

📷 Görsel alanı · teleop_loop bloğunun içinde drive_arcade; ileri girişine sol dikey eksen bloğu, dönüş girişine sağ yatay eksen bloğu takılı tam hali

Blokların tamamı şöyle bir hikaye anlatıyor: "Sol ve sağ motor şu pinlerde. Sürüş boyunca sürekli: sol çubuğun dikeyini ileri, sağ çubuğun yatayını dönüş olarak al ve arcade sürüşü uygula."

4. Robota gönder ve bağlan

Bloklarını robota yükle. Şimdi robotla kumandan arasında köprü kuracaksın:

  1. Robotu çalıştır. Robot kendi WiFi ağını açar (kablosuz bağlantı noktası; adı bloklarda ya da kurulumda verilir).
  2. Telefonunu bu ağa bağla.
  3. Telefonun tarayıcısına http://192.168.4.1 yaz. Başında https değil, http olacak. Karşına Driver Station çıkar: robotu yönettiğin kontrol paneli.
  4. Kumandayı telefona bağla ve bir tuşuna bas. Tarayıcı kumandayı ancak bir tuşa basınca tanır.
  5. Driver Station'da Init'e, sonra Start'a bas.
📷 Görsel alanı · Telefon ekranında Driver Station arayüzü: bağlı kumanda göstergesi, Init ve Start düğmeleri
Önemli: robotu önce yükseltiye koy, tekerler havada olsun.

Yön yanlışsa robot masadan kaçmasın.

5. Önce askıda, sonra yerde

Robot yükseltideyken sol çubuğu yavaşça ileri it. Tekerler ileri yönde dönmeli. Şimdi az önceki tahminini test et: sağ çubuğu yana it, robot dönmeye çalışmalı (tekerler ters yönlerde dönerek).

Bir teker ters yönde dönüyorsa panik yok. O motorun motor_define bloğundaki iki pini yer değiştir: 16 ve 17 yazan yeri 17 ve 16 yap. Kablo sökmeden, sadece bloktaki iki sayının yerini değiştirerek motorun yönünü düzeltmiş olursun. Yükle ve tekrar dene.

Yön doğruysa robotu yükseltiden indir, açık bir yere koy ve sol çubuğu nazikçe ileri it.

İşte bu. Robotun ilk kez kendi tekerleriyle yol aldı ve bunu sen yazdın.

Ne yaptın: blokların adı ve işi (7 dk)

Robot artık gidiyor; şimdi az önce dizdiğin şeyin adını koyalım. Kavramı sona bıraktık çünkü artık her birinin ne yaptığını gözünle gördün.

BlokNe işe yarar
motor_defineBir motora isim verir ve hangi pinlere bağlı olduğunu robota söyler. Pin sırası motorun dönüş yönünü belirler.
teleop_loopSürüş boyunca saniyede ~50 kez tekrarlanan döngü. Kumandanın anlık dinlendiği yer.
drive_arcadeHazır sürüş bloğu. "İleri" ve "dönüş" ister; sol ve sağ motor hızını kendi hesaplar.
joystick eksenBir çubuğun bir yöndeki konumunu -1 ile +1 arası sayıya çevirir.

Dikkat et: sen motora "255 hızında dön" gibi bir sayı vermedin. drive_arcade bloğuna sadece "çubuk ne diyorsa o kadar" dedin. Çubuk yarıya kadar itiliyse motor da yarı güçte döner. Bu yüzden sürüş yumuşak: robot çubuğu ne kadar iterse o kadar hızlanır.

teleop_loop neden döngü? Çünkü kumanda sürekli değişir. Çubuğu bir ileri bir geri oynatıyorsun. Robot bunu yakalamak için çubuğu durmadan, saniyede onlarca kez okumak zorunda. Döngü olmasaydı robot çubuğu bir kez okur, sonra sağır kalırdı.

Değiştir ve karşılaştır (15 dk)

Robot sürüyor; şimdi sürüşün karakterini değiştireceksin. Her denemeden sonra yükle, yükseltide kontrol et, sonra yerde dene.

Deneme 1: Arcade yerine tank.
drive_arcade bloğunu çıkar, yerine drive_tank bloğunu koy. Bu blok farklı düşünür: iki çubuğun her biri kendi tarafındaki motoru sürer. Sol çubuk sol tekeri, sağ çubuk sağ tekeri.

📷 Görsel alanı · teleop_loop içinde drive_tank bloğu; sol girişte sol dikey eksen, sağ girişte sağ dikey eksen

Sür ve hisset: iki çubuğu birlikte ileri itince robot düz gider. Sadece sol çubuğu itince robot sağa kıvrılır. Bir ekskavatör ya da tank böyle sürülür.

Şimdi kendine sor: Arcade mı tank mı sana daha doğal geldi? Doğru cevap yok. Arcade tek çubukla sürmek isteyene kolay gelir; tank her tekeri ayrı yönetmek isteyene. Yarışmalarda ikisini de kullanan takımlar var.

Deneme 2: Hızı sınırla.
Robot senin için fazla hızlıysa yavaşlatabilirsin. drive bloğunun bir eksen girişine, doğrudan eksen bloğu yerine bir matematik çarpma bloğu koy: eksen bloğunu 0.5 ile çarp.

📷 Görsel alanı · drive_arcade'in ileri girişinde bir çarpma bloğu: bir tarafında joystick eksen bloğu, diğer tarafında 0.5 sayısı

Artık çubuğu tam itsen bile robot en fazla yarı hızda gider. Neden işe yaradı? Çünkü çubuk +1 verse bile 0.5 ile çarpınca motora 0.5 gidiyor. 0.3 yaparsan daha da yavaş, 0.8 yaparsan biraz hızlı. Kalabalık bir odada 0.4, geniş bir alanda 1.0 mantıklı. Bu senin robotunun "sürüş modu" ayarı.

Pekiştirme ve kontrol (6 dk)

Kendini yokla. Cevapları yüksek sesle söyle ya da yanındakine anlat:

  1. İki motor_define bloğu olmasaydı robot ne yapardı?
  2. drive_arcade ile drive_tank arasındaki fark nedir? Hangi çubuk neyi sürer?
  3. Bir tekerin ters döndüğünü fark ettin. Kablo sökmeden nasıl düzeltirsin?
  4. Robotu yavaşlatmak için eksen bloğunu kaçla çarpardın?

Günlük hayat bağı: Arcade sürüş aslında oyun kollarının çoğunda var: bir çubuk seni ileri/geri, bir çubuk sağa/sola döndürür. Bir vinç operatörü ya da bir insansı robotu uzaktan yöneten mühendis de tam olarak senin bugün kurduğun mantığı kullanır. Sen kumandanın ham sayısını alıp iki motora paylaştırdın; bu, uzaktan kumandalı her aracın kalbindeki fikir.

Erken bitirene ek görev

Hızlı bitirdiysen boş durma, bunları dene:

  1. Turbo yerine kaplumbağa. Hız çarpanını 0.3 yap ve robotu dar bir parkurdan (kitaplarla kur) çarpmadan geçirmeye çalış. Sonra çarpanı 1.0 yapıp aynı parkuru dene. Hangisinde daha kontrollüsün?
  2. Zıt tank. drive_tank kullanırken bir çubuğun eksenini -1 ile çarp. Robot şimdi nasıl davranıyor? Neden böyle olduğunu açıkla.
  3. Kör sürüş yarışı. Bir arkadaşın robotun önüne otursun ve sana sadece "sağ, sol, düz" desin; sen ekrana değil sadece onun sesine göre sür. İyi bir sürücü robotun tepkisini önceden tahmin eder.