Përmbajtje:

Programimi i një mikro: Bit Robot & Joystick: Bit Controller Me MicroPython: 11 hapa
Programimi i një mikro: Bit Robot & Joystick: Bit Controller Me MicroPython: 11 hapa

Video: Programimi i një mikro: Bit Robot & Joystick: Bit Controller Me MicroPython: 11 hapa

Video: Programimi i një mikro: Bit Robot & Joystick: Bit Controller Me MicroPython: 11 hapa
Video: Correct way to insert CD in PS4 || Khaby Lame || 2024, Nëntor
Anonim
Programimi i një mikro: Bit Robot & Joystick: Bit Controller With MicroPython
Programimi i një mikro: Bit Robot & Joystick: Bit Controller With MicroPython

Për Robocamp 2019, kampin tonë veror të robotikës, të rinjtë e moshës 10-13 vjeç po bashkojnë, programojnë dhe ndërtojnë një mikrob të BBC-së: ‘robot kundër peshës’ i bazuar në bit, si dhe programojnë një mikro: bit për t’u përdorur si telekomandë.

Nëse jeni aktualisht në Robocamp, kaloni në Hapin 3, pasi ne kemi bërë dy hapat e parë si grup

Ky është një udhëzues hap pas hapi për të komunikuar një robot mikro: bit me një kontrollues levë: bit.

Nuk merr rrugën më të shpejtë për të funksionuar gjithçka, por i provon gjërat në copa të vogla në mënyrë që të mund të testoni kodin ndërsa jeni duke shkuar, të vendosni vulën tuaj mbi të dhe të kuptoni pse po i bëjmë gjërat që po bëjmë !

Për këtë aktivitet, ne po përdorim robotin tonë të personalizuar, por do të punojë me çdo robot duke përdorur një shofer motorik të ngjashëm, siç është një L9110s.

Skedarët e projektimit për robotin tonë mund të gjenden këtu:

Ky udhëzues është shkruar për fillestarët, por nëse nuk keni përdorur më parë një mikro: bit me MicroPython, ju rekomandojmë që të provoni një program më të thjeshtë, siç është simboli ynë i emrit Instructable: https://www.instructables.com/id/Felt -Mikrobit-Nam…

Furnizimet

2x mikro BBC: pak

Roboti që punon me një mikro të BBC: bit (shiko shpjegimin më lart)

levë: kontrollues bit (e kemi marrë tonën nga Cool Components)

Hapi 1: Konfigurimi i robotëve

Ju keni disa mundësi për të shkruar kodin MicroPython për mikro tuaj: bit:

  • Mu, të cilën mund ta shkarkoni dhe instaloni nga këtu:
  • Redaktori online, të cilin mund ta gjeni këtu:

Këto udhëzime supozojnë se jeni duke përdorur Mu

Hapni Mu dhe futni mikro: bitin në kompjuterin tuaj. Mu duhet të pranojë që jeni duke përdorur një mikro: bit dhe zgjidhni mikro: bit 'Mode', por nëse jo, ndryshojeni atë me dorë.

zgjidhni mënyrën
zgjidhni mënyrën

Merrni një kopje të kodit të testit të motorit robot nga këtu:

Nëse nuk jeni mësuar me Github, mund të jetë jo intuitiv! Dy mënyra të thjeshta për të marrë këtë kod janë:

  1. Ruani skedarin Raw në kompjuterin tuaj, pastaj ngarkojeni në Mu:
  2. Kopjoni dhe ngjisni të gjithë kodin e dhënë në një skedar të ri në Mu.
ruani skedarin e papërpunuar
ruani skedarin e papërpunuar

Tani klikoni butonin 'Flash' nga shiriti i veglave të Mu, për të dërguar kodin tuaj të ri në mikro: bit.

Kjo nuk do të funksionojë nëse mikro: bit nuk është i kyçur në prizë

Drita e verdhë në anën e pasme të mikro: bit do të fillojë të ndizet. Kur të ketë mbaruar, kodi juaj është transferuar.

P SRCAKTIMI I UDHCTZIMEVE MOTORIKE

Ky program do të ndezë motorët në drejtime të ndryshme kur shtypni butonin 'A' në mikro: bit.

Ajo që dëshironi të ndodhë është:

  • Kur shfaqet 'A', lini motorin përpara
  • Kur shfaqet 'B', lini motorin prapa
  • Kur shfaqet 'C', motori djathtas kalon
  • Kur shfaqet 'D', motori djathtas mbrapsht

Kjo ndoshta nuk do të jetë kështu, pasi varet nga mënyra se si e keni lidhur tela robotin tuaj!

Në krye të kodit, do të gjeni një listë variablash, të cilat përcaktojnë se cila pin në mikro: bit kontrollon drejtimin e motorit.

Nëse jeni duke përdorur një nga robotët (skedarët) tanë, ndërroni emrat e ndryshoreve për ta bërë robotin të lëvizë në drejtimet e sakta:

ndërroni ndryshoret e pinit
ndërroni ndryshoret e pinit

Nëse jeni duke përdorur një robot tuajin, kontrolloni me cilat kunja është lidhur shoferi i motorit para se të redaktoni kodin.

TESTIMI I DRIVE

Tani kontrolloni se si lëviz roboti juaj duke zëvendësuar kodin e testit në lakin kryesor me një kod tuajin.

Ju i thoni robotit të drejtojë duke thirrur funksionin drive (). Kjo merr dy argumente - një vlerë për motorin e majtë dhe një vlerë për motorët e djathtë, midis 0 (fikur) dhe 1023 (shpejtësia maksimale).

Duke thirrur njësinë (500, 500), për shembull, ju po u thoni të dy motorëve të ndizen, në drejtimin përpara, me rreth gjysmën e shpejtësisë.

Provoni disa opsione për të kuptuar se sa drejt lëviz dhe sa mirë kthehet.

Këshillë: testet motorike ishin brenda një laku të vërtetë, dhe një deklarate nëse - motorët nuk do të rrotulloheshin derisa të shtypni butonin A në mikro: bit, dhe po kontrollohet përgjithmonë nëse keni shtypur butonin A.

Këshillë: motorët nuk do të fiken derisa t'i tregoni! Ata gjithmonë do të vazhdojnë të bëjnë udhëzimet e tyre të fundit.

OPSIONALE: P IRMIRSIMI I SHOFERIT N IN LIN T DREJT

Nëse roboti juaj nuk do të vozisë në vijë të drejtë, njëri nga motorët tuaj mund të kthehet më shpejt se tjetri.

Pasi të kontrolloni që nuk ka asgjë që ndalon fizikisht rrotën të rrotullohet lirshëm, mund të redaktoni kodin në funksionin e drejtimit për të zvogëluar shpejtësinë e motorit më të shpejtë.

Shkoni lart për të gjetur përkufizimin e funksionit të diskut dhe shikoni dy udhëzimet kryesore:

def drive (L, R):

# Më poshtë është një rregullim për të korrigjuar mospërputhjen e shpejtësisë së motorit L = int (L*1) R = int (R*1)

Këto dy rreshta aktualisht marrin vlerën e L dhe R, shumëzojini ato me 1, pastaj sigurohuni që janë akoma numra të plotë (int).

Për shembull, nëse motori juaj i majtë është më i shpejtë, ndryshoni *1 në vijën e tij në *0.9 dhe shikoni nëse kjo përmirëson gjërat.

Ju nuk do të jeni në gjendje ta bëni atë të përsosur, por mund të vazhdoni të përshtateni derisa të lëvizë drejt.

VENDOSJA E RADIOS

Tani vendosni radion, duke shtuar rreshtat e mëposhtëm në krye të kodit tuaj:

radio e importit

radio.config (channel = 7, group = 0, queue = 1) radio.on ()

Kjo do të lejojë që roboti juaj të marrë udhëzime nga një mikro: bit, por për momentin do të marrë udhëzime nga çdo mikro: bit tjetër.

Kjo ndodh sepse kanali 7 dhe grupi 0 janë kanalet e paracaktuar.

Ndryshoni këta numra, duke zgjedhur një kanal midis 0-82 dhe një grup midis 0-255. Tani mikro: bit juaj do të marrë udhëzime vetëm nga të tjerët me të njëjtin informacion konfigurimi.

radhë = 1 nënkupton mikro: biti do të mbajë vetëm një mesazh në hyrje në të njëjtën kohë - kjo jep një kohë përgjigjeje pak më të shpejtë sesa parazgjedhja, e cila është 3.

Tani ju duhet të redaktoni kodin tuaj të lakut kryesor, në vend që të ekzekutoni udhëzimet kur shtypni një buton, të prisni një mesazh radio në hyrje dhe të përgjigjeni në mënyrë të përshtatshme.

Provoni kodin e mëposhtëm si provë (nuk do të bëjë asgjë derisa të keni vendosur levën në Hapin 2):

ndërsa e vërtetë:

mesazh = radio. marrim () nëse mesazhi == 'përpara': makinë (500, 500)

Hapi 2: Vendosja e xhojstikut

Shkëputni mikro -bitin e robotit tuaj dhe lidhni mikro -bitin e levës tuaj

Merrni një kopje të kodit të konfigurimit të levës nga këtu:

Vendosni radion duke përdorur të njëjtin konfigurim (numrin e kanalit dhe grupit) si për robotin - kjo do t'i lejojë të dy të komunikojnë me njëri -tjetrin.

Në fund të programit, filloni lakin tuaj kryesor:

ndërsa e vërtetë:

nëse butoni_a.presohej (): radio.dërgon ('përpara')

Ky kod nuk përdor akoma levën: bit. Përdor butonin A në mikro: bit për të dërguar një mesazh.

Sigurohuni që edhe roboti juaj edhe mikro kontrolluesi juaj: bitët kanë fuqi, pastaj shtypni butonin për të dërguar mesazhin tuaj.

Nëse mesazhi është marrë me sukses, dhe roboti juaj lëviz… mirë! Ju keni mbaruar me udhëzimet e konfigurimit.

K. SHILLA PSHR ZGJIDHJEN E PROBLEMEVE

Nëse merrni një mesazh gabimi në mikro kontrolluesin tuaj: bit … korrigjoni kodin tuaj të kontrolluesit

Nëse merrni një mesazh gabimi në mikro robot: bit … mesazhi juaj radio u dërgua me sukses! Por roboti nuk mund ta kuptojë atë, kështu që kontrolloni që mesazhi që keni dërguar dhe mesazhi që i keni thënë robotit të dëgjojë për ndeshje.

Nëse asgjë nuk ndodh fare

  • Sigurohuni që keni ndezur kodin e saktë në secilën mikro: bit - është e lehtë të ndezësh aksidentalisht atë të gabuar!
  • Sigurohuni që numrat e kanalit dhe grupit tuaj të përputhen në secilin mikro: bit

Hapi 3: Kontrollimi i vlerave të xhojstikut

Disa hapa të tjerë po përdorin të gjithë kodin e kontrolluesit

Para se të përdorni levën në kontrolluesin tuaj, duhet të dini se çfarë lloj vlerash merrni kur shtypni shkopin.

Zëvendësoni lakin tuaj kryesor me kodin e mëposhtëm:

ndërsa e vërtetë:

levë = joystick_push () print (levë) gjumë (500)

Shpejtoni këtë kod në mikro: bitin tuaj, pastaj klikoni butonin REPL në shiritin e veglave të Mu. Kjo do të hapë një terminal në fund të redaktorit, i cili ju jep një lidhje në kohë reale me mikro: bit.

hapni REPL -në
hapni REPL -në

Kjo nuk do të funksionojë nëse mikro: bit nuk është i kyçur në prizë

Me REPL të hapur, shtypni butonin e rivendosjes në pjesën e pasme të mikro: bitit tuaj.

Imazhi
Imazhi

Duhet të shihni që disa vlera të 'printuara' në ekranin tuaj:

vlerat në terminal
vlerat në terminal

Shtyjeni shkopin e levës dhe shikoni se çfarë ndodh me numrat.

Shënoni vlerat e dhëna kur levë është në pozicionin qendror - në rastin tim (518, 523).

Klikoni përsëri butonin REPL në shiritin e veglave të Mu për ta mbyllur atë - nuk do të jeni në gjendje të ndizni kodin e ri në mikro: bit ndërsa është i hapur.

Hapi 4: Rregullimi i Variablave X dhe Y

Ju dëshironi të ndryshoni vlerat e dhëna nga funksioni i levës, në mënyrë që:

  • në qendër është zero
  • lart është pozitiv
  • poshtë është negative.

Kjo përputhet me udhëzimet që i duhen robotit - një numër pozitiv për të ecur përpara dhe një numër negativ për të ecur prapa.

Shikoni numrat që keni marrë në hapin e fundit. Numri i parë është x, dhe numri i dytë është y.

Ndryshoni përkufizimin joystick_push () që është tashmë në program, në minus vlerat tuaja nga origjinali:

def joystick_push ():

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

Përdorni numrat tuaj, ata mund të jenë të ndryshëm nga të miat

Flashoni kodin tuaj të ri, hapni REPL, shtypni butonin e rivendosjes së mikro: bitit dhe kontrolloni vlerat tuaja.

A po merrni (0, 0)?

Hapi 5: Shndërrimi i X dhe Y në vlera për motorët e majtë dhe të djathtë

Për momentin, ky levë nuk do të jetë shumë i dobishëm për të drejtuar një robot. Të shtyrë përpara gjatë gjithë rrugës, do të merrni një vlerë të tillë si (0, 500).

Nëse i jepni këto numra robotit, ai do të ndizte motorin e djathtë, por jo atë të majtë, gjë që nuk është ajo që dëshironi të ndodhë!

Ky diagram tregon se çfarë ndodh me vlerat x dhe y kur lëvizni levën dhe çfarë duam që roboti të bëjë kur lëvizni levën.

diagramë
diagramë

Ju duhet të përdorni disa matematikë për të përzier vlerat x dhe y, për t'ju dhënë diçka më të dobishme.

n

MATEMAT

Le të fillojmë duke e shtyrë levën deri në fund.

Një shembull i vlerave që mund të merrni është:

x = 0

y = 500

Për të qenë i dobishëm për robotin, dëshironi të merrni vlera si këto:

majtas = 500

djathtas = 500

Le të përpiqemi të shtojmë x dhe y në mënyra të ndryshme për të parë se çfarë numrash marrim:

x + y = 0 + 500 = 500

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

Tani le të shohim se çfarë ndodh nëse e shtyjmë levën deri në të djathtë.

Një shembull i vlerave që mund të merrni është:

x = 500

y = 0

Për ta bërë robotin të kthehet djathtas, dëshironi që motori i majtë të lëvizë përpara dhe motori i djathtë të lëvizë prapa:

majtas = 500

djathtas = -500

Le të provojmë përsëri formulën tonë:

x + y = 500 + 0 = 500

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

Krahasoni dy grupet e formulës për të kuptuar se cili opsion do t'ju japë vlerën e duhur të majtë dhe cili opsion do t'ju japë vlerën e duhur të duhur.

Provojeni me disa nga vlerat që merrni nga levoja juaj, për t'u siguruar që formula që zgjidhni të funksionojë gjatë gjithë kohës.

n

ZGJERIMI I FUNKSIONIT JOYSTICK

Zgjero dhe redakto funksionin e levës për të bërë dy ndryshore të reja për të majtën dhe të djathtën dhe për t'i kthyer ato vlera në vend të x dhe y:

def joystick_push ():

x = pin0.read_analog () - 518 y = pin1.read_analog () - 523 majtas = djathtas = kthehem majtas, djathtas

Flashoni kodin tuaj të ri, hapni REPL, shtypni butonin e rivendosjes së mikro: bitit dhe kontrolloni vlerat tuaja.

A i merrni vlerat që prisni?

Nëse keni nevojë për më shumë ndihmë, shikoni kodin tonë shembull këtu:

Hapi 6: Dërgimi i vlerave si mesazhe radio

Tani keni disa vlera gati për t'i dërguar robotit tuaj.

Ndryshoni lakun tuaj kryesor, në mënyrë që të kontrollojë vlerat e levës, por pastaj në vend që t'i printojë vlerat, i bën gati për t'i dërguar si një mesazh radio.

ndërsa e vërtetë:

levë = joystick_push () mesazh = str (levë [0]) + "" + str (levë [1])

Kjo nuk do të dërgojë mesazhin akoma!

Çfarë po ndodh në këtë linjë të re të kodit?

  • levë [0] do të thotë pjesa e parë e informacionit që del nga funksioni i levës (majtas)
  • levë [1] është informacioni i radhës (djathtas)
  • str () i konverton të dy këta numra në formatin e vargut (tekst në vend të numrave) - kjo është e nevojshme për të qenë në gjendje të dërgoni informacionin përmes radios.

Ju do të jeni mësuar të shihni + në kuptimin e shtimit - ai mund të shtojë numra së bashku dhe të bashkojë vargjet, që do të thotë se do t'i bashkojë dy pjesët e informacionit së bashku.

Shembull:

150 + 100 = 250

str (150) + str (100) = 150100

Pra, bashkimi do t'i bashkojë vlerat tuaja të majta dhe të djathta së bashku.

Për të detyruar një ndarje midis dy pjesëve të informacionit (në mënyrë që roboti të dijë se ato janë dy pjesë informacioni), lidhni një varg shtesë midis tyre duke përdorur "". Shenjat e të folurit rreth hapësirës do të thotë se tashmë është një varg.

Së fundi, zgjasni kodin tuaj për të dërguar këtë mesazh të krijuar rishtas në radio:

radio. dërgoni (mesazh)

gjumë (10)

Gjumi ngadalëson dërgimin e mesazheve në mënyrë që mikro: biti të mos mbingarkohet me shumë informacion!

Ndizni këtë kod në mikro kontrolluesin tuaj: bit dhe korrigjoni çdo gabim para se të kaloni në hapin tjetër

Hapi 7: Marrja e Mesazheve në Robotin tuaj

Kthehuni te kodi juaj i robotit që nga fillimi - mos harroni të shkëputni mikro kontrolluesin tuaj: bit në mënyrë që të mos e ndezni aksidentalisht kodin e robotit në të

Shkoni poshtë në lakin tuaj kryesor - hiqni kodin e testimit dhe shtoni këtë në vend:

ndërsa e vërtetë:

mesazh = radio. marr () print (mesazh) gjumë (100)

Kjo vendos një ndryshore të barabartë me mesazhin në hyrje dhe printon mesazhin në REPL - për të kontrolluar që mesazhet po vijnë siç pritej.

Ndizni kodin tuaj të ri, të lidhur me REPL, pastaj shtyjeni levën.

Ju duhet të merrni diçka si kjo:

Vlerat REPL
Vlerat REPL

K. SHILLA PSHR ZGJIDHJEN E PROBLEMEVE

Nëse merrni një mesazh gabimi në mikro kontrolluesin tuaj: bit … korrigjoni kodin tuaj të kontrolluesit

Nëse merrni një mesazh gabimi në mikro robot: bit … mesazhi juaj radio u dërgua me sukses! Por roboti nuk mund ta kuptojë atë, kështu që kontrolloni që mesazhi që keni dërguar dhe mesazhi që i keni thënë robotit të dëgjojë për ndeshje.

Nëse asgjë nuk ndodh fare

  • Sigurohuni që keni ndezur kodin e saktë në secilën mikro: bit - është e lehtë të ndezni aksidentalisht atë të gabuar!
  • Sigurohuni që numrat e kanalit dhe grupit tuaj të përputhen në secilin mikro: bit

Hapi 8: Përdorimi i mesazheve hyrëse për të kontrolluar motorët e robotit

Tani po merrni dy numra që dërgohen në radio si një varg.

Ju duhet ta ndani këtë mesazh në dy vargje, pastaj t'i ktheni ato përsëri në numra dhe ta kaloni atë në funksionin e diskut. Shumë po ndodhin menjëherë!

Para se ta bëni këtë, duhet të kontrolloni që mesazhi që po merrni është në formatin e duhur.

Nëse nuk po dërgohen mesazhe, ju do të merrni "Asnjë" në vend. Nëse përpiqeni ta ndani këtë, do të merrni një mesazh gabimi.

ndërsa e vërtetë:

mesazh = radio.merr () nëse mesazhi nuk është Asnjë: mesazh = mesazh.split () disku (int (mesazhi [0]), int (mesazhi [1]))

Cfare po ndodh ketu?

  • Kodi i ri do të funksionojë nëse mesazhi është diçka tjetër përveç 'Asnjë'.
  • message.split () kontrollon për një hapësirë në mesazh (të cilën e shtuam në hapin e fundit), dhe e përdor këtë për ta ndarë mesazhin në dysh.
  • int (mesazhi [0]), int (mesazhi [1]) bën të kundërtën e asaj që bëmë në hapin e mëparshëm - merr secilën pjesë të informacionit individualisht dhe e konverton atë në një numër të plotë (një numër i plotë).
  • int (mesazhi [0]) përdoret si vlerë për motorin e majtë në funksionin e drejtimit, dhe int (mesazhi [1]) përdoret si vlerë për motorin e djathtë.

Kontrolloni që funksionon - a kthehen motorët kur shtyni levën?

Nëse jo - koha për disa korrigjime!

Nëse po, fantastike! Ju keni një robot të telekomandës që punon!

Kaloni pak kohë duke praktikuar me robotin tuaj para se të kaloni në hapin tjetër. A ecën ashtu siç e prisni?

Hapat e ardhshëm do t'ju tregojnë se si të përdorni butonat në levë për të shtuar funksionalitet shtesë në robotin tuaj

Nëse dëshironi të shihni versionin tonë të këtij kodi deri më tani:

  • Robot:
  • Kontrolluesi:

Hapi 9: Përdorimi i butonave - Marrja e mesazheve shtesë

Për momentin, kodi juaj do të përpiqet të ndajë çdo mesazh që nuk është Asnjë. Kjo do të thotë që nëse merr, për shembull, 'përshëndetje', atëherë do të marrësh një mesazh gabimi.

Për të lejuar që mikro: biti juaj të interpretojë mesazhe të tjera, do të duhet të kontrollojë secilin mesazh të pritur së pari, pastaj ta ndajë mesazhin vetëm nëse nuk i është thënë të bëjë asgjë tjetër me të.

Zgjero kodin tënd kështu:

nëse mesazhi nuk është Asnjë:

nëse mesazhi == 'përshëndetje': display.show (Image. HAPPY) elif mesazh == 'duck': display.show (Image. DUCK) tjetër: mesazh = message.split () drive (int (mesazhi [0]), int (mesazhi [1]))

Së pari, do të kontrollojë nëse ka marrë mesazhin 'përshëndetje'. Nëse ka, do të shfaqë një imazh të lumtur, pastaj kthehuni në krye të lakut dhe kontrolloni për mesazhin tjetër.

Nëse mesazhi nuk është përshëndetje, ai do të kontrollojë nëse mesazhi është "rosë".

Nëse mesazhi nuk është as 'përshëndetje' ose 'rosë', ai do të bëjë gjënë e fundit në listë, e cila ndan mesazhin dhe ndez motorët. Nuk do të përpiqet ta ndajë mesazhin nëse ka marrë 'përshëndetje' ose 'rosë', që do të thotë se nuk do të merrni një mesazh gabimi nga asnjë prej këtyre dy mesazheve.

Shenja e barabartë e dyfishtë është e rëndësishme - do të thotë 'është e barabartë me', në krahasim me një shenjë të vetme të barabartë, e cila po vendos diçka (pra mesazhi = 'përshëndetje' do të thotë që ne po e vendosim ndryshoren në 'përshëndetje', mesazh == 'përshëndetje' do të thotë që ne po pyesim nëse mesazhi është i barabartë me 'përshëndetje').

Provojeni tani me vetëm dy opsione, për ta testuar - mund të shtoni sa më shumë mesazhe të tjera që dëshironi më vonë.

Lidhja me kodin e punës:

Hapi 10: Dërgimi i mesazheve shtesë duke përdorur butonat e kontrolluesit

Shkëputni mikro -bitin e robotit tuaj dhe lidhni mikro -bitin e levës tuaj

Kthehuni te kodi i kontrolluesit tuaj për të redaktuar.

Ngjashëm me kodin robot, ne duam që kontrolluesi të kontrollojë nëse po përpiqeni të dërgoni ndonjë mesazh tjetër, para se të dërgoni vlerat e levës.

Në krye të lakut, ne ende duam që ajo të kontrollojë vlerat aktuale të levës, por ne gjithashtu duam që ajo të kontrollojë nëse një buton është duke u shtypur aktualisht:

ndërsa e vërtetë:

joystick = joystick_push () butoni = button_press ()

button_press () kthen një vlerë A, B, C, D, E ose F në varësi të cilit buton po shtypet aktualisht (nëse asgjë nuk shtypet, ai kthen Asnjë).

Tani mund të bëjmë një deklaratë if-elif-else, siç bëmë për kodin e robotit-duke përdorur dy butona dhe duke dërguar vlerën e levës nëse asnjë buton nuk është duke u shtypur.

nëse butoni == 'A':

radio.send ('përshëndetje') fle (500) butoni elif == 'B': radio.send ('rosë') fle (500) tjetër: mesazh = str (levë [0]) + "" + str (levë [1]) radio. Dërgoni (mesazh) gjumë (10)

Kur shtypet një buton, dërgoni një nga mesazhet që i keni thënë robotit që të shikojë në hapin e mëparshëm.

Mesazhi do të dërgohet sa herë që shtypet butoni, dhe kompjuterët janë shumë më të shpejtë se njerëzit! Kështu që mund të dërgojë mesazhin shumë herë para se të keni arritur të hiqni gishtin nga butoni.

Gjumi pas dërgimit të mesazhit e ngadalëson atë, në mënyrë që të mos e kontrollojë përsëri butonin aq shpejt - provoni disa numra këtu për të marrë kohën e përsosur për ju - shumë ngadalë dhe nuk do të përgjigjet, gjithashtu shpejt dhe roboti juaj do të marrë aq shumë mesazhe me butona saqë mund të ndalojë së përgjigjuri në levë!

Funksionon?

Nëse po merrni mesazhe gabimi, mendoni me kujdes atë që sapo keni ndryshuar dhe çfarë po ndodh.

Nëse merrni një gabim në robot kur shtypni një buton në kontrolluesin tuaj - ju e dini që mesazhi po përhapet, por po ngatërron robotin. Kontrolloni që mesazhi që keni dërguar dhe mesazhi që i keni thënë robotit të kërkojë janë të njëjta.

Lidhja me kodin e punës:

Hapi 11: Hapat e ardhshëm

Tani keni njohuritë që ju nevojiten për të punuar me motorët e robotit tuaj, dhe me levën tuaj: kontrollues bit

Përdoreni këtë njohuri për të përmirësuar dy programet dhe për t'i bërë ato tuajat. Disa ide më poshtë!

Ju keni gjashtë butona në kontrolluesin tuaj! Çfarë doni që ata të bëjnë?

  • Po programimi i një rutine vallëzimi që roboti juaj të bëjë me komandë? Shkruani një algoritëm të komandave drive (), të ndara me komandat sleep ()!
  • Dëshironi të ndryshoni drejtimin në të cilin lëviz roboti në mënyrë që të mund të lëvizë me lehtësi me kokë poshtë? Mendoni për vlerat x dhe y të levës tuaj. Çfarë përfaqësojnë ato dhe si mund t'i manipuloni ato?
  • A ka roboti juaj (ose mund të shtoni!) Veçori shtesë si LED, një altoparlant ose sensorë?

Idetë për të përmirësuar kodin

  • A mund ta ndihmoni robotin tuaj të përballojë mesazhe të panjohura duke përdorur provën/përveç kodit?
  • Matematika e përdorur për të llogaritur vlerat e majta dhe të djathta nga levë nuk na japin gamën e plotë të vlerave (makina e robotit mund të pranojë një numër deri në 1023). A mund ta redaktoni këtë kod për të marrë një gamë më të mirë?
  • Ka metoda të tjera të përzierjes së vlerave të levës - a mund të gjeni një mënyrë më të mirë për ta bërë atë?

Recommended: