Turinys:

„Micro: Bit Robot & Joystick“programavimas: bitų valdiklis su „MicroPython“: 11 žingsnių
„Micro: Bit Robot & Joystick“programavimas: bitų valdiklis su „MicroPython“: 11 žingsnių

Video: „Micro: Bit Robot & Joystick“programavimas: bitų valdiklis su „MicroPython“: 11 žingsnių

Video: „Micro: Bit Robot & Joystick“programavimas: bitų valdiklis su „MicroPython“: 11 žingsnių
Video: The Internet of Things by James Whittaker of Microsoft 2024, Lapkritis
Anonim
„Micro: Bit Robot & Joystick“programavimas: bitų valdiklis su „MicroPython“
„Micro: Bit Robot & Joystick“programavimas: bitų valdiklis su „MicroPython“

„Robocamp 2019“, mūsų vasaros robotikos stovykloje, 10–13 metų jaunuoliai lituoja, programuoja ir kuria BBC mikro: bitų pagrindu sukurtą „priešsvarinį robotą“, taip pat programuoja „micro: bit“, skirtą naudoti kaip nuotolinio valdymo pultą.

Jei šiuo metu esate „Robocamp“, pereikite prie 3 veiksmo, nes mes atlikome pirmuosius du veiksmus kaip grupė

Tai yra žingsnis po žingsnio vadovas, kaip gauti „micro: bit“robotą, bendraujantį su kreiptuku: bitų valdikliu.

Ne viskas vyksta greičiausiu keliu, kad viskas veiktų, bet bando dalykus mažomis dalimis, kad galėtumėte išbandyti kodą eidami, uždėti savo antspaudą ir suprasti, kodėl mes darome tai, ką darome !

Šiai veiklai mes naudojame savo pasirinktinį robotą, tačiau jis veiks su bet kokiu robotu, naudojančiu panašią variklio tvarkyklę, pvz., L9110.

Mūsų roboto dizaino failus galite rasti čia:

Šis vadovas yra skirtas pradedantiesiems, tačiau jei niekada anksčiau nenaudojote „micro: bit“su „MicroPython“, rekomenduojame pirmiausia išbandyti paprastesnę programą, pvz., Mūsų vardo ženklelį „Instructable“: https://www.instructables.com/id/Felt -Microbit-Nam…

Prekės

2x BBC mikro: bit

Robotas, veikiantis su BBC mikro: bit (žr. Paaiškinimą aukščiau)

vairasvirtė: bitų valdiklis (mes gavome iš „Cool Components“)

1 žingsnis: Roboto nustatymas

Turite keletą galimybių rašyti „MicroPython“kodą savo „micro“: bit:

  • Mu, kurią galite atsisiųsti ir įdiegti iš čia:
  • Internetinis redaktorius, kurį rasite čia:

Šiose instrukcijose daroma prielaida, kad naudojate Mu

Atidarykite „Mu“ir prijunkite „micro: bit“prie kompiuterio. Turėtumėte atpažinti, kad naudojate „micro: bit“, ir pasirinkite „micro: bit“„Mode“, bet jei ne, pakeiskite jį rankiniu būdu.

pasirinkti režimą
pasirinkti režimą

Gaukite roboto variklio bandymo kodo kopiją čia:

Jei nesate įpratę prie „Github“, tai gali būti neintuityvu! Du paprasti būdai gauti šį kodą:

  1. Išsaugokite „Raw“failą savo kompiuteryje, tada įkelkite jį į „Mu“:
  2. Nukopijuokite ir įklijuokite visą nurodytą kodą į naują failą „Mu“.
išsaugoti neapdorotą failą
išsaugoti neapdorotą failą

Dabar Mu įrankių juostoje spustelėkite mygtuką „Flash“, kad išsiųstumėte naują kodą į „micro: bit“.

Tai neveiks, kol nebus prijungtas „micro: bit“

Geltona lemputė „micro: bit“gale pradės mirksėti. Kai jis bus baigtas, jūsų kodas bus perkeltas.

VARIKLIO NURODYMŲ NUSTATYMAS

Ši programa įjungs variklius skirtingomis kryptimis, kai paspausite mikro: bit mygtuką „A“.

Tai, ko norite, yra:

  • Kai rodomas „A“, kairysis variklis važiuoja į priekį
  • Kai rodomas „B“, kairįjį variklį palikite atgal
  • Kai rodomas „C“, dešinysis variklis važiuoja į priekį
  • Kai rodomas „D“, dešinysis variklis atgal

Tikriausiai taip nebus, nes tai priklauso nuo to, kaip prijungėte savo robotą!

Kodo viršuje rasite kintamųjų sąrašą, kuris nustato, kuris „micro: bit“kaištis valdo variklio kryptį.

Jei naudojate vieną iš mūsų robotų (failų), pakeiskite kintamųjų pavadinimus, kad robotas judėtų teisingomis kryptimis:

sukeisti kaiščio kintamuosius
sukeisti kaiščio kintamuosius

Jei naudojate savo robotą, prieš redaguodami kodą patikrinkite, prie kokių kaiščių prijungtas variklio tvarkyklė.

PAVAROS TESTAVIMAS

Dabar patikrinkite, kaip vairuoja jūsų robotas, pakeisdami bandymo kodą pagrindinėje kilpoje į savo kodą.

Jūs liepiate robotui važiuoti paskambinus į diską (). Tam reikalingi du argumentai - kairiojo variklio vertė ir dešiniojo variklio vertė nuo 0 (išjungta) iki 1023 (maksimalus greitis).

Pavyzdžiui, skambindami į diską (500, 500), jūs liepiate abiems varikliams įsijungti pirmyn maždaug puse greičio.

Išbandykite keletą variantų, kad pajustumėte, kaip jis važiuoja tiesiai ir kaip gerai jis sukasi.

Patarimas: variklio bandymai buvo tiek „True“ciklo, tiek „if“teiginio viduje - varikliai nesisuktų, kol nepaspausite „micro: bit“mygtuko A, ir jis visam laikui tikrina, ar paspaudėte mygtuką A.

Patarimas: varikliai neišsijungs, kol nepasakysite! Jie visada vykdys paskutinį nurodymą.

PASIRENKAMA: VAIRAVIMO GERINIMAS TIESIOGINĖJE LINIJA

Jei jūsų robotas nevažiuos tiesia linija, vienas iš jūsų variklių gali suktis greičiau nei kitas.

Patikrinę, ar niekas fiziškai netrukdo vairui laisvai suktis, galite redaguoti važiavimo funkcijos kodą, kad sumažintumėte greitesnio variklio greitį.

Slinkite aukštyn, kad surastumėte pavaros funkcijos apibrėžimą, ir peržiūrėkite dvi pagrindines instrukcijas:

def pavara (L, R):

# Žemiau yra koregavimas, skirtas ištaisyti variklio greičio neatitikimą L = int (L*1) R = int (R*1)

Šios dvi eilutės šiuo metu turi L ir R reikšmes, padauginkite jas iš 1, tada įsitikinkite, kad jos vis dar yra sveikieji skaičiai (int).

Pvz., Jei kairysis variklis yra greitesnis, pakeiskite *1 jo eilutę į *0,9 ir pažiūrėkite, ar tai pagerina situaciją.

Negalėsite to padaryti tobulai, tačiau galėsite toliau koreguoti, kol jis važiuos tiesiau.

RADIJO NUSTATYMAS

Dabar nustatykite radiją, kodo viršuje pridėdami šias eilutes:

importuoti radiją

radio.config (kanalas = 7, grupė = 0, eilė = 1) radio.on ()

Tai leis jūsų robotui gauti nurodymus iš kito „micro: bit“, tačiau šiuo metu jis gaus instrukcijas iš bet kurio kito „micro: bit“.

Taip yra todėl, kad 7 kanalas ir 0 grupė yra numatytieji kanalai.

Pakeiskite šiuos skaičius, pasirinkdami kanalą nuo 0 iki 82 ir grupę nuo 0 iki 255. Dabar jūsų „micro: bit“gaus instrukcijas tik iš kitų, turinčių tą pačią konfigūracijos informaciją.

eilė = 1 reiškia, kad „micro: bit“vienu metu išsaugos tik vieną gaunamą pranešimą - tai duoda šiek tiek trumpesnį atsakymo laiką nei numatytasis, kuris yra 3.

Dabar reikia redaguoti pagrindinio ciklo kodą, o ne vykdyti instrukcijas, kai paspausite mygtuką, palaukti įeinančio radijo pranešimo ir tinkamai reaguoti.

Išbandykite šį kodą kaip testą (jis nieko nepadarys, kol 2 veiksme nenustatysite kreiptuko):

nors tiesa:

message = radio.recept () if message == 'forward': drive (500, 500)

2 žingsnis: vairasvirtės nustatymas

Atjunkite savo roboto „micro: bit“kištuką ir prijunkite vairasvirtės „micro: bit“

Gaukite kreiptuko nustatymo kodo kopiją čia:

Nustatykite radiją naudodami tą pačią konfigūraciją (kanalo ir grupės numerį) kaip ir robotui - tai leis abiem bendrauti.

Programos pabaigoje pradėkite pagrindinę ciklą:

nors tiesa:

jei mygtukas_a.paspaustas (): radio.send ('pirmyn')

Šis kodas dar nenaudoja kreiptuko: bit. Pranešimui siųsti jis naudoja mygtuką micro: bit.

Įsitikinkite, kad tiek jūsų robotas, tiek valdiklis micro: bitai turi galią, tada paspauskite mygtuką, kad išsiųstumėte pranešimą.

Jei pranešimas sėkmingai priimtas ir jūsų robotas juda … gerai padaryta! Baigėte sąrankos instrukcijas.

TRIKČIŲ ŠALINIMO PATARIMAI

Jei valdiklyje micro: bit … gaunate klaidos pranešimą, derinkite valdiklio kodą

Jei gausite klaidos pranešimą savo roboto micro: bit… jūsų radijo pranešimas buvo sėkmingai išsiųstas! Tačiau robotas to negali suprasti, todėl patikrinkite, ar jūsų išsiųsta žinutė ir žinutė, kurią robotui liepėte klausytis, atitinka.

Jei visai nieko nevyksta

  • Įsitikinkite, kad kiekvienam „micro: bit“įvedėte teisingą kodą - lengva netyčia sužibėti netinkamu kodu!
  • Įsitikinkite, kad jūsų kanalo ir grupės numeriai atitinka kiekvieną „micro: bit“

3 žingsnis: vairasvirtės verčių tikrinimas

Kiti keli veiksmai atliekami naudojant valdiklio kodą

Prieš naudodamiesi valdiklio kreiptuku, turite žinoti, kokių verčių gaunate, kai stumiate lazdelę.

Pakeiskite pagrindinę kilpą tokiu kodu:

nors tiesa:

vairasvirtė = vairasvirtė_push () spausdinti (vairasvirtė) miegoti (500)

Perkelkite šį kodą į savo „micro: bit“, tada spustelėkite „Mu“įrankių juostos mygtuką REPL. Tai atidarys redaktoriaus apačioje esantį terminalą, kuris suteiks jums realaus laiko nuorodą į „micro: bit“.

atidarykite REPL
atidarykite REPL

Tai neveiks, kol nebus prijungtas „micro: bit“

Atidarę REPL, paspauskite „micro: bit“gale esantį atstatymo mygtuką.

Vaizdas
Vaizdas

Turėtumėte matyti, kad kai kurios vertės ekrane bus atspausdintos:

vertės terminale
vertės terminale

Paspauskite vairasvirtės lazdelę ir pažiūrėkite, kas atsitiks su skaičiais.

Užsirašykite vertes, nurodytas, kai vairasvirtė yra centrinėje padėtyje - mano atveju (518, 523).

Dar kartą spustelėkite „Mu“įrankių juostos mygtuką „REPL“, kad ją uždarytumėte - negalėsite atnaujinti naujo kodo „micro: bit“.

4 žingsnis: X ir Y kintamųjų koregavimas

Norite pakeisti kreiptuko funkcijos pateiktas vertes taip, kad:

  • centre jis lygus nuliui
  • aukštyn yra teigiamas
  • žemyn yra neigiamas.

Tai atitinka instrukcijas, kurių reikia robotui - teigiamas skaičius, norint važiuoti į priekį, ir neigiamas skaičius, norint važiuoti atgal.

Pažvelkite į skaičius, kuriuos gavote paskutiniame žingsnyje. Pirmasis skaičius yra x, o antrasis - y.

Redaguokite programoje jau esantį joystick_push () apibrėžimą, kad būtų atimtos pradinės vertės:

def joystick_push ():

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

Naudokite savo numerius, jie gali skirtis nuo mano

Paleiskite naują kodą, atidarykite REPL, paspauskite „micro: bit“nustatymo iš naujo mygtuką ir patikrinkite savo vertes.

Ar gaunate (0, 0)?

5 žingsnis: X ir Y konvertavimas į kairiojo ir dešiniojo variklių vertes

Šiuo metu ši vairasvirtė nebus labai naudinga vairuoti robotą. Paspaudę į priekį iki galo, gausite tokią vertę kaip (0, 500).

Jei duotumėte šiuos skaičius robotui, jis įjungtų dešinįjį variklį, bet ne kairįjį, o tai nėra tai, ko norite!

Ši diagrama parodo, kas atsitinka su x ir y reikšmėmis, kai perkeliate vairasvirtę, ir ko mes norime, kad robotas darytų, kai jūs perkeliate vairasvirtę.

diagrama
diagrama

Norėdami sumaišyti x ir y reikšmes, turite naudoti tam tikrą matematiką, kad gautumėte ką nors naudingesnio.

n

MATEMATIKA

Pradėkime stumdami vairasvirtę iki galo.

Vertybių, kurias galite gauti, pavyzdys:

x = 0

y = 500

Norėdami būti naudingi robotui, norite gauti tokias vertybes:

kairė = 500

dešinė = 500

Pabandykime pridėti x ir y įvairiais būdais, kad pamatytume, kokius skaičius gauname:

x + y = 0 + 500 = 500

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

Dabar pažiūrėkime, kas atsitiks, jei paspausite vairasvirtę iki galo į dešinę.

Vertybių, kurias galite gauti, pavyzdys:

x = 500

y = 0

Kad robotas suktųsi į dešinę, norite, kad kairysis variklis važiuotų į priekį, o dešinysis - atgal:

kairė = 500

dešinėje = -500

Išbandykime mūsų formulę dar kartą:

x + y = 500 + 0 = 500

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

Palyginkite du formulės rinkinius, kad išsiaiškintumėte, kuri parinktis suteiks jums teisingą kairę vertę, o kuri - teisingą teisingą vertę.

Išbandykite naudodami kai kurias vertes, gautas iš savo kreiptuko, kad įsitikintumėte, jog pasirinkta formulė veikia visą laiką.

n

„JOYSTICK“FUNKCIJOS PLĖTIMAS

Išplėskite ir redaguokite vairasvirtės funkciją, kad sukurtumėte du naujus kintamuosius kairėn ir dešinėn ir grąžintumėte šias reikšmes vietoj x ir y:

def joystick_push ():

x = pin0.read_analog () - 518 y = pin1.read_analog () - 523 kairė = dešinė = grįžti į kairę, į dešinę

Paleiskite naują kodą, atidarykite REPL, paspauskite „micro: bit“nustatymo iš naujo mygtuką ir patikrinkite savo vertes.

Ar jūs gaunate vertybes, kurių tikitės?

Jei jums reikia daugiau pagalbos, peržiūrėkite mūsų pavyzdinį kodą čia:

6 veiksmas: verčių siuntimas kaip radijo pranešimai

Dabar turite keletą vertybių, kurias galite nusiųsti savo robotui.

Redaguokite savo pagrindinę kilpą, kad ji patikrintų vairasvirtės reikšmes, bet tada, užuot spausdinusi vertes, paruošia jas siųsti kaip radijo pranešimą.

nors tiesa:

vairasvirtė = vairasvirtė_push () žinutė = str (vairasvirtė [0]) + "" + str (vairasvirtė [1])

Tai iš tikrųjų dar nesiųs pranešimo!

Kas vyksta šioje naujoje kodo eilutėje?

  • vairasvirtė [0] reiškia pirmąją informacijos dalį, gautą iš vairasvirtės funkcijos (kairėje)
  • vairasvirtė [1] yra kita informacijos dalis (dešinėje)
  • str () konvertuoja abu šiuos skaičius į eilutės formatą (tekstas vietoj skaičių) - tai būtina norint perduoti informaciją per radiją.

Būsite įpratę matyti + reikšti pridėjimą - tai gali sudėti skaičius kartu ir sujungti eilutes, o tai reiškia, kad jis sujungs du informacijos elementus.

Pavyzdys:

150 + 100 = 250

str (150) + str (100) = 150100

Taigi sujungimas sujungs jūsų kairės ir dešinės vertybes.

Norėdami priversti atskirti du informacijos bitus (kad robotas žinotų, jog tai yra du informacijos bitai), sujunkite papildomą eilutę tarp jų naudodami „“. Kalbos ženklai aplink erdvę reiškia, kad tai jau eilutė.

Galiausiai išplėskite savo kodą, kad per radiją būtų išsiųstas šis naujai sukurtas pranešimas:

radio.send (žinutė)

miegoti (10)

Miego režimas sulėtina pranešimų siuntimą, kad gaunantis „micro: bit“nebūtų perkrautas per daug informacijos!

Prieš pereidami prie kito veiksmo, paleiskite šį kodą valdikliui „micro: bit“ir derinkite visas klaidas

7 veiksmas: pranešimų gavimas iš jūsų roboto

Grįžkite prie savo roboto kodo nuo pat pradžių - nepamirškite atjungti valdiklio „micro: bit“, kad netyčia neįjungtumėte roboto kodo

Slinkite žemyn iki pagrindinės kilpos - pašalinkite bandymo kodą ir pridėkite šį:

nors tiesa:

pranešimas = radijas. gauti () spausdinti (pranešimas) miego režimas (100)

Tai nustato kintamąjį, lygų gaunamam pranešimui, ir spausdina pranešimą į REPL, kad patikrintų, ar pranešimai gaunami taip, kaip tikėtasi.

Blykstelėkite naują kodą, prijungtą prie REPL, tada paspauskite vairasvirtę.

Turėtumėte gauti kažką panašaus:

REPL reikšmės
REPL reikšmės

TRIKČIŲ ŠALINIMO PATARIMAI

Jei valdiklyje micro: bit … gaunate klaidos pranešimą, derinkite valdiklio kodą

Jei gausite klaidos pranešimą savo roboto micro: bit… jūsų radijo pranešimas buvo sėkmingai išsiųstas! Tačiau robotas to negali suprasti, todėl patikrinkite, ar jūsų išsiųsta žinutė ir žinutė, kurią robotui liepėte klausytis, atitinka.

Jei visai nieko nevyksta

  • Įsitikinkite, kad kiekvienam „micro: bit“įvedėte teisingą kodą - lengva netyčia sužibėti netinkamu kodu!
  • Įsitikinkite, kad jūsų kanalo ir grupės numeriai atitinka kiekvieną „micro: bit“

8 veiksmas: gaunamų pranešimų naudojimas roboto varikliams valdyti

Dabar radijuje siunčiami du skaičiai kaip eilutė.

Šį pranešimą turite padalyti į dvi eilutes, tada eilutes vėl paversti skaičiais ir perkelti į disko funkciją. Daug kas vyksta vienu metu!

Prieš tai darydami turite patikrinti, ar gaunamas pranešimas yra tinkamo formato.

Jei pranešimai nėra siunčiami, vietoj to gausite pranešimą „Nėra“. Jei bandysite tai padalyti, gausite klaidos pranešimą.

nors tiesa:

message = radio.recept (), jei pranešimas nėra Nėra: message = message.split () diskas (int (pranešimas [0]), int (pranešimas [1]))

Kas čia vyksta?

  • Naujas kodas bus paleistas, jei pranešimas bus ne „Nėra“.
  • message.split () patikrina, ar pranešime nėra vietos (kurią pridėjome paskutiniame žingsnyje), ir tai naudoja pranešimui padalyti į dvi dalis.
  • int (pranešimas [0]), int (pranešimas [1]) veikia priešingai nei mes padarėme ankstesniame žingsnyje - gauna kiekvieną informaciją atskirai ir paverčia ją sveiku skaičiumi (sveiku skaičiumi).
  • int (pranešimas [0]) naudojamas kaip kairiojo variklio vertė pavaros funkcijoje, o int (pranešimas [1]) naudojamas kaip dešiniojo variklio vertė.

Patikrinkite, ar jis veikia - ar varikliai sukasi, kai spaudžiate vairasvirtę?

Jei ne - laikas derinimui!

Jei taip, fantastiška! Jūs turite veikiantį nuotolinio valdymo robotą!

Praleiskite šiek tiek laiko praktikuodami su savo robotu, prieš pereidami prie kito žingsnio. Ar važiuoja taip, kaip tikitės?

Tolesni veiksmai parodys, kaip naudoti vairasvirtės mygtukus, kad jūsų robotui būtų suteiktos papildomos funkcijos

Jei norite pamatyti mūsų šio kodo versiją iki šiol:

  • Robotas:
  • Valdiklis:

9 veiksmas: mygtukų naudojimas - papildomų pranešimų gavimas

Šiuo metu jūsų kodas bandys padalyti bet kokį pranešimą, kuris nėra „Nėra“. Tai reiškia, kad jei gausite, pavyzdžiui, „labas“, gausite klaidos pranešimą.

Kad jūsų „micro: bit“galėtų interpretuoti kitus pranešimus, jis pirmiausia turės patikrinti kiekvieną laukiamą pranešimą, o paskui padalinti pranešimą tik tuo atveju, jei jam nebuvo liepta nieko kito daryti.

Išplėskite savo kodą taip:

jei pranešimas nėra Nėra:

if message == 'hello': display.show (Image. HAPPY) elif message == 'antis': display.show (Image. DUCK) else: message = message.split () diskas (int (pranešimas [0]), int (pranešimas [1]))

Pirma, ji patikrins, ar gavo pranešimą „labas“. Jei taip, jis parodys laimingą vaizdą, tada grįžkite į kilpos viršų ir patikrinkite, ar nėra kito pranešimo.

Jei pranešimas nėra sveikas, jis patikrins, ar pranešimas yra „antis“.

Jei pranešimas nėra „labas“ARBA „antis“, jis atliks paskutinį dalyką sąraše, kuris padalija pranešimą ir įjungia variklius. Jis nebandys padalyti pranešimo, jei gavo „labas“arba „antis“, o tai reiškia, kad negausite klaidos pranešimo iš nė vieno iš šių dviejų pranešimų.

Dvigubas lygybės ženklas yra svarbus - tai reiškia „lygus“, palyginti su vienu lygybės ženklu, kuris kažką nustato (taigi pranešimas = „labas“reiškia, kad mes nustatome kintamąjį į „labas“, pranešimas == „labas“reiškia, kad mes klausiame, ar pranešimas lygus „labas“).

Išbandykite dabar naudodami tik dvi parinktis, kad galėtumėte tai išbandyti - vėliau galėsite pridėti tiek pranešimų, kiek norite.

Nuoroda į darbo kodą:

10 veiksmas: papildomų pranešimų siuntimas naudojant valdiklio mygtukus

Atjunkite savo roboto „micro: bit“kištuką ir prijunkite vairasvirtės „micro: bit“

Grįžkite prie valdiklio kodo, kad galėtumėte redaguoti.

Panašiai kaip roboto kodas, norime, kad valdiklis prieš siųsdamas vairasvirtės vertes patikrintų, ar bandote siųsti kitus pranešimus.

Kilpos viršuje mes vis dar norime, kad ji patikrintų esamas vairasvirtės vertes, bet taip pat norime, kad ji patikrintų, ar šiuo metu yra paspaudžiamas mygtukas:

nors tiesa:

vairasvirtė = vairasvirtė_push () mygtukas = mygtuko paspaudimas ()

„button_press“() grąžina reikšmę A, B, C, D, E arba F, priklausomai nuo to, kuris mygtukas šiuo metu yra paspaudžiamas (jei nieko nespaudžiate, grąžina „Nėra“).

Dabar mes galime padaryti „if-elif-else“teiginį, kaip tai darėme dėl roboto kodo-naudodami du mygtukus ir nusiųsdami vairasvirtės vertę, jei nespaudžiamas joks mygtukas.

jei mygtukas == 'A':

radio.send ('labas') miegas (500) elif mygtukas == 'B': radio.send ('antis') miegas (500) else: message = str (vairasvirtė [0]) + "" + str (vairasvirtė [1]) radijas. Siųsti (pranešimas) miegoti (10)

Kai paspaudžiamas mygtukas, atsiųskite vieną iš pranešimų, kuriuos nurodėte robotui atkreipti dėmesį atlikdami ankstesnį veiksmą.

Pranešimas bus išsiųstas kiekvieną kartą, kai bus paspaustas mygtukas, o kompiuteriai veikia daug greičiau nei žmonės! Taigi jis gali išsiųsti pranešimą daug kartų, kol jums pavyks nuimti pirštą nuo mygtuko.

Miegas po pranešimo išsiuntimo sulėtėja, todėl mygtukas dar kartą netikrinamas. Išbandykite keletą skaičių, kad gautumėte jums tinkamiausią laiką - per lėtai ir neatsakys. greitai ir jūsų robotas gaus tiek daug mygtukų pranešimų, kad gali nustoti reaguoti į vairasvirtę!

Ar tai veikia?

Jei gaunate klaidų pranešimus, gerai pagalvokite, ką ką tik pakeitėte ir kas vyksta.

Jei paspausite valdymo pulto mygtuką, ant roboto pasirodys klaida - žinote, kad pranešimas sklinda, bet tai klaidina robotą. Patikrinkite, ar išsiųstas pranešimas ir pranešimas, kurį liepėte robotui ieškoti, sutampa.

Nuoroda į darbo kodą:

11 veiksmas: kiti veiksmai

Dabar jūs turite žinių, kurių jums reikia dirbant su savo roboto varikliais ir vairasvirte: bitų valdikliu

Pasinaudokite šiomis žiniomis, kad patobulintumėte abi programas ir sukurtumėte jas savo. Keletas idėjų žemiau!

Valdiklyje yra šeši mygtukai! Ką norite, kad jie darytų?

  • Kaip suprogramuoti šokio rutiną, kurią jūsų robotas atliktų pagal komandą? Parašykite disko () komandų algoritmą, atskirtą miego () komandomis!
  • Ar norite pakeisti roboto judėjimo kryptį, kad jis galėtų lengvai važiuoti aukštyn kojomis? Pagalvokite apie vairasvirtės x ir y reikšmes. Ką jie reiškia ir kaip galėtumėte jais manipuliuoti?
  • Ar jūsų robotas turi (ar galėtumėte pridėti!) Papildomų funkcijų, tokių kaip šviesos diodai, garsiakalbis ar jutikliai?

Idėjos patobulinti kodą

  • Ar galėtumėte padėti savo robotui susidoroti su nežinomais pranešimais naudodami bandymo/išskyrus kodą?
  • Matematika, naudojama apskaičiuojant kairę ir dešinę vertes iš vairasvirtės, nesuteikia mums visų verčių diapazono (roboto pavara gali priimti skaičių iki 1023). Ar galite redaguoti šį kodą, kad gautumėte geresnį diapazoną?
  • Yra ir kitų metodų, kaip sumaišyti vairasvirtės vertes - ar galite sugalvoti geresnį būdą tai padaryti?

Rekomenduojamas: