Satura rādītājs:

Micro: Bit Robot & Joystick programmēšana: Bit Controller ar MicroPython: 11 soļi
Micro: Bit Robot & Joystick programmēšana: Bit Controller ar MicroPython: 11 soļi

Video: Micro: Bit Robot & Joystick programmēšana: Bit Controller ar MicroPython: 11 soļi

Video: Micro: Bit Robot & Joystick programmēšana: Bit Controller ar MicroPython: 11 soļi
Video: Как заставить ЛЮБОЙ сервопривод вращаться на 360° – ЛЕГКО и БЫСТРО 2024, Novembris
Anonim
Micro: Bit Robot & Joystick programmēšana: Bit Controller ar MicroPython
Micro: Bit Robot & Joystick programmēšana: Bit Controller ar MicroPython

Robocamp 2019, mūsu vasaras robotikas nometnē, jaunieši vecumā no 10 līdz 13 gadiem lodē, programmē un būvē BBC mikro: uz bāzētu “pretsvara robotu”, kā arī programmē mikro: bitu, ko izmantot kā tālvadības pulti.

Ja jūs pašlaik atrodaties Robocamp, pārejiet uz 3. darbību, jo mēs esam veikuši pirmos divus soļus kā grupa

Šis ir soli pa solim ceļvedis, kā panākt, lai micro: bit robots sazinātos ar kursorsviru: bitu kontrolieri.

Tas neņem ātrāko ceļu, lai viss darbotos, bet izmēģina lietas mazos gabalos, lai jūs varētu pārbaudīt kodu, ejot, uzlikt tam savu zīmogu un saprast, kāpēc mēs darām to, ko darām !

Šai darbībai mēs izmantojam savu pielāgoto robotu, taču tas darbosies ar jebkuru robotu, izmantojot līdzīgu motora draiveri, piemēram, L9110.

Mūsu robota dizaina failus var atrast šeit:

Šī rokasgrāmata ir paredzēta iesācējiem, bet, ja jūs nekad iepriekš neesat izmantojis micro: bit ar MicroPython, iesakām vispirms izmēģināt vienkāršāku programmu, piemēram, mūsu vārda emblēmu Instructable: https://www.instructables.com/id/Felt -Microbit-Nam…

Piegādes

2x BBC mikro: bits

Robots, kas darbojas ar BBC mikro: bitu (sk. Skaidrojumu iepriekš)

kursorsvira: bitu kontrolieris (mēs to ieguvām no Cool Components)

1. darbība: robota iestatīšana

Jums ir dažas iespējas, kā rakstīt MicroPython kodu savam mikro: bit:

  • Mu, kuru varat lejupielādēt un instalēt šeit:
  • Tiešsaistes redaktors, kuru varat atrast šeit:

Šajos norādījumos tiek pieņemts, ka izmantojat Mu

Atveriet Mu un pievienojiet savu micro: bit datoram. Mu vajadzētu atpazīt, ka izmantojat micro: bit, un atlasīt micro: bit 'Mode', bet, ja tā nenotiek, mainiet to manuāli.

izvēlieties režīmu
izvēlieties režīmu

Iegūstiet robota motora testa koda kopiju šeit:

Ja neesat pieradis pie Github, tas var būt neintuitīvs! Ir divi vienkārši veidi, kā iegūt šo kodu:

  1. Saglabājiet neapstrādāto failu savā datorā un pēc tam ielādējiet to programmā Mu:
  2. Kopējiet un ielīmējiet visu norādīto kodu jaunā failā mapē Mu.
saglabāt neapstrādātu failu
saglabāt neapstrādātu failu

Tagad noklikšķiniet uz "Flash" pogas Mu rīkjoslā, lai nosūtītu jauno kodu uz micro: bit.

Tas nedarbosies, ja nebūs pievienots micro: bit

Dzeltenā gaisma mikro: bita aizmugurē sāks mirgot. Kad tas ir pabeigts, jūsu kods ir pārsūtīts.

MOTORA VIRZIENU IESTATĪŠANA

Šī programma ieslēgs motorus dažādos virzienos, nospiežot mikro: bit pogu "A".

Tas, ko vēlaties, ir:

  • Kad tiek parādīts “A”, kreisais motors virzās uz priekšu
  • Kad tiek parādīts “B”, kreiso motoru atgrieziet atpakaļ
  • Kad tiek parādīts “C”, labais motors virzās uz priekšu
  • Kad tiek parādīts “D”, labais motors atpakaļ

Visticamāk, tas tā nebūs, jo tas ir atkarīgs no tā, kā esat pievienojis savu robotu!

Koda augšdaļā jūs atradīsit mainīgo sarakstu, kas nosaka, kura piespraude mikro: bit kontrolē motora virzienu.

Ja izmantojat kādu no mūsu robotiem (failiem), mainiet mainīgo nosaukumus, lai robots kustētos pareizajos virzienos:

mijmaiņas tapu mainīgie
mijmaiņas tapu mainīgie

Ja izmantojat savu robotu, pirms koda rediģēšanas pārbaudiet, ar kurām tapām ir pievienots motora draiveris.

DZIŅAS TESTĒŠANA

Tagad pārbaudiet, kā darbojas jūsu robots, aizstājot testa kodu galvenajā cilpā ar kādu savu kodu.

Jūs sakāt robotam braukt, izsaucot funkciju drive (). Tam nepieciešami divi argumenti - vērtība kreisajam motoram un vērtība labajam motoram, no 0 (izslēgta) līdz 1023 (maksimālais ātrums).

Piemēram, zvanot uz disku (500, 500), jūs sakāt, ka abiem motoriem jāieslēdzas uz priekšu ar aptuveni pusi ātruma.

Izmēģiniet dažas iespējas, lai sajustu, cik taisni tas brauc un cik labi tas griežas.

Padoms: motora testi bija gan patiesā cilpa, gan paziņojums, ja paziņojums - motori negriezīsies, kamēr nenospiedīsit pogu micro: bit, un tas uz visiem laikiem pārbauda, vai esat nospiedis pogu A.

Padoms: motori neizslēgsies, kamēr jūs to nepasakīsit! Viņi vienmēr turpinās pildīt savus pēdējos norādījumus.

IZVĒLES: BRAUKŠANAS UZLABOŠANA TAISNĀ LĪNIJĀ

Ja jūsu robots nebrauks taisnā līnijā, iespējams, viens no jūsu motoriem griežas ātrāk nekā otrs.

Pēc tam, kad esat pārbaudījis, vai nekas fiziski netraucē ritenim brīvi griezties, varat rediģēt piedziņas funkcijas kodu, lai samazinātu ātrākā motora ātrumu.

Ritiniet uz augšu, lai atrastu piedziņas funkcijas definīciju, un apskatiet divus galvenos norādījumus:

def piedziņa (L, R):

# Zemāk ir korekcija, lai labotu motora apgriezienu skaita neatbilstību L = int (L*1) R = int (R*1)

Šīm divām rindām pašlaik ir L un R vērtība, reiziniet tās ar 1, pēc tam pārliecinieties, vai tās joprojām ir veseli skaitļi (int).

Piemēram, ja jūsu kreisais motors ir ātrāks, nomainiet *1 uz tā līnijas uz *0,9 un pārbaudiet, vai tas uzlabo situāciju.

Jūs nevarēsiet to padarīt perfektu, bet jūs varat turpināt pielāgot, līdz tas brauc taisnāk.

RADIO IESTATĪŠANA

Tagad iestatiet radio, koda augšdaļai pievienojot šādas rindiņas:

importēt radio

radio.config (kanāls = 7, grupa = 0, rinda = 1) radio.on ()

Tas ļaus jūsu robotam saņemt norādījumus no cita micro: bit, bet šobrīd tas saņems norādījumus no jebkura cita micro: bit.

Tas ir tāpēc, ka 7. kanāls un 0. grupa ir noklusējuma kanāli.

Mainiet šos skaitļus, izvēloties kanālu no 0 līdz 82 un grupu no 0 līdz 255. Tagad jūsu micro: bit saņems norādījumus tikai no citiem ar tādu pašu konfigurācijas informāciju.

rinda = 1 nozīmē, ka mikro: bits vienlaikus saglabās tikai vienu ienākošo ziņojumu - tas dod nedaudz ātrāku atbildes laiku nekā noklusējums, kas ir 3.

Tagad jums ir jārediģē galvenais cilpas kods, lai izpildītu norādījumus, nospiežot pogu, gaidiet ienākošo radio ziņu un atbilstoši atbildiet.

Izmēģiniet šo kodu kā pārbaudi (tas neko nedos, kamēr nebūsit iestatījis kursorsviru 2. darbībā):

kamēr taisnība:

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

2. darbība: kursorsviru iestatīšana

Atvienojiet sava robota micro: bit un tā vietā pievienojiet kursorsviru micro: bit

Iegūstiet kursorsviru iestatīšanas koda kopiju šeit:

Iestatiet radio, izmantojot to pašu konfigurāciju (kanālu un grupas numuru), ko izmantojāt robotam - tas ļaus abiem sazināties savā starpā.

Programmas beigās sāciet savu galveno cilpu:

kamēr taisnība:

ja poga_a. tika nospiesta (): radio.send ('uz priekšu')

Šis kods vēl neizmanto kursorsviru: bit. Ziņojuma nosūtīšanai tā izmanto pogu micro: bit.

Pārliecinieties, vai jūsu robotam un kontrollera micro: bitiem ir jauda, pēc tam nospiediet pogu, lai nosūtītu ziņojumu.

Ja ziņojums ir veiksmīgi saņemts un jūsu robots pārvietojas … labi darīts! Jūs esat pabeidzis iestatīšanas norādījumus.

PADOMI PROBLĒMU RISINĀŠANAI

Ja kontrollerim micro: bit tiek parādīts kļūdas ziņojums, atkļūdojiet kontroliera kodu

Ja saņemat kļūdas ziņojumu savā robota micro: bit… jūsu radio ziņojums tika veiksmīgi nosūtīts! Bet robots to nevar saprast, tāpēc pārbaudiet, vai jūsu sūtītā ziņa un ziņojums, kuru jūs teicāt robotam klausīties, atbilst.

Ja vispār nekas nenotiek

  • Pārliecinieties, vai katram mikro: bitam parādījāt pareizo kodu - ir viegli nejauši mirgot nepareizi!
  • Pārliecinieties, ka jūsu kanāla un grupas numuri atbilst katram mikro: bitam

3. darbība: kursorsviras vērtību pārbaude

Dažas nākamās darbības tiek veiktas, izmantojot kontroliera kodu

Pirms jūs varat izmantot vadības sviru kontrolierī, jums jāzina, kādas vērtības jūs iegūstat, nospiežot nūju.

Nomainiet galveno cilpu ar šādu kodu:

kamēr taisnība:

kursorsvira = kursorsvira_push () drukāt (kursorsviru) gulēt (500)

Zibspuldzējiet šo kodu savā micro: bit, pēc tam noklikšķiniet uz pogas REPL rīkjoslā Mu. Tādējādi redaktora apakšā tiks atvērts terminālis, kas nodrošina reāllaika saiti uz micro: bit.

atveriet REPL
atveriet REPL

Tas nedarbosies, ja nebūs pievienots micro: bit

Kad REPL ir atvērts, nospiediet atiestatīšanas pogu micro: bit aizmugurē.

Attēls
Attēls

Jums vajadzētu redzēt, ka dažas vērtības tiek parādītas ekrānā “drukātas”:

vērtības terminālī
vērtības terminālī

Nospiediet kursorsviru un redziet, kas notiek ar cipariem.

Pierakstiet vērtības, kas norādītas, kad kursorsviru atrodas centrā - manā gadījumā (518, 523).

Vēlreiz noklikšķiniet uz pogas REPL, kas atrodas Mu rīkjoslā, lai to aizvērtu - jūs nevarēsit mirgot jaunu kodu micro: bit, kamēr tas ir atvērts.

4. solis: X un Y mainīgo pielāgošana

Jūs vēlaties mainīt kursorsviras funkcijas sniegtās vērtības, lai:

  • centrā tas ir nulle
  • augšā ir pozitīvs
  • uz leju ir negatīvs.

Tas atbilst instrukcijām, kas nepieciešamas robotam - pozitīvs skaitlis, lai brauktu uz priekšu, un negatīvs skaitlis, lai brauktu atpakaļ.

Paskatieties uz skaitļiem, ko saņēmāt pēdējā solī. Pirmais skaitlis ir x, bet otrais - y.

Rediģējiet programmā jau esošo joystick_push () definīciju, atņemot vērtības no sākotnējā:

def joystick_push ():

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

Izmantojiet savus numurus, tie var atšķirties no manējiem

Mirgo jaunais kods, atveriet REPL, nospiediet micro: bit atiestatīšanas pogu un pārbaudiet savas vērtības.

Vai jūs saņemat (0, 0)?

5. solis: X un Y pārvēršana kreiso un labo motoru vērtībās

Šobrīd šī kursorsvira nebūs īpaši noderīga, lai vadītu robotu. Nospiežot uz priekšu līdz galam, jūs iegūsit tādu vērtību kā (0, 500).

Ja jūs sniegtu šos skaitļus robotam, tas ieslēgtu labo motoru, bet ne kreiso, kas nav tas, ko vēlaties notikt!

Šī diagramma parāda, kas notiek ar x un y vērtībām, pārvietojot kursorsviru, un ko mēs vēlamies, lai robots darītu, pārvietojot kursorsviru.

diagramma
diagramma

Jums ir jāizmanto dažas matemātikas, lai sajauktu x un y vērtības, lai iegūtu kaut ko noderīgāku.

n

MATEMATIKA

Sāksim, nospiežot kursorsviru līdz galam.

Iespējamo vērtību piemērs ir šāds:

x = 0

y = 500

Lai robots būtu noderīgs, jūs vēlaties iegūt šādas vērtības:

pa kreisi = 500

pa labi = 500

Mēģināsim pievienot x un y dažādos veidos, lai redzētu, kādus skaitļus mēs iegūstam:

x + y = 0 + 500 = 500

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

Tagad redzēsim, kas notiek, ja mēs nospiežam kursorsviru līdz galam pa labi.

Iespējamo vērtību piemērs ir šāds:

x = 500

y = 0

Lai robots pagrieztos pa labi, vēlaties, lai kreisais motors brauc uz priekšu, bet labais - atpakaļ:

pa kreisi = 500

pa labi = -500

Vēlreiz izmēģināsim mūsu formulu:

x + y = 500 + 0 = 500

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

Salīdziniet abus formulu komplektus, lai noskaidrotu, kura opcija sniegs pareizo kreiso vērtību un kura - pareizo pareizo vērtību.

Izmēģiniet to ar dažām vērtībām, ko iegūstat no sava kursorsviras, lai pārliecinātos, ka izvēlētā formula darbojas visu laiku.

n

JOYSTICK FUNKCIJAS PAPLAŠINĀŠANA

Izvērsiet un rediģējiet kursorsviras funkciju, lai izveidotu divus jaunus mainīgos lielumus kreisajai un labajai pusei un atgrieztu šīs vērtības x un y vietā:

def joystick_push ():

x = pin0.read_analog () - 518 y = pin1.read_analog () - 523 pa kreisi = pa labi = atgriezties pa kreisi, pa labi

Mirgo jaunais kods, atveriet REPL, nospiediet micro: bit atiestatīšanas pogu un pārbaudiet savas vērtības.

Vai jūs iegūstat gaidītās vērtības?

Ja jums nepieciešama papildu palīdzība, skatiet mūsu koda paraugu šeit:

6. darbība. Vērtību sūtīšana kā radio ziņas

Tagad jums ir dažas vērtības, kuras varat nosūtīt savam robotam.

Rediģējiet galveno cilpu tā, lai tā pārbaudītu kursorsviru vērtības, bet pēc tam vērtības drukāšanas vietā tā būtu gatava nosūtīšanai kā radio ziņa.

kamēr taisnība:

kursorsvira = kursorsvira_push () ziņojums = str (kursorsviru [0]) + "" + str (kursorsviru [1])

Tas vēl īsti nesūtīs ziņojumu!

Kas notiek šajā jaunajā koda rindā?

  • kursorsvira [0] nozīmē pirmo informācijas bitu, kas nāk no kursorsviras funkcijas (pa kreisi)
  • kursorsvira [1] ir nākamais informācijas bits (pa labi)
  • str () pārvērš abus šos ciparus virkņu formātā (teksts ciparu vietā) - tas ir nepieciešams, lai varētu nosūtīt informāciju pa radio.

Jūs būsiet pieraduši redzēt + nozīmēt papildinājumu - tas var gan pievienot skaitļus kopā, gan savienot virknes, kas nozīmē, ka tas salīmēs abus informācijas bitus kopā.

Piemērs:

150 + 100 = 250

str (150) + str (100) = 150100

Tātad apvienošana savienos jūsu kreisās un labās vērtības kopā.

Lai piespiestu atdalīt abus informācijas bitus (lai robots zinātu, ka tie ir divi informācijas biti), savienojiet starp tiem papildu virkni, izmantojot "". Runas zīmes ap atstarpi nozīmē, ka tā jau ir virkne.

Visbeidzot, pagariniet kodu, lai pa radio nosūtītu šo jaunizveidoto ziņojumu:

radio.send (ziņa)

gulēt (10)

Miega režīms palēnina ziņojumu sūtīšanu, lai saņemošais micro: bit netiktu pārslogots ar pārāk daudz informācijas!

Pirms pāriet uz nākamo soli, izsūtiet šo kodu savam kontroliera micro: bit un atkļūdojiet visas kļūdas

7. solis: ziņojumu saņemšana uz jūsu robota

Atgriezieties pie sava robota koda no paša sākuma - atcerieties atvienot kontrollera micro: bit, lai nejauši netiktu piebremzēts robota kods

Ritiniet uz leju līdz galvenajai cilpai - noņemiet pārbaudes kodu un tā vietā pievienojiet šo:

kamēr taisnība:

ziņojums = radio. saņemt () drukāt (ziņa) gulēt (100)

Tādējādi tiek iestatīts mainīgais, kas ir vienāds ar ienākošo ziņojumu, un tiek izdrukāts ziņojums REPL, lai pārbaudītu, vai ziņojumi tiek nosūtīti, kā paredzēts.

Zibspuldziet jauno kodu, kas pievienots REPL, un pēc tam nospiediet kursorsviru.

Jums vajadzētu iegūt kaut ko līdzīgu:

REPL vērtības
REPL vērtības

PADOMI PROBLĒMU RISINĀŠANAI

Ja kontrollerim micro: bit tiek parādīts kļūdas ziņojums, atkļūdojiet kontroliera kodu

Ja saņemat kļūdas ziņojumu savā robota micro: bit… jūsu radio ziņojums tika veiksmīgi nosūtīts! Bet robots to nevar saprast, tāpēc pārbaudiet, vai jūsu sūtītā ziņa un ziņojums, kuru jūs teicāt robotam klausīties, atbilst.

Ja vispār nekas nenotiek

  • Pārliecinieties, vai katram mikro: bitam parādījāt pareizo kodu - ir viegli nejauši mirgot nepareizi!
  • Pārliecinieties, ka jūsu kanāla un grupas numuri atbilst katram mikro: bitam

8. darbība: ienākošo ziņojumu izmantošana robota motoru vadīšanai

Tagad jūs saņemat divus ciparus pa radio kā virkni.

Šis ziņojums ir jāsadala divās virknēs, pēc tam vēlreiz jāpārvērš virknes skaitļos un jāievada diska funkcijā. Daudz kas notiek uzreiz!

Pirms to darīt, jums jāpārbauda, vai saņemtais ziņojums ir pareizajā formātā.

Ja netiek sūtīti ziņojumi, tā vietā jūs saņemsit “Nav”. Ja mēģināsit to sadalīt, tiks parādīts kļūdas ziņojums.

kamēr taisnība:

ziņojums = radio.recept (), ja ziņojums nav Nav: message = message.split () disks (int (ziņojums [0]), int (ziņojums [1]))

Kas te notiek?

  • Jaunais kods tiks palaists, ja ziņojums nav nekas cits kā “Nav”.
  • message.split () pārbauda, vai ziņojumā nav atstarpes (ko mēs pievienojām pēdējā solī), un izmanto to, lai ziņojumu sadalītu divās daļās.
  • int (ziņojums [0]), int (ziņojums [1]) darbojas pretēji tam, ko mēs darījām iepriekšējā solī - iegūst katru informāciju atsevišķi un pārvērš to par veselu skaitli (veselu skaitli).
  • int (ziņojums [0]) tiek izmantots kā piedziņas funkcijas kreisā motora vērtība, bet int (ziņojums [1]) tiek izmantots kā labā motora vērtība.

Pārbaudiet, vai tas darbojas - vai motori griežas, nospiežot kursorsviru?

Ja nē - laiks kādai atkļūdošanai!

Ja jā, fantastiski! Jums ir strādājošs tālvadības robots!

Pavadiet kādu laiku, praktizējot kopā ar savu robotu, pirms pāriet uz nākamo soli. Vai tas brauc tā, kā jūs gaidāt?

Nākamās darbības parādīs, kā izmantot kursorsviras pogas, lai robotam pievienotu papildu funkcionalitāti

Ja vēlaties redzēt mūsu šī koda versiju līdz šim:

  • Robots:
  • Kontrolieris:

9. solis: pogu izmantošana - papildu ziņojumu saņemšana

Pašlaik jūsu kods mēģinās sadalīt visus ziņojumus, kas nav Nav. Tas nozīmē, ka, ja tā saņem, piemēram, “sveiki”, jūs saņemsit kļūdas ziņojumu.

Lai ļautu jūsu micro: bit interpretēt citus ziņojumus, tam vispirms būs jāpārbauda katrs gaidītais ziņojums, pēc tam tas jāsadala tikai tad, ja tam nav teikts ar to darīt neko citu.

Paplašiniet savu kodu šādi:

ja ziņojums nav Nav:

if message == 'hello': display.show (Image. HAPPY) elif message == 'duck': display.show (Image. DUCK) else: message = message.split () disks (int (ziņojums [0]), int (ziņojums [1]))

Pirmkārt, tā pārbaudīs, vai ir saņēmusi ziņojumu “sveiki”. Ja tā ir, tas parādīs laimīgu attēlu, pēc tam atgriezieties cilpas augšdaļā un pārbaudiet, vai nav nākamā ziņojuma.

Ja ziņojums nav sveiks, tas turpmāk pārbaudīs, vai ziņojums ir “pīle”.

Ja ziņojums nav “sveiks” VAI “pīle”, tas izdarīs pēdējo lietu sarakstā, kas sadalīs ziņojumu un ieslēgs motorus. Tas nemēģinās sadalīt ziņojumu, ja ir saņēmis “sveiki” vai “pīle”, kas nozīmē, ka jūs nesaņemsit kļūdas ziņojumu nevienā no šiem diviem ziņojumiem.

Dubultā vienādības zīme ir svarīga - tas nozīmē “ir vienāds ar”, salīdzinot ar vienu vienādības zīmi, kas kaut ko nosaka (tātad ziņojums = “sveiki” nozīmē, ka mēs iestatām mainīgo uz “labdien”, ziņojums == “sveiki” nozīmē, ka mēs jautājam, vai ziņojums ir vienāds ar “sveiki”).

Izmēģiniet to, izmantojot tikai divas iespējas, lai to pārbaudītu - vēlāk varat pievienot tik daudz citu ziņojumu, cik vēlaties.

Saite uz darba kodu:

10. darbība: papildu ziņojumu sūtīšana, izmantojot kontroliera pogas

Atvienojiet sava robota micro: bit un tā vietā pievienojiet kursorsviru micro: bit

Lai rediģētu, atgriezieties pie sava kontroliera koda.

Līdzīgi kā robota kods, mēs vēlamies, lai kontrolieris pirms kursorsviras vērtību nosūtīšanas pārbauda, vai mēģināt nosūtīt citus ziņojumus.

Cilpas augšdaļā mēs joprojām vēlamies, lai tā pārbaudītu kursorsviras pašreizējās vērtības, bet mēs arī vēlamies, lai tā pārbaudītu, vai poga pašlaik tiek nospiesta:

kamēr taisnība:

kursorsviru = kursorsviru_push () pogu = pogu_spiest ()

button_press () atgriež vērtību A, B, C, D, E vai F atkarībā no tā, kura poga pašlaik tiek nospiesta (ja nekas netiek nospiests, tas atgriež None).

Tagad mēs varam izveidot if-elif-else paziņojumu, kā mēs to darījām robota kodam-izmantojot divas pogas un nosūtot kursorsviras vērtību, ja netiek nospiesta neviena poga.

ja poga == 'A':

radio.send ('labdien') miega (500) elif poga == 'B': radio.send ('pīle') miegs (500) cits: ziņojums = str (kursorsviru [0]) + "" + str (kursorsviru) [1]) radio.send (ziņa) miega režīms (10)

Kad tiek nospiesta poga, nosūtiet vienu no ziņojumiem, ko robotam teicāt pievērst uzmanību iepriekšējā solī.

Ziņojums tiks nosūtīts ikreiz, kad tiek nospiesta poga, un datori darbojas daudz ātrāk nekā cilvēki! Tāpēc tas var nosūtīt ziņojumu daudzas reizes, pirms jums ir izdevies noņemt pirkstu no pogas.

Miega režīms pēc ziņojuma nosūtīšanas palēnina tā darbību, lai poga netiktu vēlreiz tik ātri pārbaudīta - izmēģiniet dažus numurus, lai iegūtu sev ideāli piemērotu laiku - pārāk lēni un arī nereaģēs. ātri, un jūsu robots saņems tik daudz pogas ziņojumu, ka tas, iespējams, pārstās reaģēt uz kursorsviru!

Vai tas strādā?

Ja tiek parādīti kļūdu ziņojumi, rūpīgi pārdomājiet, ko tikko mainījāt un kas notiek.

Ja, nospiežot kontroliera pogu, robotā tiek parādīta kļūda - jūs zināt, ka ziņojums tiek nosūtīts tālāk, taču tas robotu mulsina. Pārbaudiet, vai jūsu nosūtītais ziņojums un ziņojums, ko esat teicis robotam meklēt, ir vienādi.

Saite uz darba kodu:

11. darbība. Nākamās darbības

Tagad jums ir nepieciešamās zināšanas darbam ar robota motoriem un kursorsviru: bitu kontrolieris

Izmantojiet šīs zināšanas, lai uzlabotu abas programmas un padarītu tās par savām. Dažas idejas zemāk!

Jūsu kontrolierī ir sešas pogas! Ko jūs vēlaties, lai viņi dara?

  • Kā būtu ar deju rutīnas programmēšanu, ko jūsu robots varētu veikt pēc komandas? Uzrakstiet diska () komandu algoritmu, atdalot ar miega () komandām!
  • Vai vēlaties mainīt robota kustības virzienu, lai tas varētu viegli braukt otrādi? Padomājiet par kursorsviras x un y vērtībām. Ko viņi pārstāv un kā jūs varētu ar tiem manipulēt?
  • Vai jūsu robotam ir (vai varat pievienot!) Papildu funkcijas, piemēram, gaismas diodes, skaļrunis vai sensori?

Idejas koda uzlabošanai

  • Vai jūs varētu palīdzēt robotam tikt galā ar nezināmiem ziņojumiem, izmantojot kodu try/izņemot?
  • Matemātika, ko izmanto, lai aprēķinātu kreiso un labo vērtību no kursorsviras, nesniedz mums pilnu vērtību diapazonu (robota piedziņa var pieņemt skaitli līdz 1023). Vai varat rediģēt šo kodu, lai iegūtu labāku diapazonu?
  • Ir arī citas kursorsviras vērtību sajaukšanas metodes - vai varat izdomāt labāku veidu, kā to izdarīt?

Ieteicams: