Mundarija:
- Ta'minotlar
- 1-qadam: Robotni sozlash
- 2-qadam: Joystikni sozlash
- 3 -qadam: Joystik qiymatlarini tekshirish
- 4 -qadam: X va Y o'zgaruvchilarni sozlash
- 5 -qadam: X va Y ni chap va o'ng motorlar qiymatiga aylantirish
- 6 -qadam: qiymatlarni radio xabar sifatida yuborish
- 7 -qadam: Robotingizdagi xabarlarni qabul qilish
- 8 -qadam: Robot motorlarini boshqarish uchun kiruvchi xabarlardan foydalanish
- 9 -qadam: tugmachalardan foydalanish - qo'shimcha xabarlarni qabul qilish
- 10 -qadam: Controller tugmachalari yordamida qo'shimcha xabarlar yuborish
- 11 -qadam: Keyingi qadamlar
Video: Mikro dasturlash: Bit Robot va Joystik: MicroPython bilan bit boshqaruvchisi: 11 qadam
2024 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2024-01-30 13:25
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.
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:
- Raw faylini kompyuteringizga saqlang, so'ng uni Mu -ga yuklang:
- Berilgan barcha kodlarni nusxa ko'chiring va Mu -dagi yangi faylga joylashtiring.
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:
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.
Micro: bit ulanmaguncha bu ishlamaydi
REPL ochiq bo'lganda, mikro: bitning orqa qismidagi reset tugmasini bosing.
Ekranda "bosilgan" ba'zi qiymatlarni ko'rishingiz kerak:
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.
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:
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:
GoBabyGo: Joystik boshqariladigan minadigan avtomashina yasang: 10 qadam (rasmlar bilan)
GoBabyGo: Djoystik boshqariladigan minadigan avtomashinani yarating: Delaver universiteti professori tomonidan asos solingan GoBabyGo-bu global tashabbus bo'lib, u oddiy odamlarga o'yinchoq minadigan mashinalarni qanday o'zgartirish kerakligini ko'rsatib beradi, shuning uchun ularni harakatchanligi cheklangan bolalar ishlatishi mumkin. Oyoq pedalini almashtirishni o'z ichiga olgan loyiha
Analog joystik yordamida 2 ta servo boshqaruv: 5 qadam (rasmlar bilan)
Analog Joystick yordamida 2 ta servolarni boshqarish: Salom bolalar, bu mening birinchi ko'rsatmam va men bu maqolada Arduino UNO yordamida servolarni boshqarish uchun Analog Joystikdan qanday foydalanishni aytib beraman. Men buni iloji boricha sodda tushuntirishga harakat qilaman. u
Joystik bilan boshqariladigan g'ildirakli stul to'siqlarni kuzatuvchi: 3 qadam (rasmlar bilan)
Joystik bilan boshqariladigan nogironlar aravachasi to'siqlarni kuzatuvchi: Jismoniy nogironlarni xavfsiz boshqarishni osonlashtirish uchun yo'lda mavjud bo'lgan to'siqlarni kuzatish uchun ultratovush sensori ishlatiladi. Joystikning harakatiga asoslanib, dvigatellar nogironlar aravachasini istalgan to'rt yo'nalishda va har bir yo'nalishda tezlik bilan boshqaradi
Arduino asosidagi DIY o'yin boshqaruvchisi - Arduino PS2 o'yin boshqaruvchisi - DIY Arduino Gamepad bilan Tekken o'ynash: 7 qadam
Arduino asosidagi DIY o'yin boshqaruvchisi | Arduino PS2 o'yin boshqaruvchisi | DIY Arduino Gamepad bilan Tekken o'ynash: Salom bolalar, o'yin o'ynash har doim qiziqarli, lekin o'zingizning shaxsiy o'yiningiz bilan o'ynash yanada qiziqarli, shuning uchun biz ushbu qo'llanmada arduino pro micro yordamida o'yin boshqaruvchisi qilamiz
PS2 kontrollerli Arduino robot (PlayStation 2 joystik): 10 qadam (rasmlar bilan)
Arduino Robot PS2 Controller bilan (PlayStation 2 Joystick): Ushbu qo'llanmada sizga robotli tankni boshqarish uchun simsiz Playstation 2 (PS2) joystikidan qanday foydalanishni ko'rsataman. Ushbu loyihaning asosi sifatida Arduino Uno taxtasi ishlatilgan. U simsiz boshqaruvchidan buyruqlarni qabul qiladi va dvigatellarning tezligini o'rnatadi