Turinys:
- Prekės
- 1 žingsnis: Roboto nustatymas
- 2 žingsnis: vairasvirtės nustatymas
- 3 žingsnis: vairasvirtės verčių tikrinimas
- 4 žingsnis: X ir Y kintamųjų koregavimas
- 5 žingsnis: X ir Y konvertavimas į kairiojo ir dešiniojo variklių vertes
- 6 veiksmas: verčių siuntimas kaip radijo pranešimai
- 7 veiksmas: pranešimų gavimas iš jūsų roboto
- 8 veiksmas: gaunamų pranešimų naudojimas roboto varikliams valdyti
- 9 veiksmas: mygtukų naudojimas - papildomų pranešimų gavimas
- 10 veiksmas: papildomų pranešimų siuntimas naudojant valdiklio mygtukus
- 11 veiksmas: kiti veiksmai
Video: „Micro: Bit Robot & Joystick“programavimas: bitų valdiklis su „MicroPython“: 11 žingsnių
2024 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2024-01-30 10:46
„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.
Gaukite roboto variklio bandymo kodo kopiją čia:
Jei nesate įpratę prie „Github“, tai gali būti neintuityvu! Du paprasti būdai gauti šį kodą:
- Išsaugokite „Raw“failą savo kompiuteryje, tada įkelkite jį į „Mu“:
- Nukopijuokite ir įklijuokite visą nurodytą kodą į naują failą „Mu“.
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:
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“.
Tai neveiks, kol nebus prijungtas „micro: bit“
Atidarę REPL, paspauskite „micro: bit“gale esantį atstatymo mygtuką.
Turėtumėte matyti, kad kai kurios vertės ekrane bus atspausdintos:
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ę.
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:
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:
„Arduino Nano“-MMA8452Q 3 ašių 12 bitų/8 bitų skaitmeninio akselerometro pamoka: 4 žingsniai
„Arduino Nano“-MMA8452Q 3 ašių 12 bitų/8 bitų skaitmeninio pagreičio matuoklio pamoka: „MMA8452Q“yra protingas, mažos galios, trijų ašių, talpinis, mikromašinis pagreičio matuoklis, turintis 12 bitų skiriamąją gebą. Lanksčios vartotojo programuojamos parinktys pateikiamos naudojant pagreičio matuoklio įterptas funkcijas, kurias galima sukonfigūruoti dviem pertraukomis
Raspberry Pi MMA8452Q 3 ašių 12 bitų/8 bitų skaitmeninio akselerometro „Python“vadovėlis: 4 žingsniai
„Raspberry Pi MMA8452Q“3 ašių 12 bitų/8 bitų skaitmeninio akselerometro „Python“vadovėlis: „MMA8452Q“yra protingas, mažos galios, trijų ašių, talpinis, mikromechaninis pagreičio matuoklis, turintis 12 bitų skiriamąją gebą. Lanksčios vartotojo programuojamos parinktys pateikiamos naudojant pagreičio matuoklio įterptas funkcijas, kurias galima sukonfigūruoti dviem pertraukomis
„Arduino“pagrindu sukurtas „pasidaryk pats“žaidimų valdiklis - „Arduino PS2“žaidimų valdiklis - Žaidimas „Tekken“naudojant „pasidaryk pats“„Arduino“žaidimų pultą: 7 žingsniai
„Arduino“pagrindu sukurtas „pasidaryk pats“žaidimų valdiklis | „Arduino PS2“žaidimų valdiklis | Žaidimas „Tekken“naudojant „pasidaryk pats“„Arduino Gamepad“: Sveiki, vaikinai, žaisti žaidimus visada smagu, tačiau žaisti su savo „pasidaryk pats“žaidimo valdikliu yra smagiau. Taigi, mes padarysime žaidimų valdiklį naudodami „arduino pro micro“šioje instrukcijoje
Raspberry Pi MMA8452Q 3 ašių 12 bitų/8 bitų skaitmeninis pagreičio matuoklis „Java“pamoka: 4 žingsniai
„Raspberry Pi MMA8452Q“3 ašių 12 bitų/8 bitų skaitmeninis pagreičio matuoklis „Java“pamoka: „MMA8452Q“yra protingas, mažos galios, trijų ašių, talpinis, mikromechaninis pagreičio matuoklis, turintis 12 bitų skiriamąją gebą. Lanksčios vartotojo programuojamos parinktys pateikiamos naudojant pagreičio matuoklio įterptas funkcijas, kurias galima sukonfigūruoti dviem pertraukomis
„Pasidaryk pats“„MusiLED“, muzikos sinchronizuoti šviesos diodai su vienu paspaudimu „Windows“ir „Linux“programa (32 bitų ir 64 bitų). Lengva atkurti, paprasta naudoti, lengva perkelti: 3 žingsniai
Pasidaryk pats „MusiLED“, muzikos sinchronizuoti šviesos diodai su vienu paspaudimu „Windows“ir „Linux“programa (32 bitų ir 64 bitų). Lengva atkurti, paprasta naudoti, lengva perkelti. Šis projektas padės jums prijungti 18 šviesos diodų (6 raudonos + 6 mėlynos + 6 geltonos) prie „Arduino“plokštės ir išanalizuoti kompiuterio garso plokštės realaus laiko signalus ir perduoti juos šviesos diodai, kad jie užsidegtų pagal ritmo efektus (Snare, High Hat, Kick)