Mündəricat:

Mikro Proqramlaşdırma: Bit Robot və Joystick: MicroPython ilə Bit Nəzarətçisi: 11 addım
Mikro Proqramlaşdırma: Bit Robot və Joystick: MicroPython ilə Bit Nəzarətçisi: 11 addım

Video: Mikro Proqramlaşdırma: Bit Robot və Joystick: MicroPython ilə Bit Nəzarətçisi: 11 addım

Video: Mikro Proqramlaşdırma: Bit Robot və Joystick: MicroPython ilə Bit Nəzarətçisi: 11 addım
Video: Mikrobit Aldadıcı Zər / Micro:bit Dice 2024, Noyabr
Anonim
Mikro proqramlaşdırma: Bit Robot və Joystick: MicroPython ilə Bit Nəzarətçisi
Mikro proqramlaşdırma: Bit Robot və Joystick: MicroPython ilə Bit Nəzarətçisi

Yaz robototexnika düşərgəmiz olan Robocamp 2019 üçün 10-13 yaş arası gənclər BBC mikro: bit əsaslı 'ağırlıqlı robot' lehimləyir, proqramlaşdırır və qurur, həm də uzaqdan idarəetmə kimi istifadə etmək üçün mikro: bit proqramlaşdırırlar.

Hal -hazırda Robocamp -da olsanız, qrup olaraq ilk iki addımı etdiyimiz kimi, 3 -cü addıma keçin

Bu, joystick: bit nəzarətçi ilə ünsiyyət quran mikro: bit robot əldə etmək üçün addım-addım bələdçidir.

Hər şeyi işə salmaq üçün ən sürətli yolu götürmür, amma hər şeyi kiçik hissələrdə sınayır ki, kodu getdiyiniz kimi sınayasınız, üzərinə öz möhürünüzü qoyasınız və etdiyimiz işləri niyə etdiyimizi başa düşək. !

Bu fəaliyyət üçün öz xüsusi robotumuzdan istifadə edirik, ancaq L9110s kimi oxşar motor sürücüsündən istifadə edən hər hansı bir robotla işləyəcək.

Robotumuz üçün dizayn sənədlərini burada tapa bilərsiniz:

Bu təlimat yeni başlayanlar üçün yazılmışdır, ancaq əvvəllər MicroPython ilə heç vaxt bir mikro: bit istifadə etməmisinizsə, əvvəlcə sadə bir proqramı sınamağı məsləhət görürük, məsələn, Instructable ad nişanı kimi: https://www.instructables.com/id/Felt -Mikrobit-Nam …

Təchizat

2x BBC mikro: bit

BBC mikro ilə işləyən robot: bit (yuxarıdakı şərhə baxın)

joystick: bit nəzarətçisi (Cool Components -dən əldə etdik)

Addım 1: Robotun qurulması

Micro: bit üçün MicroPython kodu yazmaq üçün bir neçə variantınız var:

  • Buradan yükləyə və quraşdıra biləcəyiniz Mu:
  • Burada tapa biləcəyiniz onlayn redaktor:

Bu təlimatlar Mu istifadə etdiyinizi güman edir

Mu proqramını açın və mikro: biti kompüterinizə qoşun. Mu bir mikro: bit istifadə etdiyinizi tanımalı və micro: bit 'Mode' seçməlidir, amma istifadə etmirsə əl ilə dəyişdirin.

rejimi seçin
rejimi seçin

Robot motor test kodunun bir nüsxəsini buradan əldə edin:

Github -a öyrəşməmisinizsə, düşünülməz ola bilər! Bu kodu əldə etməyin iki asan yolu var:

  1. Raw faylını kompüterinizə qeyd edin, sonra Mu -a yükləyin:
  2. Verilən bütün kodu kopyalayın və Mu -da Yeni bir fayla yapışdırın.
xam faylı saxla
xam faylı saxla

İndi yeni kodunuzu micro: bitə göndərmək üçün Mu alətlər çubuğundakı 'Flash' düyməsini basın.

Micro: bit takılmadıqca bu işləməyəcək

Mikroun arxasındakı sarı işıq: bit yanıb sönməyə başlayacaq. Bitirdikdən sonra kodunuz köçürüldü.

MOTOR YÖNLƏRİNİN AYARLANMASI

Bu proqram, mikro: bitdəki 'A' düyməsini basdığınızda mühərrikləri fərqli istiqamətlərdə açacaq.

Nə etmək istədiyin budur:

  • 'A' göstərildikdə, sol motor irəli
  • 'B' göstərildikdə, motoru geriyə buraxın
  • 'C' göründüyü zaman sağ motor irəli
  • 'D' göstərildikdə sağ motor geriyə

Yəqin ki, belə olmayacaq, çünki robotunuzu necə bağladığınızdan asılıdır!

Kodun yuxarısında, mikro: bitin hansı motor istiqamətini idarə etdiyini təyin edən dəyişənlərin siyahısını tapa bilərsiniz.

Robotlarımızdan (fayllardan) istifadə edirsinizsə, robotun düzgün istiqamətdə hərəkət etməsi üçün dəyişən adları dəyişdirin:

dəyişdirmə pin dəyişənləri
dəyişdirmə pin dəyişənləri

Öz robotunuzdan istifadə edirsinizsə, kodu redaktə etməzdən əvvəl motor sürücüsünün hansı pinlərə bağlı olduğunu yoxlayın.

Sürücünün sınanması

İndi əsas döngədəki test kodunu öz kodunuzla əvəz edərək robotunuzun necə idarə etdiyini yoxlayın.

Sürücü () funksiyasını çağıraraq robotun maşın sürməsini söyləyirsiniz. Bunun üçün iki arqument tələb olunur - sol mühərrik üçün bir dəyər və sağ mühərriklər üçün 0 (söndürmə) ilə 1023 (maksimum sürət) arasındakı dəyər.

Sürücüyə (500, 500) zəng edərək, məsələn, hər iki mühərrikə təxminən yarım sürətlə irəli istiqamətdə açılmasını söyləyirsiniz.

Nə qədər düz sürdüyünü və necə yaxşı döndüyünü hiss etmək üçün bir neçə variant sınayın.

İpucu: motor testləri həm True döngəsi, həm də if ifadəsi içərisində idi - mikro: bitdəki A düyməsini basana qədər mühərriklər dönməzdi və A düyməsini basdığınızı əbədi olaraq yoxlayır.

İpucu: mühərriklər onlara deyənə qədər sönməyəcək! Həmişə son təlimatlarını verməyə davam edəcəklər.

İSTEĞE BAĞLI: SÜRÜKLÜ SÜRÜCÜNÜ TƏKMİLLƏŞTİRMƏK

Robotunuz düz bir şəkildə sürməyəcəksə, mühərriklərinizdən biri digərindən daha sürətli dönə bilər.

Təkərin sərbəst dönməsini fiziki olaraq dayandıran heç bir şey olmadığını yoxladıqdan sonra, daha sürətli motorun sürətini azaltmaq üçün sürücü funksiyasındakı kodu düzəldə bilərsiniz.

Sürücü funksiyasının tərifini tapmaq üçün yuxarı diyirləyin və yuxarıdakı iki təlimata baxın:

def sürücüsü (L, R):

# Aşağıda motor sürəti uyğunsuzluğunu düzəltmək üçün bir tənzimləmə var L = int (L*1) R = int (R*1)

Bu iki xətt hal -hazırda L və R -nin dəyərini alır, 1 -ə vururuq, sonra yenə də tam ədədlər olduqlarından əmin olun (int).

Məsələn, sol motorunuz daha sürətlidirsə, xəttindəki *1 -i *0.9 -a dəyişdirin və bunun işlərin yaxşılaşdığını yoxlayın.

Mükəmməl edə bilməyəcəksiniz, ancaq düzləşənə qədər tənzimləməyə davam edə bilərsiniz.

RADYO AYARLANIR

İndi kodunuzun üstünə aşağıdakı sətirləri əlavə edərək radio qurun:

radio idxal edin

radio.config (kanal = 7, qrup = 0, növbə = 1) radio.on ()

Bu, robotunuzun başqa bir mikro: bitdən təlimat almasına imkan verəcək, lakin hazırda hər hansı digər micro: bitdən təlimat alacaq.

Bunun səbəbi kanal 7 və qrup 0 standart kanallardır.

0-82 arasında bir kanal və 0-255 arasında bir qrup seçərək bu nömrələri dəyişdirin. İndi micro: bit yalnız eyni konfiqurasiya məlumatı olan digərlərindən təlimat alacaq.

queue = 1 mikro deməkdir: bit bir anda yalnız bir gələn mesajı saxlayacaq - bu, 3 olan standartdan biraz daha sürətli cavab müddəti verir.

İndi əsas döngə kodunuzu bir düyməni basdığınız zaman yerinə yetirmək üçün gələn bir radio mesajını gözləməli və ona uyğun cavab verməlisiniz.

Test olaraq aşağıdakı kodu sınayın (2 -ci addımda joystick qurulana qədər heç bir şey etməyəcək):

Doğru halda:

mesaj = radio.receive () əgər mesaj == 'irəli': sürücü (500, 500)

Addım 2: Joystick-in qurulması

Robotunuzun mikro: bitini ayırın və yerinə joystickinizin mikro: bitini qoşun

Joystick qurma kodunun bir nüsxəsini buradan əldə edin:

Radionu robot üçün etdiyiniz eyni konfiqurasiyadan (kanal və qrup nömrəsi) istifadə edərək qurun - bu ikisinin bir -biri ilə ünsiyyət qurmasına imkan verəcəkdir.

Proqramın sonunda əsas döngənizi başlayın:

Doğru halda:

əgər button_a.was_pressed (): radio.send ('irəli')

Bu kod hələ də joystickdən istifadə etmir: bit. Mesaj göndərmək üçün mikro: bitdəki A düyməsini istifadə edir.

Həm robotunuzun, həm də nəzarətçinizin mikro: bitlərinin gücə malik olduğundan əmin olun, sonra mesajınızı göndərmək üçün düyməni basın.

Mesaj uğurla alınarsa və robotunuz hərəkət edərsə … çox yaxşı! Quraşdırma təlimatlarını bitirdiniz.

SORUNLARIN GİDİRİLMƏSİ ÜÇÜN

Mikro: bit nəzarətçinizdə bir səhv mesajı alsanız, nəzarətçi kodunuzu düzəldin

Robotunuzun mikro: bitində bir səhv mesajı alsanız … radio mesajınız uğurla göndərildi! Ancaq robot bunu anlaya bilmir, ona görə də göndərdiyiniz mesajı və robota eşitdiyiniz mesajı yoxlayın.

Heç bir şey olmasa

  • Doğru kodu hər bir mikro: bitə yazdığınızdan əmin olun - səhvən yanlış bir şeyi yandırmaq asandır!
  • Kanalınızın və qrup nömrələrinizin hər bir mikro: bitdə uyğun olduğundan əmin olun

Addım 3: Joystick dəyərlərini yoxlayın

Növbəti bir neçə addım hamısı nəzarətçi kodundan istifadə etməkdir

Nəzarətçinizdəki joystickdən istifadə etməzdən əvvəl, çubuğu itələyərkən hansı dəyərlərə sahib olduğunuzu bilməlisiniz.

Əsas döngənizi aşağıdakı kodla əvəz edin:

Doğru halda:

joystick = joystick_push () çap (joystick) yuxu (500)

Bu kodu mikro: bit -ə yandırın, sonra Mu alətlər çubuğundakı REPL düyməsini basın. Bu, redaktorun altındakı mikro: bitə real vaxt bağlantısı verən bir terminal açacaq.

REPL -i açın
REPL -i açın

Micro: bit takılmadıqca bu işləməyəcək

REPL açıq olduqda, mikro: bitinizin arxasındakı sıfırlama düyməsini basın.

Şəkil
Şəkil

Ekranınıza "çap" gətirən bəzi dəyərləri görməlisiniz:

terminaldakı dəyərlər
terminaldakı dəyərlər

Joystick çubuğunu itələyin və nömrələrə nə olduğunu görün.

Joystick mərkəzi mövqedə olduqda verilən dəyərləri qeyd edin - mənim vəziyyətimdə (518, 523).

Yenidən bağlamaq üçün Mu alətlər çubuğundakı REPL düyməsini basın - açıq olduqda micro: bit -ə yeni kodu yandıra bilməyəcəksiniz.

Addım 4: X və Y Dəyişənlərinin Düzəldilməsi

Joystick funksiyasının verdiyi dəyərləri dəyişdirmək istəyirsən ki:

  • mərkəzdə sıfırdır
  • yuxarı müsbətdir
  • aşağı mənfidir.

Bu, robotun ehtiyac duyduğu təlimatlara uyğundur - irəli sürmək üçün pozitiv rəqəm, geri çəkmək üçün isə mənfi nömrə.

Son addımda aldığınız rəqəmlərə baxın. Birinci ədəd x, ikinci nömrə ydir.

Dəyərlərinizi orijinaldan çıxarmaq üçün artıq proqramda olan joystick_push () tərifini düzəldin:

def joystick_push ():

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

Öz nömrələrinizi istifadə edin, onlar mənimkindən fərqli ola bilər

Yeni kodunuzu yandırın, REPL -i açın, mikro: bitin sıfırlama düyməsini basın və dəyərlərinizi yoxlayın.

(0, 0) alırsınız?

Addım 5: X və Y -ni Sol və Sağ Motorlar üçün Dəyərlərə çevirmək

Hal -hazırda, bu joystick bir robotu idarə etmək üçün çox faydalı olmayacaq. Yol boyu irəlilədikdə (0, 500) kimi bir dəyər əldə edəcəksiniz.

Bu nömrələri robota versəydiniz, sağ motoru açar, sol motoru açmazdı, bu sizin istədiyiniz kimi deyil!

Bu diaqram, joysticki hərəkət etdirdiyiniz zaman x və y dəyərlərinin nə olduğunu və joysticki hərəkət etdirərkən robotun nə etməsini istədiyimizi göstərir.

diaqram
diaqram

Sizə daha faydalı bir şey vermək üçün x və y dəyərlərini qarışdırmaq üçün bəzi riyaziyyatdan istifadə etməlisiniz.

n

Riyaziyyat

Joystick -in sonuna qədər itələyərək başlayaq.

Əldə edə biləcəyiniz dəyərlərə bir nümunə:

x = 0

y = 500

Robota faydalı olmaq üçün bu kimi dəyərləri əldə etmək istəyirsən:

sol = 500

sağ = 500

Hansı ədədləri aldığımızı görmək üçün x və y -ni fərqli yollarla əlavə etməyə çalışaq:

x + y = 0 + 500 = 500

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

İndi görək, joysticki sağa doğru itələsək nə olar.

Əldə edə biləcəyiniz dəyərlərə bir nümunə:

x = 500

y = 0

Robotun sağa dönməsini təmin etmək üçün sol motorun irəli, sağ motorun isə geriyə doğru hərəkət etməsini istəyirsiniz:

sol = 500

sağ = -500

Formulumuzu yenidən sınayaq:

x + y = 500 + 0 = 500

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

Hansı seçimin sizə doğru sol dəyər verəcəyini və hansı seçimin doğru doğru dəyəri verəcəyini öyrənmək üçün iki formula dəstini müqayisə edin.

Seçdiyiniz düsturun hər zaman işlədiyinə əmin olmaq üçün öz joystickinizdən aldığınız bəzi dəyərlərlə sınayın.

n

JOYSTICK FUNKSİYASININ GENİŞLƏNDİRİLMƏSİ

Sol və sağ üçün iki yeni dəyişən etmək və bu dəyərləri x və y yerinə qaytarmaq üçün joystick funksiyasını genişləndirin və redaktə edin:

def joystick_push ():

x = pin0.read_analog () - 518 y = pin1.read_analog () - 523 sol = sağ = sola, sağa qayıt

Yeni kodunuzu yandırın, REPL -i açın, mikro: bitin sıfırlama düyməsini basın və dəyərlərinizi yoxlayın.

Gözlədiyiniz dəyərləri alırsınızmı?

Daha çox yardıma ehtiyacınız varsa, nümunə kodumuza buradan baxın:

Addım 6: Dəyərləri Radio Mesajı Olaraq Göndərin

İndi robotunuza göndərməyə hazır olan bəzi dəyərləriniz var.

Əsas döngənizi tənzimləyin ki, joystickin dəyərlərini yoxlasın, amma sonra dəyərləri çap etmək əvəzinə onları radio mesajı olaraq göndərməyə hazır olsun.

Doğru halda:

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

Bu əslində hələ mesaj göndərməyəcək!

Bu yeni kod xəttində nə baş verir?

  • joystick [0], joystick funksiyasından çıxan ilk məlumat deməkdir (solda)
  • joystick [1] növbəti məlumatdır (sağda)
  • str () bu rəqəmlərin hər ikisini simli formata çevirir (rəqəmlər yerinə mətn) - bu məlumatı radio vasitəsilə göndərə bilmək üçün lazımdır.

Əlavə etmək üçün + görməyə alışmış olacaqsınız - həm rəqəmləri bir araya gətirə bilər, həm də sətirləri birləşdirə bilər, yəni iki bit məlumatı bir -birinə yapışdıracaq.

Misal:

150 + 100 = 250

str (150) + str (100) = 150100

Beləliklə birləşmə, sol və sağ dəyərlərinizi bir -birinə yapışdıracaq.

İki bit məlumat arasında (robot iki bit məlumat olduğunu bilməsi üçün) məcbur etmək üçün aralarında "" istifadə edərək əlavə bir sim bağlayın. Boşluğun ətrafında olan işarələr, artıq bir simli olduğunu göstərir.

Nəhayət, bu yeni yaradılmış mesajı radio vasitəsilə göndərmək üçün kodunuzu uzatın:

radio.send (mesaj)

yuxu (10)

Yuxu, mesajların göndərilməsini ləngidir ki, qəbul edən mikro: bit çox məlumatla yüklənməsin!

Növbəti addıma keçməzdən əvvəl bu kodu nəzarətçinizin mikro: bitinə yazın və səhvləri düzəldin

Addım 7: Robotunuzdakı Mesajların Alınması

Əvvəldən robot kodunuza qayıdın - nəzarətçi mikro: bitini çıxartmağı unutmayın ki, təsadüfən robot kodunu ona yapışdırmasın

Əsas döngənizə enin - test kodunu silin və əvəzinə bunu əlavə edin:

Doğru halda:

mesaj = radio.receive () çap (mesaj) yuxu (100)

Bu, gələn mesaja bərabər olan bir dəyişən təyin edir və mesajı gözlədiyiniz kimi keçdiyini yoxlamaq üçün REPL -ə yazdırır.

REPL -ə qoşulmuş yeni kodunuzu yandırın, sonra joystickə basın.

Belə bir şey almalısınız:

REPL dəyərləri
REPL dəyərləri

SORUNLARIN GİDİRİLMƏSİ ÜÇÜN

Mikro: bit nəzarətçinizdə bir səhv mesajı alsanız, nəzarətçi kodunuzu düzəldin

Robotunuzun mikro: bitində bir səhv mesajı alsanız … radio mesajınız uğurla göndərildi! Ancaq robot bunu anlaya bilmir, ona görə də göndərdiyiniz mesajı və robota eşitdiyiniz mesajı yoxlayın.

Heç bir şey olmasa

  • Doğru kodu hər bir mikro: bit -ə vurduğunuzdan əmin olun - səhvən səhv olanı yandırmaq asandır!
  • Kanalınızın və qrup nömrələrinizin hər mikro: bitdə uyğun olduğundan əmin olun

Addım 8: Robotun Motorlarını İdarə etmək üçün Gələn Mesajlardan İstifadə Edin

İndi simli olaraq radio üzərindən iki ədəd göndərilir.

Bu mesajı iki sətrə bölmək, sonra sətirləri yenidən nömrələrə çevirmək və sürücü funksiyasına ötürmək lazımdır. Çox şey bir anda gedir!

Bunu etməzdən əvvəl aldığınız mesajın düzgün formatda olduğunu yoxlamalısınız.

Heç bir mesaj göndərilmirsə, bunun əvəzinə 'Heç biri' alacaqsınız. Bunu sınamağa və bölməyə çalışsanız, bir səhv mesajı alacaqsınız.

Doğru halda:

mesaj = radio.receive () mesaj yoxdursa: mesaj = message.split () sürücü (int (mesaj [0]), int (mesaj [1]))

Burada nə baş verir?

  • Mesaj 'None' dan başqa bir şey olarsa yeni kod işləyəcək.
  • message.split () mesajdakı boşluğu yoxlayır (son addımda əlavə etdiyimiz) və mesajı ikiyə bölmək üçün bundan istifadə edir.
  • int (mesaj [0]), int (mesaj [1]) əvvəlki addımda etdiyimizin əksini edir - hər bir məlumatı ayrı -ayrılıqda alır və onu tam ədədə (tam ədəd) çevirir.
  • int (mesaj [0]) sürücü funksiyasında sol motorun dəyəri, int (mesaj [1]) isə sağ motorun dəyəri kimi istifadə olunur.

İşlədiyini yoxlayın - joystickə basanda mühərriklər dönərmi?

Əks təqdirdə, bəzi ayıklama vaxtıdır!

Bəli, fantastik! İşləyən uzaqdan idarə robotunuz var!

Növbəti addıma keçməzdən əvvəl robotunuzla bir az vaxt keçirin. Gözlədiyiniz kimi aparır?

Növbəti addımlar robotunuza əlavə funksionallıq əlavə etmək üçün joystickdəki düymələrdən necə istifadə edəcəyinizi göstərəcək

Bu günə qədər bu kodun versiyasını görmək istəyirsinizsə:

  • Robot:
  • Nəzarətçi:

Addım 9: Düymələrdən istifadə - Əlavə Mesajların Alınması

Bu anda, kodunuz heç bir mesajı bölməyə çalışacaq. Bu o deməkdir ki, məsələn, 'salam' alsanız, bir səhv mesajı alacaqsınız.

Mikro: bit -in digər mesajları şərh etməsinə icazə vermək üçün əvvəlcə hər bir gözlənilən mesajı yoxlamalı, sonra başqa heç bir şey etməməsi lazım olduğu halda mesajı bölməlidir.

Kodunuzu belə genişləndirin:

mesaj yoxdursa:

əgər mesaj == 'salam': display.show (Image. HAPPY) elif mesajı == 'ördək': display.show (Image. DUCK) başqa: mesaj = message.split () sürücü (int (mesaj [0]), int (mesaj [1]))

Əvvəlcə 'salam' mesajını alıb -almadığını yoxlayacaq. Əgər varsa, xoşbəxt bir görüntü göstərəcək, sonra döngənin yuxarısına qayıdın və növbəti mesajı yoxlayın.

Mesaj salam deyilsə, mesajın "ördək" olub olmadığını yoxlayacaq.

Mesaj ya "salam" və ya "ördək" deyilsə, mesajı bölmək və mühərrikləri işə salmaq üçün siyahıdakı son şeyi edəcək. Mesajı 'salam' və ya 'ördək' almışsa bölməyə çalışmayacaq, yəni bu iki mesajın heç birindən bir səhv mesajı almayacaqsınız.

İkiqat bərabərlik işarəsi vacibdir - bir şey təyin edən tək bərabər işarəsi ilə müqayisədə 'bərabərdir' deməkdir (belə ki mesaj = 'salam' dəyişəni 'salam', mesaj == 'salam' olaraq təyin etdiyimiz deməkdir mesajın "salam" a bərabər olub olmadığını soruşduğumuz deməkdir).

Bunu sınamaq üçün yalnız iki seçimlə sınayın - daha sonra istədiyiniz qədər çox mesaj əlavə edə bilərsiniz.

İş koduna keçid:

Addım 10: Nəzarətçinin Düymələrindən istifadə edərək Əlavə Mesajların Göndərilməsi

Robotunuzun mikro: bitini ayırın və yerinə joystickinizin mikro: bitini qoşun

Redaktə etmək üçün nəzarətçi kodunuza qayıdın.

Robot koduna bənzər şəkildə, nəzarətçidən joystick dəyərlərini göndərməzdən əvvəl başqa bir mesaj göndərməyə çalışdığınızı yoxlamasını istəyirik.

Döngünün yuxarı hissəsində, hələ də joystickin cari dəyərlərini yoxlamasını istəyirik, eyni zamanda bir düyməyə basıldığını yoxlamasını da istəyirik:

Doğru halda:

joystick = joystick_push () düyməsi = button_press ()

button_press (), hazırda hansı düymənin basıldığından asılı olaraq A, B, C, D, E və ya F dəyərini qaytarır (heç bir şey basılmırsa, Yoxdur).

İndi robot kodu üçün etdiyimiz kimi if-elif-else ifadəsi edə bilərik-iki düymədən istifadə edərək və heç bir düyməyə basılmırsa joystick dəyərini göndərə bilərik.

əgər düymə == 'A':

radio.send ('salam') yuxu (500) elif düyməsi == 'B': radio.send ('ördək') yuxu (500) başqa: mesaj = str (joystick [0]) + "" + str (joystick [1]) radio.send (mesaj) yuxu (10)

Bir düyməyə basıldığında, robotun əvvəlki addımda diqqət yetirməsini istədiyiniz mesajlardan birini göndərin.

Düymə basıldığı zaman mesaj göndəriləcək və kompüterlər insanlardan daha sürətlidir! Barmağınızı düymədən çıxarmağı bacarmadan mesajı dəfələrlə göndərə bilər.

Mesajı göndərdikdən sonra yuxu onu yavaşlatır ki, düyməni bir daha yoxlamasın - sizin üçün mükəmməl vaxt əldə etmək üçün buradakı bir neçə nömrəni sınayın - çox yavaş və cavab vermir tez və robotunuz o qədər düymə mesajı alacaq ki, joystickə cavab verməyi dayandıra bilər!

İşləyir?

Səhv mesajları alırsınızsa, nə dəyişdiyinizi və nə baş verdiyini diqqətlə düşünün.

Nəzarətçinizdəki bir düyməni basdığınız zaman robotda bir səhv görürsünüzsə - mesajın yayıldığını bilirsiniz, ancaq robotu çaşdırır. Göndərdiyiniz mesajla robotun axtarmasını söylədiyiniz mesajın eyni olduğunu yoxlayın.

İş koduna keçid:

Addım 11: Növbəti addımlar

Artıq robotunuzun motorları və joystickinizlə işləmək üçün lazım olan məlumatlara sahibsiniz: bit nəzarətçisi

Bu biliklərdən istifadə edərək iki proqramı təkmilləşdirin və onları özünüz edin. Aşağıdakı bəzi fikirlər!

Nəzarətçinizdə altı düymə var! Onlardan nə etmələrini istəyirsən?

  • Robotunuzun əmrlə etməsi üçün bir rəqs rutini proqramlaşdırmağa necə? Drive () əmrlərinin yuxu () əmrləri ilə ayrılmış bir alqoritmi yazın!
  • Robotun hərəkət etdiyi istiqaməti dəyişdirmək istəyirsən ki, o, asanlıqla tərsinə sürsün? Joystickinizin x və y dəyərlərini düşünün. Nəyi təmsil edirlər və onları necə manipulyasiya edə bilərsiniz?
  • Robotunuzda LED, dinamik və ya sensorlar kimi əlavə xüsusiyyətlər varmı (və ya əlavə edə bilərsiniz!)?

Kodu təkmilləşdirmək üçün fikirlər

  • Try/except kodundan istifadə edərək robotunuza naməlum mesajların öhdəsindən gəlməsinə kömək edə bilərsinizmi?
  • Joystickdən sol və sağ dəyərləri hesablamaq üçün istifadə olunan riyaziyyat bizə tam dəyər aralığını vermir (robotun sürücüsü 1023 -ə qədər bir rəqəmi qəbul edə bilər). Daha yaxşı bir sıra əldə etmək üçün bu kodu düzəldə bilərsinizmi?
  • Joystick dəyərlərini qarışdırmağın başqa üsulları var - bunu etmək üçün daha yaxşı bir yol tapa bilərsinizmi?

Tövsiyə: