İçindekiler:

Micro:Bit Robot & Joystick:Bit Controller, MicroPython ile Programlama: 11 Adım
Micro:Bit Robot & Joystick:Bit Controller, MicroPython ile Programlama: 11 Adım

Video: Micro:Bit Robot & Joystick:Bit Controller, MicroPython ile Programlama: 11 Adım

Video: Micro:Bit Robot & Joystick:Bit Controller, MicroPython ile Programlama: 11 Adım
Video: Arduino project 😎^ Arduino #arduino #2022 #2021 #2023 #dc #arduinoproject #diy #foryou 2024, Kasım
Anonim
Micro:Bit Robot & Joystick:MicroPython ile Bit Controller Programlama
Micro:Bit Robot & Joystick:MicroPython ile Bit Controller Programlama

Yaz robotik kampımız Robocamp 2019 için, 10-13 yaş arası gençler, BBC micro:bit tabanlı bir 'karınca ağırlığı robotu' lehimliyor, programlıyor ve inşa ediyor ve ayrıca uzaktan kumanda olarak kullanmak üzere bir micro:bit programlıyor.

Şu anda Robocamp'taysanız, ilk iki adımı grup olarak yaptığımız için 3. Adıma atlayın

Bu, bir joystick:bit denetleyicisi ile iletişim kuran bir micro:bit robot elde etmek için adım adım bir kılavuzdur.

Her şeyin çalışmasını sağlamak için en hızlı yolu seçmez, ancak kodu giderken test edebilmeniz, üzerine kendi damganızı koyabilmeniz ve yaptığımız şeyleri neden yaptığımızı anlayabilmeniz için işleri küçük parçalar halinde dener. !

Bu aktivite için kendi özel robotumuzu kullanıyoruz, ancak L9110s gibi benzer bir motor sürücüsü kullanan herhangi bir robotla çalışacak.

Robotumuz için tasarım dosyaları burada bulunabilir:

Bu kılavuz yeni başlayanlar için yazılmıştır, ancak daha önce MicroPython ile bir micro:bit kullanmadıysanız, öncelikle yaka kartımız gibi daha basit bir program denemenizi öneririz Eğitilebilir: https://www.instructables.com/id/Felt -Mikrobit-Nam…

Gereçler

2x BBC mikro:bit

BBC micro:bit ile çalışan robot (yukarıdaki açıklamaya bakın)

joystick:bit denetleyici (bizimkileri Cool Components'tan aldık)

Adım 1: Robot Kurulumu

Micro:bit'iniz için MicroPython kodu yazmak için birkaç seçeneğiniz vardır:

  • Buradan indirip kurabileceğiniz Mu:
  • Burada bulabileceğiniz çevrimiçi düzenleyici:

Bu talimatlar Mu kullandığınızı varsayar

Mu'yu açın ve micro:bit'inizi bilgisayarınıza takın. Mu, bir micro:bit kullandığınızı anlamalı ve micro:bit 'Mod'u seçmelidir, ancak değilse, manuel olarak değiştirin.

modu seç
modu seç

Robot motor test kodunun bir kopyasını buradan alın:

Github'a alışkın değilseniz, sezgisel olmayabilir! Bu kodu almanın iki kolay yolu:

  1. Raw dosyasını bilgisayarınıza kaydedin, ardından Mu'ya yükleyin:
  2. Verilen tüm kodu kopyalayıp Mu'daki Yeni bir dosyaya yapıştırın.
ham dosyayı kaydet
ham dosyayı kaydet

Şimdi yeni kodunuzu micro:bit'e göndermek için Mu'nun araç çubuğundan 'Flash' düğmesine tıklayın.

Mikro:bit takılı olmadığı sürece bu çalışmaz

micro:bit'in arkasındaki sarı ışık yanıp sönmeye başlayacaktır. Bittiğinde, kodunuz aktarılmıştır.

MOTOR YÖNERGELERİNİN AYARLANMASI

Bu program, micro:bit üzerindeki 'A' düğmesine bastığınızda motorları farklı yönlerde çalıştıracaktır.

Olmasını istediğin şey:

  • 'A' görüntülendiğinde, sol motor ileri
  • 'B' görüntülendiğinde, sol motor geriye doğru
  • 'C' görüntülendiğinde, sağ motor ileri
  • 'D' görüntülendiğinde, sağ motor geriye doğru

Bu, robotunuzu nasıl kabloladığınıza bağlı olduğu için muhtemelen böyle olmayacak!

Kodun en üstünde, mikro:bit üzerindeki hangi pinin hangi motor yönünü kontrol ettiğini belirleyen bir değişkenler listesi bulacaksınız.

Robotlarımızdan (dosyalarımızdan) birini kullanıyorsanız, robotun doğru yönlerde hareket etmesini sağlamak için değişken adlarını değiştirin:

pin değişkenlerini değiştir
pin değişkenlerini değiştir

Kendinize ait bir robot kullanıyorsanız, kodu düzenlemeden önce motor sürücüsünün hangi pinlere bağlı olduğunu kontrol edin.

SÜRÜCÜNÜN TEST EDİLMESİ

Şimdi ana döngüdeki test kodunu kendi kodunuzla değiştirerek robotunuzun nasıl sürdüğünü kontrol edin.

Drive() işlevini çağırarak robota sürmesini söylersiniz. Bu, iki bağımsız değişken alır - sol motor için bir değer ve sağ motorlar için 0 (kapalı) ile 1023 (maksimum hız) arasında bir değer.

Örneğin drive(500, 500) öğesini çağırarak, her iki motorun da ileri yönde yaklaşık yarım hızda açılmasını söylüyorsunuz.

Ne kadar düz hareket ettiğini ve ne kadar iyi döndüğünü hissetmek için birkaç seçeneği deneyin.

İpucu: motor testleri hem while True döngüsü hem de if ifadesi içindeydi - motorlar, micro:bit üzerindeki A düğmesine basana kadar dönmez ve sonsuza dek A düğmesine basıp basmadığınızı kontrol eder.

İpucu: motorlar siz söyleyinceye kadar kapanmaz! Her zaman son talimatlarını yapmaya devam edecekler.

OPSİYONEL: DÜZ HATTA SÜRÜŞÜN İYİLEŞTİRİLMESİ

Robotunuz düz bir çizgide ilerlemiyorsa motorlarınızdan biri diğerinden daha hızlı dönüyor olabilir.

Tekerleğin serbestçe dönmesini fiziksel olarak engelleyen hiçbir şey olmadığını kontrol ettikten sonra, daha hızlı motorun hızını azaltmak için sürüş işlevindeki kodu düzenleyebilirsiniz.

Sürüş işlevinin tanımını bulmak için yukarı kaydırın ve en üstteki iki talimata bakın:

def sürücü(Sol, Sağ):

# Aşağıda motor hız tutarsızlığını düzeltmek için bir ayar verilmiştir L = int(L*1) R = int(R*1)

Bu iki satır şu anda L ve R değerlerini alır, bunları 1 ile çarpın, sonra hala tam sayı olduklarından emin olun (int).

Örneğin, sol motorunuz daha hızlıysa, satırındaki *1'i *0.9 olarak değiştirin ve bunun bir şeyleri iyileştirip iyileştirmediğine bakın.

Mükemmel hale getiremezsiniz, ancak daha düz gidene kadar ayarlamaya devam edebilirsiniz.

RADYO KURULUMU

Şimdi kodunuzun en üstüne aşağıdaki satırları ekleyerek radyoyu kurun:

ithal radyo

radio.config(channel=7, grup=0, kuyruk=1) radio.on()

Bu, robotunuzun başka bir mikro:bit'ten talimat almasına izin verecektir, ancak şu anda başka bir mikro:bit'ten talimat alacaktır.

Bunun nedeni, kanal 7 ve grup 0'ın varsayılan kanallar olmasıdır.

0-82 arasında bir kanal ve 0-255 arasında bir grup seçerek bu sayıları değiştirin. Artık micro:bit'iniz yalnızca aynı yapılandırma bilgilerine sahip başkalarından talimat alacaktır.

sıra=1, micro:bit'in bir seferde yalnızca bir gelen iletiyi tutacağı anlamına gelir - bu, varsayılan değer olan 3'ten biraz daha hızlı yanıt süresi sağlar.

Şimdi, bir düğmeye bastığınızda talimatları çalıştırmak yerine, gelen bir telsiz mesajını bekleyin ve uygun şekilde yanıt verin için ana döngü kodunuzu düzenlemeniz gerekir.

Aşağıdaki kodu bir test olarak deneyin (2. Adımda joystick'i ayarlayana kadar hiçbir şey yapmayacaktır):

Doğru iken:

mesaj = radio.receive() eğer mesaj == 'ileri': sürücü(500, 500)

2. Adım: Joystick Kurulumu

Robotunuzun micro:bit'ini çıkarın ve bunun yerine joystick'inizin micro:bit'ini takın

Joystick kurulum kodunun bir kopyasını buradan alın:

Robot için yaptığınız konfigürasyonun (kanal ve grup numarası) aynısını kullanarak telsizi kurun - bu, ikisinin birbiriyle iletişim kurmasını sağlayacaktır.

Programın sonunda ana döngünüzü başlatın:

Doğru iken:

if button_a.was_pressed(): radio.send('ileri')

Bu kod henüz joystick:bit'i kullanmıyor. Bir mesaj göndermek için micro:bit üzerindeki A düğmesini kullanır.

Hem robotunuzun hem de denetleyicinizin micro:bits'inde güç olduğundan emin olun, ardından mesajınızı göndermek için düğmeye basın.

Mesaj başarıyla alınırsa ve robotunuz hareket ederse… aferin! Kurulum talimatlarını tamamladınız.

SORUN GİDERME İPUÇLARI

Kontrol cihazınızda bir hata mesajı alırsanız micro:bit… kontrolör kodunuzda hata ayıklayın

Robot micro:bit'inizde bir hata mesajı alırsanız… telsiz mesajınız başarıyla gönderildi! Ancak robot bunu anlayamaz, bu nedenle gönderdiğiniz mesajın ve robota dinlemesini söylediğiniz mesajın eşleşmesini kontrol edin.

Eğer hiçbir şey olmuyorsa

  • Her micro:bit'e doğru kodu yazdırdığınızdan emin olun - yanlışlıkla yanlış olanı flash etmek kolaydır!
  • Kanal ve grup numaralarınızın her bir mikro:bit üzerinde eşleştiğinden emin olun.

Adım 3: Joystick Değerlerini Kontrol Etme

Sonraki birkaç adımın tümü denetleyici kodunu kullanıyor

Kumandanızdaki joystick'i kullanmadan önce, çubuğa bastığınızda ne tür değerler aldığınızı bilmeniz gerekir.

Ana döngünüzü aşağıdaki kodla değiştirin:

Doğru iken:

joystick = joystick_push() print(joystick) uyku(500)

Bu kodu micro:bit'inize aktarın, ardından Mu'nun araç çubuğundaki REPL düğmesine tıklayın. Bu, editörün altında size mikro:bit'e gerçek zamanlı bir bağlantı veren bir terminal açacaktır.

REPL'yi aç
REPL'yi aç

Mikro:bit takılı olmadığı sürece bu çalışmaz

REPL açıkken, micro:bit'inizin arkasındaki sıfırlama düğmesine basın.

resim
resim

Ekranınıza 'yazdırılan' bazı değerlerin geldiğini görmelisiniz:

terminaldeki değerler
terminaldeki değerler

Joystick'in çubuğunu itin ve sayılara ne olduğunu görün.

Joystick orta konumdayken verilen değerleri not edin - benim durumumda (518, 523).

Kapatmak için Mu'nun araç çubuğundaki REPL düğmesine tekrar tıklayın - açıkken micro:bit'e yeni kod gönderemezsiniz.

Adım 4: X ve Y Değişkenlerini Ayarlama

Joystick işlevi tarafından verilen değerleri değiştirmek istiyorsunuz, böylece:

  • merkezde sıfır
  • yukarı pozitif
  • aşağı negatif.

Bu, robotun ihtiyaç duyduğu talimatlarla eşleşir - ileriye gitmek için pozitif bir sayı ve geri gitmek için negatif bir sayı.

Son adımda elde ettiğiniz sayılara bakın. İlk sayı x, ikinci sayı y'dir.

Değerlerinizi orijinalden çıkarmak için programda bulunan joystick_push() tanımını düzenleyin:

tanımlı joystick_push():

x = pin0.read_analog() - 518 y = pin1.read_analog() - 523 x, y döndür

Kendi numaralarınızı kullanın, benimkinden farklı olabilirler

Yeni kodunuzu flaşlayın, REPL'yi açın, micro:bit'in sıfırlama düğmesine basın ve değerlerinizi kontrol edin.

(0, 0) alıyor musunuz?

Adım 5: X ve Y'yi Sol ve Sağ Motorlar İçin Değerlere Dönüştürme

Şu anda bu joystick, bir robotu sürmek için pek kullanışlı olmayacak. Tüm yolu ileri ittiğinizde (0, 500) gibi bir değer elde edeceksiniz.

Bu sayıları robota verseydiniz, sağ motoru çalıştırır, soldaki motoru çalıştırmaz, ki bu olmasını istediğiniz şey değil!

Bu şema, joystick'i hareket ettirdiğinizde x ve y değerlerine ne olduğunu ve joystick'i hareket ettirdiğinizde robotun ne yapmasını istediğimizi gösterir.

diyagram
diyagram

Size daha faydalı bir şey vermek için x ve y değerlerini karıştırmak için biraz matematik kullanmanız gerekir.

n

MATEMATİK

Joystick'i sonuna kadar iterek başlayalım.

Alabileceğiniz değerlere bir örnek:

x = 0

y = 500

Robota faydalı olmak için aşağıdaki gibi değerler elde etmek istersiniz:

sol = 500

sağ = 500

Hangi sayıları elde ettiğimizi görmek için x ve y'yi farklı şekillerde eklemeyi deneyelim:

x + y = 0 + 500 = 500

x - y = 0 - 500 = -500 y + x = 500 + 0 = 500 y - x = 500 - 0 = 500

Şimdi joystick'i sonuna kadar sağa itersek ne olacağını görelim.

Alabileceğiniz değerlere bir örnek:

x = 500

y = 0

Robotun sağa dönmesini sağlamak için sol motorun ileri, sağ motorun geri gitmesini istiyorsunuz:

sol = 500

sağ = -500

Formülümüzü tekrar deneyelim:

x + y = 500 + 0 = 500

x - y = 500 - 0 = 500 y + x = 0 + 500 = 500 y - x = 0 - 500 = -500

Hangi seçeneğin size doğru sol değeri ve hangi seçeneğin size doğru doğru değeri vereceğini bulmak için iki formül grubunu karşılaştırın.

Seçtiğiniz formülün her zaman çalıştığından emin olmak için kendi joystick'inizden aldığınız bazı değerlerle deneyin.

n

JOYSTICK FONKSİYONUNUN GENİŞLETİLMESİ

Sol ve sağ için iki yeni değişken yapmak ve x ve y yerine bu değerleri döndürmek için joystick işlevini genişletin ve düzenleyin:

tanımlı joystick_push():

x = pin0.read_analog() - 518 y = pin1.read_analog() - 523 sol = sağ = sola, sağa dön

Yeni kodunuzu flaşlayın, REPL'yi açın, micro:bit'in sıfırlama düğmesine basın ve değerlerinizi kontrol edin.

Beklediğiniz değerleri alıyor musunuz?

Daha fazla yardıma ihtiyacınız olursa, buradaki örnek kodumuza göz atın:

Adım 6: Değerleri Radyo Mesajları Olarak Gönderme

Artık robotunuza göndermeye hazır bazı değerleriniz var.

Ana döngünüzü düzenleyin, böylece joystick'in değerlerini kontrol eder, ancak daha sonra değerleri yazdırmak yerine, onları bir radyo mesajı olarak göndermeye hazır hale getirir.

Doğru iken:

joystick = joystick_push() mesaj = str(joystick[0]) + " " + str(joystick[1])

Bu aslında henüz mesajı göndermeyecek!

Bu yeni kod satırında neler oluyor?

  • joystick[0], joystick işlevinden çıkan ilk bilgi biti anlamına gelir (solda)
  • joystick[1] sonraki bilgi parçasıdır (sağda)
  • str(), bu sayıların her ikisini de dize biçimine dönüştürür (sayılar yerine metin) - bu, bilgileri radyo üzerinden gönderebilmek için gereklidir.

Eklemek için + görmeye alışacaksınız - hem sayıları birbirine ekleyebilir hem de dizeleri birleştirebilir, bu da iki bilgi bitini birbirine yapıştıracağı anlamına gelir.

Örnek:

150 + 100 = 250

str(150) + str(100) = 150100

Böylece birleştirme, sol ve sağ değerlerinizi birbirine yapıştıracaktır.

İki bilgi biti arasında ayrım yapmaya zorlamak için (böylece robot, bunların iki bilgi biti olduğunu bilir), " " kullanarak aralarında fazladan bir dize birleştirin. Boşluğun etrafındaki konuşma işaretleri, bunun zaten bir dize olduğu anlamına gelir.

Son olarak, bu yeni oluşturulan mesajı telsiz üzerinden göndermek için kodunuzu genişletin:

radyo.send(mesaj)

uyku(10)

Uyku, mesajların gönderilmesini yavaşlatır, böylece alıcı mikro:bit çok fazla bilgi ile aşırı yüklenmez!

Bir sonraki adıma geçmeden önce bu kodu kontrol cihazınıza micro:bit iletin ve hataları ayıklayın

7. Adım: Mesajları Robotunuzda Alma

En başından robot kodunuza geri dönün - robot kodunu yanlışlıkla flashlamamak için denetleyicinizin mikro:bit fişini çekmeyi unutmayın

Ana döngünüze ilerleyin - test kodunu kaldırın ve bunun yerine şunu ekleyin:

Doğru iken:

mesaj = radyo.alma() yazdır(mesaj) uyku(100)

Bu, gelen mesaja eşit bir değişken ayarlar ve mesajların beklendiği gibi gelip gelmediğini kontrol etmek için mesajı REPL'ye yazdırır.

REPL'e bağlı yeni kodunuzu flashlayın, ardından joystick'e basın.

Bunun gibi bir şey almalısın:

REPL değerleri
REPL değerleri

SORUN GİDERME İPUÇLARI

Kontrol cihazınızda bir hata mesajı alırsanız micro:bit… kontrolör kodunuzda hata ayıklayın

Robot micro:bit'inizde bir hata mesajı alırsanız… telsiz mesajınız başarıyla gönderildi! Ancak robot bunu anlayamaz, bu nedenle gönderdiğiniz mesajın ve robota dinlemesini söylediğiniz mesajın eşleşmesini kontrol edin.

Eğer hiçbir şey olmuyorsa

  • Her micro:bit'e doğru kodu yazdırdığınızdan emin olun - yanlışlıkla yanlış olanı flash etmek kolaydır!
  • Kanal ve grup numaralarınızın her bir mikro:bit'te eşleştiğinden emin olun

Adım 8: Robotun Motorlarını Kontrol Etmek İçin Gelen Mesajları Kullanma

Artık telsiz üzerinden bir dizi olarak gönderilen iki numarayı alıyorsunuz.

Bu mesajı iki dizeye bölmeniz, ardından dizeleri tekrar sayılara dönüştürmeniz ve bunu sürücü işlevine geçirmeniz gerekir. Aynı anda çok şey oluyor!

Bunu yapmadan önce, aldığınız mesajın doğru formatta olup olmadığını kontrol etmeniz gerekir.

Hiçbir mesaj gönderilmiyorsa, bunun yerine 'Yok' mesajı alırsınız. Bunu dener ve bölmeye çalışırsanız, bir hata mesajı alırsınız.

Doğru iken:

mesaj Yok değilse mesaj = radio.receive(): mesaj = mesaj.split() drive(int(message[0]), int(message[1]))

Burada ne oluyor?

  • Mesaj 'Hiçbiri' dışında bir şeyse yeni kod çalışacaktır.
  • message.split(), mesajda (son adımda eklediğimiz) boşluk olup olmadığını kontrol eder ve bunu mesajı ikiye bölmek için kullanır.
  • int(message[0]), int(message[1]) önceki adımda yaptığımızın tersini yapar - her bilgi parçasını ayrı ayrı alır ve bir tam sayıya (tam sayı) dönüştürür.
  • int(message[0]) sürücü işlevinde sol motor için değer olarak kullanılır ve int(message[1]) sağ motor için değer olarak kullanılır.

Çalışıp çalışmadığını kontrol edin - joystick'e bastığınızda motorlar dönüyor mu?

Değilse - biraz hata ayıklama zamanı!

Evet ise, harika! Çalışan bir uzaktan kumanda robotunuz var!

Bir sonraki adıma geçmeden önce robotunuzla biraz pratik yapın. Beklediğiniz gibi sürüyor mu?

Sonraki adımlar, robotunuza ekstra işlevsellik eklemek için joystick üzerindeki düğmeleri nasıl kullanacağınızı gösterecektir

Bu kodun şu ana kadarki sürümünü görmek istiyorsanız:

  • Robot:
  • Denetleyici:

9. Adım: Düğmeleri Kullanma -- Ek Mesajları Alma

Şu anda kodunuz, Yok olmayan herhangi bir mesajı bölmeye çalışacaktır. Bu, örneğin 'merhaba' alırsa, bir hata mesajı alacağınız anlamına gelir.

micro:bit'inizin diğer mesajları yorumlamasına izin vermek için, önce her bir beklenen mesajı kontrol etmesi, ardından mesajı yalnızca mesajla başka bir şey yapması söylenmemişse bölmesi gerekir.

Kodunuzu şu şekilde genişletin:

mesaj Yok değilse:

if mesajı == 'merhaba': display.show(Image. HAPPY) elif mesajı == 'ördek': display.show(Image. DUCK) else: mesaj = message.split() drive(int(message[0]), int(mesaj[1]))

İlk olarak, 'merhaba' mesajını alıp almadığını kontrol edecektir. Varsa, mutlu bir görüntü gösterecek, ardından döngünün en üstüne geri dönün ve bir sonraki mesajı kontrol edin.

Mesaj merhaba değilse, daha sonra mesajın 'ördek' olup olmadığını kontrol edecektir.

Mesaj 'merhaba' VEYA 'ördek değilse, listedeki son şeyi yapar, mesajı böler ve motorları açar. Eğer 'merhaba' veya 'ördek' aldıysa mesajı bölmeye çalışmayacaktır, yani bu iki mesajdan herhangi birinden bir hata mesajı almayacaksınız.

Çift eşittir işareti önemlidir - bir şey ayarlayan tek bir eşittir işaretine kıyasla 'eşittir' anlamına gelir (yani mesaj = 'merhaba' değişkeni 'merhaba' olarak ayarladığımız anlamına gelir, mesaj == 'merhaba' mesajın 'merhaba'ya eşit olup olmadığını sorduğumuz anlamına gelir).

Şimdilik sadece iki seçenekle deneyin, test etmek için - daha sonra istediğiniz kadar başka mesaj ekleyebilirsiniz.

Çalışan kodun bağlantısı:

Adım 10: Denetleyicinin Düğmelerini Kullanarak Ek Mesajlar Gönderme

Robotunuzun micro:bit'ini çıkarın ve bunun yerine joystick'inizin micro:bit'ini takın

Düzenlemek için kumanda kodunuza geri dönün.

Robot koduna benzer şekilde, joystick değerlerini göndermeden önce kontrolörün başka bir mesaj göndermeye çalışıp çalışmadığınızı kontrol etmesini istiyoruz.

Döngünün tepesinde, yine de joystick'in mevcut değerlerini kontrol etmesini istiyoruz, ancak aynı zamanda bir düğmeye basılıp basılmadığını da kontrol etmesini istiyoruz:

Doğru iken:

joystick = joystick_push() buton = button_press()

button_press(), o anda hangi düğmeye basıldığına bağlı olarak A, B, C, D, E veya F değerini döndürür (hiçbir şeye basılmıyorsa, None döndürür).

Artık robot kodunda yaptığımız gibi iki buton kullanarak ve herhangi bir butona basılmıyorsa joystick değerini göndererek if-elif-else ifadesini yapabiliriz.

if düğmesi == 'A':

radio.send('merhaba') sleep(500) elif düğmesi == 'B': radio.send('ördek') sleep(500) else: mesaj = str(joystick[0]) + " " + str(joystick [1]) radyo.send(mesaj) uyku(10)

Bir düğmeye basıldığında, robota bir önceki adımda dikkat etmesini söylediğiniz mesajlardan birini gönderin.

Düğmeye her basıldığında mesaj gönderilecek ve bilgisayarlar insanlardan çok daha hızlı! Bu nedenle, parmağınızı düğmeden çekmeyi başarana kadar mesajı birçok kez gönderebilir.

Mesajı gönderdikten sonraki uyku, onu yavaşlatır, böylece düğmeyi tekrar hızlı bir şekilde kontrol etmez - sizin için mükemmel süreyi elde etmek için burada birkaç sayı deneyin - çok yavaş ve yanıt vermez. hızlı bir şekilde ve robotunuz o kadar çok düğme mesajı alacak ki joystick'e yanıt vermeyi bırakabilir!

Çalışıyor mu?

Hata mesajları alıyorsanız, az önce neyi değiştirdiğinizi ve neler olduğunu dikkatlice düşünün.

Kontrol cihazınızdaki bir düğmeye bastığınızda robotta bir hata alırsanız - mesajın karşı tarafa geçtiğini bilirsiniz, ancak bu robotun kafasını karıştırır. Gönderdiğiniz mesaj ile robota aramasını söylediğiniz mesajın aynı olup olmadığını kontrol edin.

Çalışan kodun bağlantısı:

11. Adım: Sonraki Adımlar

Artık robotunuzun motorlarıyla ve joystick:bit kontrol cihazınızla çalışmak için ihtiyacınız olan bilgiye sahipsiniz

Bu bilgiyi iki programı geliştirmek ve kendinize ait hale getirmek için kullanın. Aşağıda bazı fikirler!

Kontrol cihazınızda altı düğme var! Onların ne yapmalarını istiyorsun?

  • Robotunuzun komutla yapması için bir dans rutini programlamaya ne dersiniz? Sleep() komutlarıyla ayrılmış bir drive() komutları algoritması yazın!
  • Robotun hareket ettiği yönü kolayca baş aşağı gidebilecek şekilde değiştirmek ister misiniz? Joystick'inizin x ve y değerlerini düşünün. Neyi temsil ediyorlar ve onları nasıl manipüle edebilirsiniz?
  • Robotunuzun LED'ler, hoparlör veya sensörler gibi ekstra özellikleri var mı (veya ekleyebilir misiniz!)?

Kodu geliştirmek için fikirler

  • Try/except kodunu kullanarak robotunuzun bilinmeyen mesajlarla başa çıkmasına yardımcı olabilir misiniz?
  • Joystick'ten sol ve sağ değerleri hesaplamak için kullanılan matematik bize tüm değerleri vermez (robotun sürücüsü 1023'e kadar bir sayı kabul edebilir). Daha iyi bir aralık elde etmek için bu kodu düzenleyebilir misiniz?
  • Joystick değerlerini karıştırmanın başka yöntemleri de var - bunu yapmanın daha iyi bir yolunu bulabilir misiniz?

Önerilen: