Раздели

Робот-кола с Mecanum колела

Избягване на препятствие с ултразвуков сензор

Ултразвуковият сензор кара колата да завие сама пред препятствие
Продължение на уроци 1 и 2: дотук колата правеше точно каквото е написано, без да гледа света. Тук за пръв път проверява сензора във всяка итерация и избира различно поведение - реагиране вместо предварителна програма.
◆с какво се прави урокът

Комплектът

Робот-кола с Mecanum колела с Microbit
Робот-кола с Mecanum колела с Microbit
Артикул STM10003 · 124 € · RJ11, без жички и без запояване
виж комплекта в магазина →
Линкът отваря нов раздел, за да не изхвърли учителя от урока насред час.
Aкакво вадим от кутията

Три неща за реакцията и по един въпрос към всяко

Ултразвук
Ултразвук
сензор
разстояние до препятствие, проверявано при ВСЯКО завъртане на цикъла
cm
вграден
Защо трябва проверка ВЪВ ВСЯКА итерация, а не веднъж в началото?
Условието if / else
Условието if / else
код
избира МЕЖДУ две различни действия, не просто добавя трето
-
-
Каква е разликата между forever с if, и forever, което просто спира?
Цветни светодиоди
Цветни светодиоди
изход
показват в кое от двете състояния е програмата в момента
ляво / дясно
вграден
Защо колата да показва нещо, което и без това виждаме, че прави?
A стартира сляпото каране · вграден ултразвук отпред · вграден цветни светодиоди ляво/дясно
⚠ Кой RJ11 порт на шийлда на кой пин отговаря НЕ е описано в документацията на Keyestudio. Затова говорим за пинове (P0, P2), а не за номера на портове - допълва се, щом платката е на масата.
Bсензорът се проверява във всяка итерация

Кое колело накъде?

↑преден ляв
↑преден десен
↑заден ляв
↑заден десен
колата
 
 
Forever проверява сензора отново и отново, но не непрекъснато - всяко завъртане на цикъла отнема малко време. Затова "реагира веднага" всъщност означава "реагира на следващата проверка", не в същия миг.
⚙без него блоковете ги няма

Блоковете идват от разширение

Сензорните блокове в този урок не са вградени в MakeCode. Те са от нашето разширение MecanumRobot_v2 (наша версия с български блокове) - затова са на български. Добавя се веднъж на проект:

  1. В MakeCode отвори проекта и цъкни ⚙ Настройки → Разширения.
  2. В полето за търсене постави адреса (не име - по име няма да се намери):
  3. Цъкни намереното разширение.
  4. В палитрата се появява категория Mecanum кола - блоковете са на български.
https://github.com/uchiteloffice/MecanumRobot_v2
Къде стои Разширения
1. „Разширения“ е в дъното на палитрата
Адресът, поставен в търсачката
2. адресът се поставя в полето за търсене
⚠ Търси се с адреса, не с името - разширението не е в галерията на MakeCode. Версия за този урок: v0.2.1.
Ако разширението липсва, блоковете излизат сиви и програмата не тръгва. Това е първото, което се проверява при „не работи".
CПрограмата се СТРОИ по един блок, с обяснение защо

Кодът стъпка по стъпка

блокове
 
Блоковете са изцяло на български - и вградените, и сензорните. Това е първият урок в серията, в който няма нито една английска дума в програмата.
Dинерцията си иска разстояние

На колко сантиметра завива колата?

★ праг 15 cm
🚗
-
сантиметра навътре от прага
 
Кодът реагира еднакво бързо всеки път. Разстоянието расте не защото реакцията се бави, а защото по-бързата кола изминава повече сантиметри за същото това време.
✎организация

За учителя

Комплект: Робот-кола с Mecanum колела с Microbit (STM10003)
Разширение: MecanumRobot_v2 (наша версия с български блокове) · https://github.com/uchiteloffice/MecanumRobot_v2
Пинове: A стартира сляпото каране · вграден ултразвук отпред · вграден цветни светодиоди ляво/дясно
Време: 40 минути · раздел C е часът - разликата между forever+if и обикновен код.
Предмети: ИТ/технологии (условие, състояние, реакция на сензор) · физика (инерция и реакционно време).

⚠ Мекanum колелата имат посока. Сложени наопаки, колата не тръгва настрани - трепери на място или върви в грешна посока. Проверявайте стрелката на джантата преди първо пускане.
⚠ Разширението е само за тази кола. Блоковете mecanumRobot не работят с neZha/PlanetX платки - друг производител, друга библиотека, друг курс.
⚠ Програмата не е пускана на истински хардуер. Рендерът е сверен, поведението - не.