Mundarija:

Mikro dasturlash: Bit Robot va Joystik: MicroPython bilan bit boshqaruvchisi: 11 qadam
Mikro dasturlash: Bit Robot va Joystik: MicroPython bilan bit boshqaruvchisi: 11 qadam

Video: Mikro dasturlash: Bit Robot va Joystik: MicroPython bilan bit boshqaruvchisi: 11 qadam

Video: Mikro dasturlash: Bit Robot va Joystik: MicroPython bilan bit boshqaruvchisi: 11 qadam
Video: ESP32 Tutorial 20 - Line Tracking Module | SunFounder's ESP32 IoT Learnig kit 2024, Noyabr
Anonim
Mikro dasturlash: Bit Robot va Joystik: MicroPython bilan bit boshqaruvchisi
Mikro dasturlash: Bit Robot va Joystik: MicroPython bilan bit boshqaruvchisi

Robocamp 2019 uchun, bizning yozgi robototexnika lagerida, 10-13 yoshdagi yoshlar BBC mikro: bitga asoslangan "og'ir vaznli robot" ni lehimlaydi, dasturlashadi va quradi, shuningdek masofadan boshqarish pulti sifatida foydalanish uchun mikro: bitni dasturlash bilan shug'ullanadi.

Agar siz hozir Robocampda bo'lsangiz, 3 -bosqichga o'ting, chunki biz guruh sifatida dastlabki ikki qadamni bajarganmiz

Bu joystick: bit tekshirgichi bilan aloqa qiladigan mikro: bitli robotni olish bo'yicha bosqichma-bosqich ko'rsatma.

Hamma narsani ishga tushirish uchun eng tezkor yo'l kerak emas, lekin hamma narsani kichik bo'laklarda sinab ko'ring, shunda siz ketayotganingizda kodni sinab ko'rishingiz, unga o'z muhringizni qo'yishingiz va nima uchun qilayotganimizni tushunishingiz mumkin. !

Bu faoliyat uchun biz o'z shaxsiy robotimizdan foydalanmoqdamiz, lekin u shunga o'xshash dvigatel drayveri yordamida L9110s kabi har qanday robot bilan ishlaydi.

Bizning robotimiz uchun dizayn fayllarini bu erda topish mumkin:

Bu qo'llanma yangi boshlanuvchilar uchun yozilgan, lekin agar siz ilgari MicroPython bilan hech qachon micro: bit ishlatmagan bo'lsangiz, avval biz oddiyroq dasturni sinab ko'rishingizni maslahat beramiz, masalan, bizning ismimiz nishoni Instructable: https://www.instructables.com/id/Felt -Mikrobit-Nam …

Ta'minotlar

2x BBC mikro: bit

BBC mikro: bit bilan ishlaydigan robot (yuqoridagi tushuntirishga qarang)

joystik: bitni boshqaruvchi (biznikini Cool Componentlardan olganmiz)

1-qadam: Robotni sozlash

Sizda micro: bit uchun MicroPython kodini yozish uchun bir nechta variant bor:

  • Mu, bu yerdan yuklab olishingiz va o'rnatishingiz mumkin:
  • Bu erda topishingiz mumkin bo'lgan onlayn muharrir:

Ushbu ko'rsatmalar Mu -dan foydalanayotganingizni taxmin qiladi

Mu -ni oching va mikro: bitni kompyuteringizga ulang. Mu siz mikro: bitdan foydalanayotganingizni tan olishi va micro: bit 'Mode' ni tanlashi kerak, lekin bunday bo'lmasa, uni qo'lda o'zgartiring.

rejimini tanlang
rejimini tanlang

Robot motor sinov kodining nusxasini bu erdan oling:

Agar siz Github -ga o'rganmagan bo'lsangiz, bu tushunarsiz bo'lishi mumkin! Ushbu kodni olishning ikkita oson yo'li:

  1. Raw faylini kompyuteringizga saqlang, so'ng uni Mu -ga yuklang:
  2. Berilgan barcha kodlarni nusxa ko'chiring va Mu -dagi yangi faylga joylashtiring.
xom faylni saqlang
xom faylni saqlang

Endi yangi kodingizni micro: bitga yuborish uchun Mu asboblar panelidagi "Flash" tugmasini bosing.

Micro: bit ulanmaguncha bu ishlamaydi

Micro: bit orqa tarafidagi sariq chiroq yonib -o'cha boshlaydi. Tugatgandan so'ng, sizning kodingiz o'tkazildi.

MOTOR YO'NALIShINI O'RNATISH

Bu dastur mikro: bitdagi 'A' tugmachasini bosganingizda motorlarni turli yo'nalishlarda yoqadi.

Siz nima qilishni xohlaysiz:

  • "A" belgisi paydo bo'lganda, chap dvigatel oldinga siljiydi
  • "B" belgisi paydo bo'lganda, dvigatel chapga buriladi
  • "C" belgisi paydo bo'lganda, o'ng dvigatel oldinga siljiydi
  • "D" belgisi paydo bo'lganda, o'ng dvigatel orqaga

Ehtimol, bunday bo'lmaydi, chunki bu sizning robotingizni qanday ulashingizga bog'liq!

Kodning yuqori qismida siz mikro: bitning qaysi motor yo'nalishini boshqarishini aniqlaydigan o'zgaruvchilar ro'yxatini topasiz.

Agar siz bizning robotlarimizdan (fayllardan) foydalanayotgan bo'lsangiz, robotni to'g'ri yo'nalishda harakatlanishi uchun o'zgaruvchilar nomlarini almashtiring:

pin o'zgaruvchilarini almashtirish
pin o'zgaruvchilarini almashtirish

Agar siz o'z robotingizdan foydalansangiz, kodni tahrir qilishdan oldin motor drayveri qaysi pimlarga ulanganligini tekshiring.

Drayvni sinovdan o'tkazish

Endi asosiy halqadagi test kodini o'zingizning kodingiz bilan almashtirib, robotingiz qanday haydashini tekshiring.

Siz haydovchi () funktsiyasini chaqirib, robotga haydashini aytasiz. Bu ikkita dalilni oladi - chap dvigatel uchun qiymat va o'ng dvigatellar uchun qiymat 0 (o'chirilgan) va 1023 (maksimal tezlik) oralig'ida.

Masalan, haydovchiga (500, 500) qo'ng'iroq qilib, siz ikkala dvigatelni oldinga, taxminan yarim tezlikda yoqishni aytasiz.

Qanchalik to'g'ri harakatlanishini va qanchalik yaxshi burilishini bilish uchun bir nechta variantni sinab ko'ring.

Maslahat: dvigatel sinovlari "True" tsikli va if iborasi ichida edi - siz mikro: bitdagi A tugmachasini bosmaguningizcha dvigatellar aylanmaydi va siz A tugmachasini bosganligingizni abadiy tekshirib turasiz.

Maslahat: motorlar siz aytmaguningizcha o'chmaydi! Ular har doim oxirgi ko'rsatmalarni bajarishda davom etadilar.

Ixtiyoriy: haydashni to'g'ri chiziqda takomillashtirish

Agar sizning robotingiz to'g'ri chiziqda harakat qilmasa, sizning dvigatellaringizdan biri boshqasiga qaraganda tezroq aylanishi mumkin.

G'ildirakning erkin aylanishiga hech qanday jismonan to'siq yo'qligini tekshirgandan so'ng, tezroq motor tezligini pasaytirish uchun haydovchi funktsiyasidagi kodni o'zgartirishingiz mumkin.

Drayv funktsiyasining ta'rifini topish uchun yuqoriga siljiting va yuqoridagi ikkita ko'rsatmaga qarang:

Def disk (L, R):

# Quyida L = int (L*1) R = int (R*1) dvigatel tezligining mos kelmasligini to'g'rilash to'g'risidagi ko'rsatma berilgan.

Hozirgi vaqtda bu ikkita satr L va R qiymatlarini oladi, ularni 1 ga ko'paytiradi, so'ngra ular hali ham butun sonlar ekanligiga ishonch hosil qiling (int).

Masalan, agar sizning chap dvigatelingiz tezroq bo'lsa, *1 -ni *0.9 ga o'zgartiring va bu narsa yaxshilanishini tekshiring.

Siz uni mukammal qila olmaysiz, lekin u to'g'rilanmaguncha sozlashni davom ettirishingiz mumkin.

RADIONI O'RNATISH

Endi kodning yuqori qismiga quyidagi qatorlarni qo'shib, radio sozlang:

radio import qilish

radio.config (kanal = 7, guruh = 0, navbat = 1) radio.on ()

Bu sizning robotingizga boshqa micro: bitdan ko'rsatmalarni olish imkonini beradi, lekin hozirda u boshqa micro: bitdan ko'rsatmalarni oladi.

Buning sababi 7 -kanal va 0 -guruh standart kanallardir.

Bu raqamlarni o'zgartiring, 0-82 oralig'idagi kanalni va 0-255 gacha bo'lgan guruhni tanlang. Endi sizning micro: bit faqat bir xil konfiguratsiya ma'lumotiga ega bo'lgan boshqalardan ko'rsatmalar oladi.

queue = 1 degani mikro: bit bir vaqtning o'zida faqat bitta kiruvchi xabarni saqlaydi - bu javob berish vaqtini odatdagidan biroz tezroq beradi, ya'ni 3.

Endi siz asosiy kodni tahrirlashingiz kerak, tugmachani bosganingizda ko'rsatmalar bajarilmay, kiruvchi radio xabarni kuting va to'g'ri javob bering.

Sinov sifatida quyidagi kodni sinab ko'ring (2 -bosqichda joystikni o'rnatmaguningizcha hech narsa qilmaydi):

rost bo'lsa:

message = radio.receive () if message == 'oldinga': haydovchi (500, 500)

2-qadam: Joystikni sozlash

Robotingizning micro: bit rozetkasini ajratib oling va uning o'rniga joystik mikro: bitini ulang

Joystikni o'rnatish kodining nusxasini bu erdan oling:

Radioni robotda bo'lgani kabi bir xil konfiguratsiyadan (kanal va guruh raqami) foydalanib o'rnating - bu ikkalasiga bir -biri bilan muloqot qilish imkonini beradi.

Dastur oxirida asosiy tsiklni ishga tushiring:

rost bo'lsa:

agar button_a.was_pressed (): radio.send ("oldinga")

Bu kod hali joystikdan foydalanmaydi: bit. Xabar yuborish uchun mikro: bitdagi A tugmachasidan foydalaniladi.

Robotingiz ham, boshqaruvchingizning mikro: bitlari ham kuchga ega ekanligiga ishonch hosil qiling, so'ng xabarni yuborish uchun tugmani bosing.

Agar xabar muvaffaqiyatli qabul qilinsa va robot harakat qilsa … yaxshi! Siz sozlash bo'yicha ko'rsatmalarni tugatdingiz.

Nosozliklarni bartaraf etish bo'yicha maslahatlar

Agar siz micro: bit… tekshirgichida xato xabari olsangiz, boshqaruv kodini tuzating

Agar siz robotingizga micro: bit haqida xato xabarini olsangiz … radio xabaringiz muvaffaqiyatli yuborildi! Ammo robot buni tushuna olmaydi, shuning uchun siz yuborgan xabar va robotga aytgan xabaringiz mos kelishini tinglang.

Agar umuman hech narsa sodir bo'lmasa

  • Har bir mikro: bitga to'g'ri kodni qo'yganingizga ishonch hosil qiling - tasodifan noto'g'ri kodni o'chirish!
  • Har bir mikro: bitda kanalingiz va guruh raqamlaringiz mos kelishiga ishonch hosil qiling

3 -qadam: Joystik qiymatlarini tekshirish

Keyingi bir necha qadamlarning hammasi nazoratchi kodidan foydalaniladi

Joystikni boshqaruvchiga ishlatishdan oldin, siz tayoqni bosganingizda qanday qiymatlarga ega bo'lishingizni bilishingiz kerak.

Asosiy pastadirni quyidagi kod bilan almashtiring:

rost bo'lsa:

joystick = joystick_push () bosib chiqarish (joystik) uyqu (500)

Bu kodni micro: bit -ga o'chiring, so'ng Mu asboblar panelidagi REPL tugmasini bosing. Bu muharrirning pastki qismida terminalni ochadi, bu sizga mikro: bitga real vaqtda havola qiladi.

REPL ni oching
REPL ni oching

Micro: bit ulanmaguncha bu ishlamaydi

REPL ochiq bo'lganda, mikro: bitning orqa qismidagi reset tugmasini bosing.

Rasm
Rasm

Ekranda "bosilgan" ba'zi qiymatlarni ko'rishingiz kerak:

terminaldagi qiymatlar
terminaldagi qiymatlar

Joystik tayog'ini suring va raqamlar bilan nima bo'lishini ko'ring.

Joystik markaz holatida bo'lganida berilgan qiymatlarni yozib oling - mening holimda (518, 523).

Yopish uchun Mu asboblar panelidagi REPL tugmasini yana bosing - siz mikro: bitga yangi kodni o'chira olmaysiz.

4 -qadam: X va Y o'zgaruvchilarni sozlash

Siz joystik funktsiyasi tomonidan berilgan qiymatlarni o'zgartirmoqchisiz:

  • markazda nolga teng
  • yuqoriga ijobiy
  • pastga salbiy.

Bu robotga kerak bo'lgan ko'rsatmalarga mos keladi - oldinga siljish uchun ijobiy raqam va orqaga haydash uchun salbiy raqam.

Oxirgi qadamda olingan raqamlarga qarang. Birinchi raqam x, ikkinchi raqam y.

Dasturda mavjud bo'lgan joystick_push () ta'rifini asl qiymatdan chiqarib tashlash uchun o'zgartiring:

def joystick_push ():

x = pin0.read_analog () - 518 y = pin1.read_analog () - 523 qaytish x, y

O'z raqamlaringizni ishlating, ular menikidan farq qilishi mumkin

Yangi kodni o'chiring, REPL -ni oching, mikro: bitni tiklash tugmasini bosing va qiymatlaringizni tekshiring.

Siz (0, 0) olasizmi?

5 -qadam: X va Y ni chap va o'ng motorlar qiymatiga aylantirish

Hozirgi vaqtda bu joystik robotni boshqarishda unchalik foydali bo'lmaydi. Oldinga siljiganingizda, siz (0, 500) kabi qiymatga ega bo'lasiz.

Agar siz bu raqamlarni robotga berganingizda, u o'ng dvigatelni yoqadi, lekin chap dvigatelni yoqmaydi, bu siz xohlamagan narsadir!

Bu diagrammada joystikni harakatlantirganda x va y qiymatlari nima bo'lishini va biz joystikni harakatlantirganda robot nima qilishni xohlashi ko'rsatilgan.

diagramma
diagramma

Sizga foydali bo'lgan narsani berish uchun x va y qiymatlarini aralashtirish uchun siz matematikadan foydalanishingiz kerak.

n

MATEMATLAR

Joystikni oldinga siljitishdan boshlaylik.

Siz olishingiz mumkin bo'lgan qadriyatlarga misol:

x = 0

y = 500

Robotga foydali bo'lish uchun siz quyidagi qiymatlarni olishni xohlaysiz:

chap = 500

o'ng = 500

Keling, qanday sonlarni olishimizni bilish uchun x va y ni har xil usulda qo'shishga harakat qilaylik:

x + y = 0 + 500 = 500

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

Keling, joystickni o'ng tomonga sursak nima bo'lishini ko'rib chiqaylik.

Siz olishingiz mumkin bo'lgan qadriyatlarga misol:

x = 500

y = 0

Robotni o'ngga burish uchun siz chap dvigatel oldinga, o'ng dvigatel esa orqaga haydashini xohlaysiz:

chap = 500

o'ng = -500

Keling, yana formulamizni sinab ko'ramiz:

x + y = 500 + 0 = 500

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

Qaysi variant sizga to'g'ri chap qiymatini va qaysi variant sizga to'g'ri to'g'ri qiymatni berishini aniqlash uchun ikkita formulani solishtiring.

Siz tanlagan formulaning har doim ishlashiga ishonch hosil qilish uchun o'zingizning joystikingizdan olgan ba'zi qadriyatlarni sinab ko'ring.

n

JOYSTICK FUNKSIYASINI KO'NGIRISH

Chap va o'ng uchun ikkita yangi o'zgaruvchini yaratish va x va y o'rniga bu qiymatlarni qaytarish uchun joystik funktsiyasini kengaytiring va tahrirlang:

def joystick_push ():

x = pin0.read_analog () - 518 y = pin1.read_analog () - 523 chap = o'ng = chapga, o'ngga qaytish

Yangi kodni o'chiring, REPL -ni oching, mikro: bitni tiklash tugmasini bosing va qiymatlaringizni tekshiring.

Siz kutgan qadriyatlarni olasizmi?

Agar sizga ko'proq yordam kerak bo'lsa, bizning misol kodimizni bu erdan ko'ring:

6 -qadam: qiymatlarni radio xabar sifatida yuborish

Endi siz robotga yuborishga tayyor bo'lgan ba'zi qiymatlarga egasiz.

Asosiy tsiklni tahrirlang, shunda u joystik qiymatlarini tekshiradi, lekin keyin qiymatlarni chop etish o'rniga ularni radio xabar sifatida yuborishga tayyor qiladi.

rost bo'lsa:

joystik = joystik_push () xabar = str (joystik [0]) + "" + str (joystik [1])

Bu aslida xabarni yubormaydi!

Ushbu yangi kod qatorida nima bo'lyapti?

  • joystik [0] - joystik funktsiyasidan chiqadigan birinchi ma'lumot (chapda)
  • joystik [1] - bu ma'lumotning keyingi qismi (o'ngda)
  • str () bu ikkala raqamni ham string formatiga o'zgartiradi (raqamlar o'rniga matn) - bu ma'lumotni radio orqali yuborish uchun kerak.

Siz + ni ko'rishni o'rganasiz, bu qo'shimchani anglatadi - bu raqamlarni bir -biriga qo'shishi va satrlarni birlashtirishi mumkin, ya'ni bu ma'lumotlarning ikki qismini bir -biriga yopishtiradi.

Misol:

150 + 100 = 250

str (150) + str (100) = 150100

Shunday qilib, birlashtirish sizning chap va o'ng qadriyatlaringizni birlashtiradi.

Ikki bitli ma'lumotni ajratishga majbur qilish uchun (robot ularning ikki bitli ma'lumot ekanligini bilishi uchun) "" yordamida ular orasidagi qo'shimcha qatorni bog'lang. Bo'shliq atrofidagi nutq belgilari, u allaqachon satr ekanligini bildiradi.

Nihoyat, yangi yaratilgan xabarni radio orqali yuborish uchun kodingizni kengaytiring:

radio.send (xabar)

uxlash (10)

Kutish xabarlarni yuborishni sekinlashtiradi, shunda qabul qiluvchi mikro: bit juda ko'p ma'lumot bilan yuklanmaydi!

Keyingi bosqichga o'tishdan oldin ushbu kodni micro: bit tekshirgichiga o'chiring va xatolarni tuzating

7 -qadam: Robotingizdagi xabarlarni qabul qilish

Robot kodingizga boshidanoq qayting - tasodifan robot kodini yondirib yubormaslik uchun boshqaruvchi mikro: bitni ajratib qo'yishni unutmang

Asosiy tsiklga o'ting - sinov kodini olib tashlang va o'rniga qo'shing:

rost bo'lsa:

xabar = radio.receive () chop etish (xabar) uyqu (100)

Bu kiruvchi xabarga teng o'zgaruvchini o'rnatadi va xabarni kutilganidek kelishini tekshirish uchun xabarni REPL ga chop etadi.

REPL -ga ulangan yangi kodingizni o'chiring, keyin joystikni bosing.

Siz shunga o'xshash narsani olishingiz kerak:

REPL qiymatlari
REPL qiymatlari

Nosozliklarni bartaraf etish bo'yicha maslahatlar

Agar siz micro: bit… tekshirgichida xato xabari olsangiz, boshqaruv kodini tuzating

Agar siz robotingizga micro: bit haqida xato xabarini olsangiz … radio xabaringiz muvaffaqiyatli yuborildi! Ammo robot buni tushuna olmaydi, shuning uchun siz yuborgan xabar va robotga aytgan xabaringiz mos kelishini tinglang.

Agar umuman hech narsa sodir bo'lmasa

  • Har bir mikro: bitga to'g'ri kodni qo'yganingizga ishonch hosil qiling - tasodifan noto'g'ri kodni o'chirish!
  • Har bir mikro: bitda kanalingiz va guruh raqamlaringiz mos kelishiga ishonch hosil qiling

8 -qadam: Robot motorlarini boshqarish uchun kiruvchi xabarlardan foydalanish

Siz radio orqali ikkita raqamni sim sifatida yuborasiz.

Siz bu xabarni ikki qatorga bo'lishingiz kerak, keyin yana qatorlarni raqamlarga aylantiring va uni haydovchi funktsiyasiga o'tkazing. Ko'p narsa birdaniga davom etmoqda!

Buni amalga oshirishdan oldin, siz qabul qilayotgan xabar to'g'ri formatda ekanligini tekshirishingiz kerak.

Agar hech qanday xabar yuborilmasa, siz "Yo'q" ni olasiz. Agar siz uni ajratishga harakat qilsangiz, siz xato xabari olasiz.

rost bo'lsa:

message = radio.receive () agar xabar Yo'q bo'lsa: xabar = message.split () haydovchi (int (xabar [0]), int (xabar [1]))

Bu erda nima bo'lyapti?

  • Agar xabar "Yo'q" dan boshqa bo'lsa, yangi kod ishlaydi.
  • message.split () xabardagi bo'sh joyni tekshiradi (biz oxirgi qadamda qo'shganmiz) va bu xabarni ikkiga bo'lish uchun ishlatiladi.
  • int (xabar [0]), int (xabar [1]) oldingi qadamda qilganimizning aksini qiladi - har bir ma'lumotni alohida oladi va uni butun songa (butun songa) aylantiradi.
  • int (xabar [0]) haydovchi funktsiyasida chap dvigatel uchun, o'ng dvigatel uchun esa int (xabar [1]) ishlatiladi.

Ishlayotganini tekshiring - joystikni bosganingizda dvigatellar aylanadimi?

Agar yo'q bo'lsa - disk raskadrovka qilish vaqti!

Ha bo'lsa, ajoyib! Sizda ishlaydigan masofadan boshqaruvchi robot bor!

Keyingi bosqichga o'tishdan oldin robotingiz bilan mashg'ul bo'lishga vaqt ajrating. Bu siz kutgan tarzda ketadimi?

Keyingi qadamlar robotga qo'shimcha funktsiyalarni qo'shish uchun joystikdagi tugmachalardan qanday foydalanishni ko'rsatadi

Agar siz ushbu kodning bizning versiyasini ko'rishni xohlasangiz:

  • Robot:
  • Nazoratchi:

9 -qadam: tugmachalardan foydalanish - qo'shimcha xabarlarni qabul qilish

Hozirgi vaqtda sizning kodingiz hech kim bo'lmagan xabarni bo'lishga harakat qiladi. Bu shuni anglatadiki, agar u, masalan, "salom" olsa, siz xato xabari olasiz.

Micro: bit -ga boshqa xabarlarni talqin qilishiga ruxsat berish uchun, u avval har bir kutilgan xabarni tekshirishi, keyin unga boshqa hech narsa aytilmagan bo'lsa, xabarni ajratishi kerak bo'ladi.

Kodni shunday kengaytiring:

agar xabar yo'q bo'lsa:

agar xabar == 'salom': display.show (Image. HAPPY) elif xabar == 'o'rdak': display.show [Image. DUCK] boshqa: xabar = message.split () haydovchi (int (xabar [0]), int (xabar [1]))

Birinchidan, u "Salom" xabarini olganligini tekshiradi. Agar u bo'lsa, u baxtli tasvirni ko'rsatadi, so'ngra pastadirning yuqori qismiga qayting va keyingi xabarni tekshiring.

Agar xabar salom bo'lmasa, u keyingi xabarning "o'rdak" ekanligini tekshiradi.

Agar xabar "salom" yoki "o'rdak" bo'lmasa, u ro'yxatdagi oxirgi ishni bajaradi, bu xabarni ajratish va motorlarni yoqish. Agar u "salom" yoki "o'rdak" xabarini olgan bo'lsa, bu xabarni ajratishga urinmaydi, ya'ni siz bu ikki xabarning birortasidan ham xato xabari olmaysiz.

Ikkita tenglik belgisi muhim - bu "teng" degan ma'noni anglatadi, bu biror narsani o'rnatadigan bitta tenglik belgisiga qaraganda (shuning uchun xabar = "salom" biz o'zgaruvchini "salom", xabar == "salom" ga o'rnatayotganimizni anglatadi) biz xabarning "salom" ga tengligini so'raymiz degan ma'noni anglatadi).

Sinab ko'rish uchun hozircha faqat ikkita variant bilan harakat qilib ko'ring - keyinroq xohlaganingizcha boshqa xabarlarni qo'shishingiz mumkin.

Ish kodiga havola:

10 -qadam: Controller tugmachalari yordamida qo'shimcha xabarlar yuborish

Robotingizning micro: bit rozetkasini ajratib oling va uning o'rniga joystik mikro: bitini ulang

Tahrir qilish uchun nazorat kodingizga qayting.

Robot kodiga o'xshab, biz nazoratchidan joystik qiymatlarini yuborishdan oldin siz boshqa xabarlarni yubormoqchi ekanligingizni tekshirishini xohlaymiz.

Loopning yuqori qismida biz hali ham joystikning joriy qiymatlarini tekshirishini xohlaymiz, lekin ayni paytda tugma bosilayotganligini tekshirishni xohlaymiz:

rost bo'lsa:

joystick = joystick_push () tugmasi = button_press ()

button_press () hozirda qaysi tugma bosilayotganiga qarab A, B, C, D, E yoki F qiymatini qaytaradi (agar hech narsa bosilmasa, u Yo'q qaytaradi).

Endi biz robot-kodda bo'lgani kabi if-elif-else bayonotini berishimiz mumkin-ikkita tugma yordamida va tugma bosilmasa joystik qiymatini yuborish.

agar tugma == 'A':

radio.send ('salom') uyqu (500) elif tugmasi == 'B': radio.send ('o'rdak' 'uyqu (500) boshqa: xabar = str (joystik [0]) + "" + str (joystik [1]) radio. yuborish (xabar) uyqu (10)

Tugma bosilganda, robotga oldingi bosqichda e'tibor berishni buyurgan xabarlardan birini yuboring.

Xabar tugma bosilganda yuboriladi va kompyuterlar odamlarga qaraganda tezroq! Barmog'ingizni tugmachani olib tashlamasdan oldin, u xabarni ko'p marta yuborishi mumkin.

Xabar yuborilgandan keyin uyqu sekinlashadi, shuning uchun u tugmani tez tekshirmaydi - bu erda bir nechta raqamlarni sinab ko'ring va siz uchun juda yaxshi vaqt ajratiladi - bu juda sekin va javob bermaydi. tez va sizning robotingiz tugmachali xabarlarni oladi, shuning uchun u joystikka javob berishni to'xtatishi mumkin!

Ishlaydimi?

Agar siz xato xabarlarini olsangiz, nima o'zgargani va nima bo'layotgani haqida yaxshilab o'ylab ko'ring.

Agar siz boshqaruvchi tugmachasini bosganingizda robotda xatolik yuz bersa - bilasizki, bu xabar tarqaladi, lekin bu robotni chalkashtirib yuboradi. Yuborgan xabaringiz va robotga aytgan xabaringiz bir xilligini tekshiring.

Ish kodiga havola:

11 -qadam: Keyingi qadamlar

Endi siz robotning dvigatellari va joystik: bit tekshirgichi bilan ishlash uchun kerakli bilimlarga egasiz

Ushbu bilimlardan foydalanib, ikkita dasturni takomillashtiring va ularni o'zingiznikiga aylantiring. Quyida ba'zi fikrlar!

Tekshirgichingizda oltita tugma bor! Ular nima qilishlarini xohlaysiz?

  • Robotingizning buyrug'i bilan bajaradigan raqs tartibini dasturlash haqida nima deyish mumkin? Sleep () buyruqlari bilan ajratilgan drive () buyruqlar algoritmini yozing!
  • Siz robotni teskari haydash uchun yo'nalishini o'zgartirishni xohlaysizmi? Joystikning x va y qiymatlari haqida o'ylab ko'ring. Ular nimani ifodalaydi va siz ularni qanday boshqarishingiz mumkin?
  • Sizning robotingizda LEDlar, karnay yoki datchiklar kabi qo'shimcha funktsiyalar bormi (yoki qo'sha olasizmi?)?

Kodni takomillashtirish bo'yicha fikrlar

  • Try/except kodidan foydalanib, robotingizga noma'lum xabarlar bilan kurashishga yordam bera olasizmi?
  • Joystikdan chap va o'ng qiymatlarni hisoblash uchun ishlatiladigan matematikalar bizga to'liq qiymatlarni bermaydi (robotning haydovchisi 1023 gacha bo'lgan raqamni qabul qilishi mumkin). Yaxshi kod olish uchun ushbu kodni tahrir qila olasizmi?
  • Joystik qadriyatlarini aralashtirishning boshqa usullari ham bor - buni qilishning yaxshiroq yo'lini topa olasizmi?

Tavsiya: