Агуулгын хүснэгт:

Микро програмчлал: Bit Robot & Joystick: MicroPython -той бит хянагч: 11 алхам
Микро програмчлал: Bit Robot & Joystick: MicroPython -той бит хянагч: 11 алхам

Видео: Микро програмчлал: Bit Robot & Joystick: MicroPython -той бит хянагч: 11 алхам

Видео: Микро програмчлал: Bit Robot & Joystick: MicroPython -той бит хянагч: 11 алхам
Видео: Joystick Controller Compatible With TPbot 2024, Арванхоёрдугаар сар
Anonim
Микро програмчлал: Bit Robot & Joystick: MicroPython -той бит хянагч
Микро програмчлал: Bit Robot & Joystick: MicroPython -той бит хянагч

Манай зуны роботын зуслан болох Robocamp 2019-ийн хувьд 10-13 насны залуус BBC-ийн микро: бит дээр суурилсан 'жингийн эсрэг робот' гагнах, програмчлах, бүтээх, түүнчлэн алсын удирдлага болгон ашиглах микро: бит програмчлах ажлыг хийж байна.

Хэрэв та одоогоор Robocamp -д байгаа бол эхний хоёр алхамыг бид бүлэг болгон хийсэн тул 3 -р алхам руу ороорой

Энэ бол джойстик: бит хянагчтай холбогддог бичил бит бит робот авах алхам алхмаар гарын авлага юм.

Бүх зүйлийг ажиллуулахын тулд хамгийн хурдан замыг сонгохгүй, харин жижиг хэсгүүдэд туршиж үзээрэй, ингэснээр та явж байхдаа кодыг шалгаж, тамга дарж, яагаад бид хийж байгаа зүйлээ хийж байгаагаа ойлгох болно. !

Энэ үйл ажиллагааны хувьд бид өөрсдийн захиалгат роботыг ашиглаж байгаа боловч энэ нь L9110s гэх мэт ижил төстэй мотор драйвер ашигладаг аливаа роботтой ажиллах болно.

Манай роботын дизайны файлуудыг эндээс олж болно:

Энэхүү гарын авлага нь эхлэгчдэд зориулагдсан болно, гэхдээ хэрэв та өмнө нь MicroPython -той micro: bit ашиглаж байгаагүй бол манай зааварчилгааны тэмдэг гэх мэт энгийн програмыг туршиж үзэхийг зөвлөж байна: https://www.instructables.com/id/Felt -Микробит-Нам …

Хангамж

2x BBC микро: бит

BBC микро: бит дээр ажилладаг робот (дээрх тайлбарыг үзнэ үү)

джойстик: бит хянагч (бид үүнийг сэрүүн бүрэлдэхүүн хэсгүүдээс авсан)

Алхам 1: Роботын тохиргоо

Та өөрийн micro: bit -д зориулж MicroPython кодыг бичих хэд хэдэн сонголт байна:

  • Му, эндээс татаж аваад суулгаж болно:
  • Онлайн засварлагчийг эндээс олж болно:

Эдгээр заавар нь таныг Му -г ашиглаж байна гэж үзнэ

Му -г нээгээд микро: битээ компьютертээ залгаарай. Му таныг микро: бит ашиглаж байгааг хүлээн зөвшөөрч, micro: bit 'Mode' -г сонгоно уу, гэхдээ хэрэв тийм биш бол гараар солино уу.

горимыг сонгох
горимыг сонгох

Роботын мотор турших кодын хуулбарыг эндээс авна уу:

Хэрэв та Github -д дасаагүй бол энэ нь ойлгомжгүй байж магадгүй юм! Энэ кодыг авах хоёр хялбар арга бол:

  1. Raw файлыг компьютер дээрээ хадгалаад Му руу ачаална уу.
  2. Өгөгдсөн бүх кодыг хуулж Му дахь шинэ файл руу буулгана уу.
түүхий файлыг хадгалах
түүхий файлыг хадгалах

Му -ийн хэрэгслийн самбараас 'Flash' товчийг дарж шинэ кодоо micro: bit рүү илгээнэ үү.

Micro: bit -ийг залгаагүй л бол энэ нь ажиллахгүй болно

Микро арын шар гэрэл: бит анивчиж эхэлнэ. Үүнийг дуусмагц таны кодыг шилжүүлсэн болно.

Моторын чиглэлийг тохируулах

Энэ програм нь таныг микро: бит дээрх 'A' товчлуурыг дарахад хөдөлгүүрийг өөр өөр чиглэлд асаах болно.

Таны хийхийг хүсч буй зүйл бол:

  • 'A' гарч ирэхэд зүүн мотор урагшаа урагшлах болно
  • 'B' гарч ирэхэд хөдөлгүүрийг зүүн тийш хойш харуулна
  • 'C' гарч ирэхэд баруун мотор урагшаа чиглэнэ
  • 'D' гарч ирэхэд баруун мотор арагшаа харагдана

Энэ нь магадгүй тийм биш байх болно, учир нь энэ нь таны роботыг хэрхэн холбосоноос хамаарна!

Кодын дээд хэсэгт та микро: битийн аль моторын чиглэлийг хянадаг болохыг тодорхойлох хувьсагчдын жагсаалтыг олох болно.

Хэрэв та манай роботыг (файл) ашиглаж байгаа бол роботыг зөв чиглэлд шилжүүлэхийн тулд хувьсагчийн нэрийг солино уу.

зүү солих хувьсагч
зүү солих хувьсагч

Хэрэв та өөрийн роботыг ашиглаж байгаа бол кодыг засварлахаас өмнө мотор драйвер нь ямар голтой холбогдсоныг шалгаарай.

Драйвыг турших

Үндсэн гогцоонд байгаа туршилтын кодыг өөрийн кодоор сольж өөрийн робот хэрхэн жолоодож байгааг шалгаарай.

Та роботод drive () функцийг дуудаж жолоодохыг хэлээрэй. Энэ нь хоёр хөдөлгүүрийг шаарддаг - зүүн хөдөлгүүрийн утга ба баруун хөдөлгүүрийн утга, 0 (унтраах) ба 1023 (хамгийн дээд хурд) хооронд.

Жишээлбэл, жолоодлогыг (500, 500) дуудахад та хоёр моторыг урагш чиглэлд хагас хурдтай асаахыг хэлж байна.

Хэрхэн шулуун жолоодож, хэр сайн эргэдэг болохыг мэдэхийн тулд хэд хэдэн сонголтыг туршиж үзээрэй.

Зөвлөмж: моторын туршилтууд нь True давталт болон if -ийн аль алиных нь дотор байсан бөгөөд таныг micro: bit дээрх A товчлуурыг дарах хүртэл хөдөлгүүрүүд эргэхгүй бөгөөд таны А товчлуурыг дарсан эсэхээ үүрд шалгаж байх болно.

Зөвлөгөө: моторууд үүнийг хэлэх хүртэл унтрахгүй! Тэд үргэлж сүүлчийн зааврыг үргэлжлүүлэн хийх болно.

СОНГОЛТТОЙ: Шулуун шугамаар жолоодлогыг сайжруулах

Хэрэв таны робот шулуун замаар жолоодохгүй бол таны нэг мотор нөгөөгөөсөө илүү хурдан эргэж магадгүй юм.

Дугуйг чөлөөтэй эргүүлэхэд бие махбодийн хувьд юу ч саад болохгүй гэдгийг шалгасны дараа та хөдөлгүүрийн хурдыг багасгахын тулд хөтөчийн функц дэх кодыг өөрчилж болно.

Драйвын функцийн тодорхойлолтыг олохын тулд дээш гүйлгэж, дээд хоёр зааврыг үзнэ үү.

def хөтөч (L, R):

# Доорх нь хөдөлгүүрийн хурдны зөрүүг засах тохируулга юм L = int (L*1) R = int (R*1)

Эдгээр хоёр мөр нь одоогоор L ба R утгыг аваад 1 -ээр үржүүлээд бүхэл тоо хэвээр байгаа эсэхийг шалгаарай (int).

Жишээлбэл, хэрэв таны зүүн хөдөлгүүр илүү хурдан байвал *1 -ийг *0.9 болгон өөрчилж, энэ нь сайжирч байгаа эсэхийг шалгаарай.

Та үүнийг төгс болгож чадахгүй, гэхдээ илүү чанга жолоодож дуустал нь тохируулж болно.

Радиог тохируулах

Дараах мөрүүдийг кодынхоо дээд хэсэгт нэмж радиогаа тохируулаарай.

радио импортлох

radio.config (суваг = 7, бүлэг = 0, дараалал = 1) radio.on ()

Энэ нь таны роботыг өөр micro: bit -ээс заавар авах боломжтой боловч одоогоор бусад micro: bit -ээс заавар хүлээн авах болно.

Учир нь 7 -р суваг, 0 -р бүлэг нь үндсэн сувгууд юм.

Эдгээр тоонуудыг өөрчилж 0-82 хооронд суваг, 0-255 хооронд бүлэг сонгоно уу. Одоо таны micro: bit нь зөвхөн ижил тохиргооны мэдээлэлтэй бусдаас заавар авах болно.

queue = 1 гэдэг нь микро: бит нь зөвхөн нэг ирсэн мессежийг хадгалах болно гэсэн үг юм.

Одоо та гол давталтын кодоо өөрчлөхийн тулд товчлуур дарахад заавар ажиллуулахын оронд ирж буй радио мессежийг хүлээж, зохих ёсоор хариулах хэрэгтэй.

Дараах кодыг туршилтаар туршиж үзээрэй (2 -р алхамд joystick -ийг тохируулах хүртэл юу ч хийхгүй болно):

үнэн байхад:

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

Алхам 2: Joystick-ийн тохиргоо

Роботынхоо micro: bit -ийг салгаад оронд нь joystick -ийн micro: bit -ийг залгаарай

Джойстик тохируулах кодын хуулбарыг эндээс авна уу:

Роботыг хийсэнтэй ижил тохиргоо (суваг, бүлгийн дугаар) ашиглан радио тохируулаарай - энэ нь хоёулаа хоорондоо харилцах боломжийг олгоно.

Хөтөлбөрийн төгсгөлд үндсэн давталтаа эхлүүлнэ үү.

үнэн байхад:

хэрэв button_a.was_pressed (): radio.send ('урагш')

Энэ код нь джойстикийг хараахан ашиглаагүй байна: бит. Энэ нь мессеж илгээхдээ микро: битийн А товчлуурыг ашигладаг.

Таны робот болон хянагчийн микро: битийн хүч байгаа эсэхийг шалгаад товчлуур дээр дарж зурвасаа илгээнэ үү.

Хэрэв мессежийг амжилттай хүлээн авч, таны робот хөдөлвөл сайн байна! Та тохируулах зааврыг дуусгаж байна.

АСУУДЛЫГ ТАЙЛАХ ЗӨВЛӨГӨӨ

Хэрэв та хянагчийнхаа micro: bit дээр алдааны мессеж авбал хянагчийн кодоо дибаг хийгээрэй

Хэрэв та робот дээрээ алдааны тухай мессеж авбал микро: бит… таны радио мессеж амжилттай илгээгдлээ! Гэхдээ робот үүнийг ойлгохгүй байгаа тул таны илгээсэн мессеж, роботыг сонсохыг хүссэн мессеж байгаа эсэхийг шалгаарай.

Хэрэв юу ч болоогүй бол

  • Микро: бит бүрт зөв кодыг оруулсан эсэхээ шалгаарай - буруу санамсаргүйгээр анивчих нь амархан!
  • Таны суваг болон бүлгийн тоонууд micro: bit бүрт таарч байгаа эсэхийг шалгаарай

Алхам 3: Joystick -ийн үнэ цэнийг шалгах

Дараагийн хэдэн алхам бол хянагчийн кодыг ашиглах явдал юм

Хянагч дээрх джойстикийг ашиглахаасаа өмнө саваа түлхэхэд ямар төрлийн үнэ цэнийг олж авахаа мэдэх хэрэгтэй.

Үндсэн циклээ дараах кодоор солино уу.

үнэн байхад:

joystick = joystick_push () хэвлэх (joystick) унтах (500)

Энэ кодыг өөрийн микро: бит рүү дүрж, дараа нь Му -ийн хэрэгслийн самбар дээрх REPL товчийг дарна уу. Энэ нь редакторын доод хэсэгт терминал нээгдэх бөгөөд энэ нь танд микро: бит рүү шууд холбогдох линкийг өгөх болно.

REPL -ийг нээнэ үү
REPL -ийг нээнэ үү

Micro: bit -ийг залгаагүй л бол энэ нь ажиллахгүй болно

REPL нээлттэй байхад микро: битийнхээ ар талд байгаа дахин тохируулах товчийг дарна уу.

Зураг
Зураг

Та дэлгэц дээр "хэвлэгдсэн" утгыг авчрах ёстой.

терминал дахь утга
терминал дахь утга

Тоглоомын саваа түлхээд тоонууд юу болохыг хараарай.

Миний хувьд (518, 523) джойстик төв байрлалд байх үед өгсөн утгыг тэмдэглэ.

Му -ийн хэрэгслийн самбар дээрх REPL товчлуурыг дахин дарж хаах хэрэгтэй. Та нээлттэй кодоо шинэ код руу микро: бит рүү асаах боломжгүй болно.

Алхам 4: X ба Y хувьсагчийг тохируулах

Та джойстик функцын өгсөн утгыг өөрчлөхийг хүсч байна.

  • төвд тэг байна
  • дээш эерэг байна
  • доош нь сөрөг байна.

Энэ нь роботын хэрэгтэй заавартай нийцдэг - урагш жолоодох эерэг тоо, ухрах сөрөг тоо.

Сүүлийн алхам дээр авсан тоонуудаа хараарай. Эхний тоо нь x, хоёр дахь тоо нь y юм.

Хөтөлбөрт аль хэдийн орсон байгаа joystick_push () тодорхойлолтыг засварлаж, өөрийн утгыг эхээс нь хасна уу.

def joystick_push ():

x = pin0.read_analog () - 518 y = pin1.read_analog () - 523 буцах x, y

Өөрийнхөө дугаарыг ашиглаарай, энэ нь минийхээс өөр байж магадгүй юм

Шинэ кодоо асааж, REPL -ийг нээгээд micro: bit -ийг дахин тохируулах товчлуурыг дарж өөрийн утгыг шалгана уу.

Та (0, 0) авч байна уу?

Алхам 5: X ба Y -ийг зүүн ба баруун моторын утга болгон хувиргах

Одоогийн байдлаар энэ джойстик нь робот жолоодоход тийм ч их ашиггүй болно. Бүх замыг урагшлуулснаар та (0, 500) гэх мэт утгыг авах болно.

Хэрэв та эдгээр тоонуудыг роботод өгсөн бол энэ нь баруун моторыг асаах болно, гэхдээ зүүн хөдөлгүүрийг асаахгүй.

Энэхүү диаграммд та джойстикийг хөдөлгөхөд x ба y утгууд юу болохыг, мөн роботын удирдлагыг хөдөлгөхөд бид юу хийхийг хүсч байгааг харуулав.

диаграм
диаграм

Та илүү ашигтай зүйл өгөхийн тулд x болон y утгыг холихын тулд математик ашиглах хэрэгтэй.

n

МАТЕМ

Жойстикийг бүхэлд нь урагшлуулснаар эхэлье.

Таны авч болох үнэт зүйлсийн жишээ бол:

x = 0

y = 500

Роботод ашигтай байхын тулд та дараахь утгыг авахыг хүсч байна.

зүүн = 500

баруун = 500

Бид ямар тоо авахыг харахын тулд x ба y -ийг янз бүрийн аргаар нэмж үзье.

x + y = 0 + 500 = 500

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

Хэрэв бид джойстикийг баруун тийш чиглүүлбэл юу болохыг харцгаая.

Таны авч болох үнэт зүйлсийн жишээ бол:

x = 500

y = 0

Роботыг баруун тийш эргүүлэхийн тулд та зүүн хөдөлгүүрийг урагш, баруун мотороо хойшоо жолоодохыг хүсч байна.

зүүн = 500

баруун = -500

Томъёогоо дахин туршиж үзье.

x + y = 500 + 0 = 500

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

Томъёоны хоёр багцыг харьцуулж үзвэл аль сонголт танд зөв зүүн утгыг өгөх вэ, аль сонголт нь танд зөв зөв утгыг өгөх вэ?

Таны сонгож авсан томъёо үргэлж ажилладаг эсэхийг шалгахын тулд өөрийн джойстикээс авсан зарим үнэ цэнийг туршиж үзээрэй.

n

Зугаа цэнгэлийн чиг үүргийг өргөжүүлэх

Зүүн ба баруун гэсэн хоёр шинэ хувьсагч болгож, x ба y -ийн оронд эдгээр утгыг буцааж өгөхийн тулд джойстик функцийг өргөжүүлж засварлана уу.

def joystick_push ():

x = pin0.read_analog () - 518 y = pin1.read_analog () - 523 зүүн = баруун = зүүн, баруун тийш буцах

Шинэ кодоо асааж, REPL -ийг нээгээд micro: bit -ийг дахин тохируулах товчлуурыг дарж өөрийн утгыг шалгана уу.

Та хүлээж буй үнэ цэнээ олж авч байна уу?

Хэрэв танд өөр тусламж хэрэгтэй бол манай жишээ кодыг эндээс үзээрэй:

Алхам 6: Үнэ цэнийг радио мессеж болгон илгээх

Одоо танд робот руу илгээхэд бэлэн байгаа зарим үнэ цэнэ байна.

Гол давталтаа засаж, ингэснээр энэ нь джойстикийн утгыг шалгадаг боловч утгыг хэвлэхийн оронд тэдгээрийг радио мессеж болгон илгээхэд бэлэн болгодог.

үнэн байхад:

joystick = joystick_push () мессеж = str (joystick [0]) + "" + str (joystick [1])

Энэ нь үнэндээ мессеж илгээхгүй байна!

Энэхүү кодын шинэ мөрөнд юу болж байна вэ?

  • joystick [0] гэдэг нь joystick функцээс гарч буй анхны мэдээллийг хэлнэ (зүүн талд)
  • joystick [1] бол дараагийн мэдээлэл юм (баруун талд)
  • str () нь эдгээр тоонуудыг хоёуланг нь string формат руу хөрвүүлдэг (тоонуудын оронд текст) - энэ нь мэдээллийг радиогоор илгээхэд шаардлагатай юм.

Та + -г хараад дассан болно гэсэн үг бөгөөд энэ нь хоёуланг нь тоог нэмж, мөрүүдийг нэгтгэх боломжтой бөгөөд энэ нь хоёр бит мэдээллийг хооронд нь холбох болно гэсэн үг юм.

Жишээ:

150 + 100 = 250

str (150) + str (100) = 150100

Тиймээс нэгтгэх нь таны зүүн болон баруун утгыг хооронд нь холбох болно.

Мэдээллийн хоёр битийг хооронд нь салгахын тулд (робот нь тэднийг хоёр бит мэдээлэл гэдгийг мэдэхийн тулд) "" ашиглан тэдгээрийн хооронд нэмэлт мөр залгаарай. Орон зайн эргэн тойронд байгаа ярианы тэмдэг нь энэ нь аль хэдийн хэлхээ болсон гэсэн үг юм.

Эцэст нь кодоо өргөжүүлж, шинээр үүсгэсэн мессежийг радио ашиглан илгээнэ үү.

radio.send (зурвас)

унтах (10)

Унтах нь мессеж илгээх явцыг удаашруулдаг бөгөөд ингэснээр хүлээн авах micro: bit нь хэт их мэдээлэлд хэт их ачаалал өгөхгүй болно!

Дараагийн алхам руу шилжихийн өмнө энэ кодыг хянагчийн микро: бит дээр алдааг олж засварлана уу

Алхам 7: Робот дээрээ мессеж хүлээн авах

Анхнаасаа робот код руугаа буцна уу - роботын кодыг санамсаргүйгээр анивчихгүйн тулд хянагчийн микро: битийг салгахаа мартуузай

Үндсэн гогцоо руугаа гүйлгэж үзээрэй - туршилтын кодыг устгаад оронд нь нэмнэ үү.

үнэн байхад:

message = radio.receive () хэвлэх (зурвас) унтах (100)

Энэ нь ирж буй мессежтэй тэнцүү хувьсагчийг тохируулж, мессежийг хүлээгдэж буй байдлаар ирж буй эсэхийг шалгахын тулд REPL руу хэвлэнэ.

REPL -д холбогдсон шинэ кодоо асаагаад джойстикийг дарна уу.

Та иймэрхүү зүйлийг авах ёстой:

REPL утгууд
REPL утгууд

АСУУДЛЫГ ЗАСАХ ЗӨВЛӨГӨӨ

Хэрэв та хянагчийнхаа micro: bit дээр алдааны мессеж авбал хянагчийн кодоо дибаг хийгээрэй

Хэрэв та робот дээрээ алдааны тухай мессеж авбал micro: bit… таны радио мессеж амжилттай илгээгдлээ! Гэхдээ робот үүнийг ойлгохгүй байгаа тул таны илгээсэн мессеж, роботыг сонсохыг хүссэн мессеж байгаа эсэхийг шалгаарай.

Хэрэв юу ч болоогүй бол

  • Микро: бит бүрт зөв кодыг оруулсан эсэхээ шалгаарай - буруу санамсаргүйгээр анивчих нь амархан!
  • Таны суваг болон бүлгийн тоонууд micro: bit бүрт таарч байгаа эсэхийг шалгаарай

Алхам 8: Ирж буй мессежийг ашиглан роботын моторыг удирдах

Та одоо радиогоор утсаар хоёр дугаар илгээж байна.

Та энэ зурвасыг хоёр мөр болгон хувааж, мөрүүдийг буцааж тоонууд руу хөрвүүлж, үүнийг хөтчийн функцэд дамжуулах хэрэгтэй. Маш олон зүйл нэг дор явагдаж байна!

Үүнийг хийхийн өмнө та хүлээн авсан зурвас зөв форматтай эсэхийг шалгах хэрэгтэй.

Хэрэв ямар ч мессеж илгээгээгүй бол та 'None' хүлээн авах болно. Хэрэв та үүнийг хуваахыг оролдвол танд алдааны мэдэгдэл ирэх болно.

үнэн байхад:

message = radio.receive () хэрэв мессеж байхгүй бол: message = message.split () drive (int (message [0]), int (message [1]))

Энд юу болоод байгаа юм бэ?

  • Хэрэв мессеж нь 'None' -ээс өөр зүйл байвал шинэ код ажиллах болно.
  • message.split () нь зурвас дахь зайг шалгадаг (бид үүнийг сүүлчийн алхам дээр нэмсэн) бөгөөд үүнийг ашиглан зурвасыг хоёр хуваахад ашигладаг.
  • int (мессеж [0]), int (мессеж [1]) нь бидний өмнөх алхам дээр хийсэн зүйлийг эсрэгээр хийдэг - мэдээлэл бүрийг дангаар нь авч бүхэл тоо (бүхэл тоо) болгон хөрвүүлдэг.
  • int (message [0]) нь жолоодлогын функц дэх зүүн хөдөлгүүрийн утга, харин баруун моторын хувьд int (message [1]) утгыг ашигладаг.

Ажиллаж байгаа эсэхийг шалгаарай - джойстикийг түлхэхэд хөдөлгүүр эргэдэг үү?

Үгүй бол дибаг хийх цаг боллоо!

Хэрэв тийм бол гайхалтай! Танд ажилладаг алсын удирдлагатай робот байна!

Дараагийн алхам руу шилжихээсээ өмнө роботтойгоо хамт хэсэг хугацаанд дасгал хий. Энэ нь таны хүлээж байгаагаар хөтөлдөг үү?

Дараагийн алхамууд нь робот дээрээ нэмэлт функц нэмэхийн тулд джойстик дээрх товчлууруудыг хэрхэн ашиглахыг харуулах болно

Хэрэв та энэ кодын хувилбарыг харахыг хүсвэл:

  • Робот:
  • Хянагч:

Алхам 9: Товчлуурыг ашиглах - Нэмэлт мессеж хүлээн авах

Одоогийн байдлаар таны код None биш мессежийг хуваахыг оролдох болно. Энэ нь хэрэв жишээ нь 'сайн уу' гэж хүлээн авбал та алдааны мэдэгдэл хүлээн авах болно гэсэн үг юм.

Таны микро: битийг бусад мессежийг тайлбарлахыг зөвшөөрөхийн тулд эхлээд хүлээгдэж буй мессеж бүрийг шалгаж, өөр ямар нэгэн зүйл хийхийг хэлээгүй тохиолдолд л зурвасыг хуваах шаардлагатай болно.

Кодыг дараах байдлаар өргөжүүлнэ үү.

хэрэв мессеж байхгүй бол:

if message == 'hello': display.show (Image. HAPPY) elif message == 'duck': display.show (Image. DUCK) else: message = message.split () drive (int (message [0]), int (мессеж [1]))

Нэгдүгээрт, энэ нь 'сайн уу' гэсэн мессеж хүлээн авсан эсэхийг шалгах болно. Хэрэв байгаа бол энэ нь аз жаргалтай зургийг харуулах бөгөөд дараа нь давталтын дээд хэсэгт буцаж очоод дараагийн зурвасыг шалгана уу.

Хэрэв мессеж сайн биш бол дараа нь "нугас" эсэхийг шалгах болно.

Хэрэв мессеж нь "сайн уу" эсвэл "нугас" биш бол энэ нь жагсаалтыг хамгийн сүүлд хийх бөгөөд энэ нь мессежийг хувааж хөдөлгүүрийг асаах болно. Хэрэв та 'сайн уу' эсвэл 'нугас' хүлээн авсан бол энэ нь зурвасыг хуваахыг оролдохгүй бөгөөд энэ нь танд эдгээр хоёр зурвасын аль нэгнээс алдааны мессеж ирэхгүй гэсэн үг юм.

Давхар тэнцүү тэмдэг нь чухал ач холбогдолтой бөгөөд энэ нь ямар нэгэн зүйлийг тохируулж буй ганц тэнцүү тэмдэгтэй харьцуулахад "тэнцүү" гэсэн утгатай (тиймээс message = 'hello' гэдэг нь бид хувьсагчийг 'сайн уу', мессеж == 'сайн уу' гэж тохируулж байгаа гэсэн үг юм. Энэ нь мессеж нь 'сайн уу' гэсэн утгатай эсэхийг бид асууж байна гэсэн үг юм).

Үүнийг туршихын тулд одоохондоо хоёр сонголтоор туршиж үзээрэй - та дараа нь хүссэн хэмжээгээрээ бусад олон мессеж нэмж болно.

Ажлын кодын линк:

Алхам 10: Хянагчийн товчлуурыг ашиглан нэмэлт мессеж илгээх

Роботынхоо micro: bit -ийг салгаад оронд нь joystick -ийн micro: bit -ийг залгаарай

Засах бол хянагчийн код руу буцна уу.

Робот кодын нэгэн адил бид хянагчийг джойстикийн утгыг илгээхээс өмнө өөр мессеж илгээх гэж байгаа эсэхийг шалгахыг хүсч байна.

Циклийн дээд хэсэгт бид joystick -ийн одоогийн утгыг шалгахыг хүсч байгаа боловч одоогоор товчлуур дарагдаж байгаа эсэхийг шалгахыг хүсч байна.

үнэн байхад:

joystick = joystick_push () товчлуур = button_press ()

button_press () нь одоогоор аль товчлуур дарагдаж байгаагаас хамаарч A, B, C, D, E эсвэл F утгыг буцаана (хэрэв юу ч дарахгүй бол None буцаана).

Одоо бид роботын кодыг ашигласан шиг if-elif-else гэсэн мэдэгдэл хийж болно-хоёр товчлуурыг ашиглан товчлуур дарагдаагүй бол joystick-ийн утгыг илгээх боломжтой.

хэрэв товчлуур == 'А':

radio.send ('сайн уу') унтах (500) elif товчлуур == 'B': radio.send ('нугас') унтах (500) өөр: message = str (joystick [0]) + "" + str (joystick [1]) радио. илгээх (мессеж) унтах (10)

Товчлуур дарагдахад өмнөх алхамд анхаарлаа хандуулахыг хүссэн роботынхоо нэгийг илгээнэ үү.

Товчлуур дарагдах бүрт мессеж илгээх бөгөөд компьютер хүмүүсээс хамаагүй хурдан байдаг. Тиймээс та хуруугаа товчлуураас нь салгахаас өмнө зурвасыг олон удаа илгээж магадгүй юм.

Зурвас илгээсэний дараа унтах нь үүнийг удаашруулдаг бөгөөд ингэснээр товчлуурыг дахин хурдан шалгахгүй болно - эндээс хэд хэдэн тоог туршиж үзээрэй. хурдан, таны робот маш олон товчлуур мессеж хүлээн авах тул джойстикт хариу өгөхөө болино!

Энэ нь ажилладаг уу?

Хэрэв танд алдааны мэдэгдэл ирж байгаа бол саяхан өөрчилсөн зүйл, юу болж байгааг сайтар бодож үзээрэй.

Хэрэв та хянагчийнхаа товчлуурыг дарахад робот дээр алдаа гарвал энэ мессеж тархаж байгааг мэдэж байгаа ч энэ нь роботыг төөрөгдүүлж байна. Таны илгээсэн мессеж болон таны хайж олохыг хүссэн роботтой ижил байгаа эсэхийг шалгаарай.

Ажлын кодын линк:

Алхам 11: Дараагийн алхамууд

Та одоо роботын мотор, джойстик: бит хянагчтай ажиллахад хэрэгтэй мэдлэгтэй боллоо

Энэхүү мэдлэгээ ашиглан хоёр програмыг сайжруулж, өөрийн болгох боломжтой. Доорх зарим санаанууд!

Таны хянагч дээр зургаан товчлуур байна! Та тэднийг юу хийхийг хүсч байна вэ?

  • Таны робот тушаалын дагуу хийх бүжгийн дэглэмийг хэрхэн програмчлах вэ? Унтлагын () командуудаар тусгаарлагдсан drive () командуудын алгоритмыг бичнэ үү!
  • Та роботын зүг чигийг өөрчилж, дээшээ доошоо хялбархан жолоодохыг хүсч байна уу? Joystick -ийн x ба y утгуудын талаар бодоорой. Тэд юуг төлөөлдөг вэ, та тэдгээрийг хэрхэн удирдах вэ?
  • Таны роботод LED, чанга яригч, мэдрэгч гэх мэт нэмэлт боломжууд бий юу?

Кодыг сайжруулах санаа

  • Та оролдох/оруулах кодыг ашиглан үл мэдэгдэх мессежийг даван туулахад роботоо туслах уу?
  • Жойстикээс зүүн ба баруун утгыг тооцоолоход ашигладаг математикууд нь бидэнд бүрэн хэмжээний утгыг өгдөггүй (роботыг жолоодоход 1023 хүртэлх тоог хүлээн авах боломжтой). Илүү сайн хүрээ авахын тулд та энэ кодыг засаж чадах уу?
  • Жойстикийн утгыг холих өөр аргууд байдаг - та үүнийг хийх илүү сайн аргыг гаргаж ирж чадах уу?

Зөвлөмж болгож буй: