4. Занятие 4 - Пеещ сеизмичен сензор

Въведение

В следващите две занятия, ще влезете в ролята на главният надзирател в затвор. Чувате слухове, че определена банда от крадци на торти бива преместена във вашия затвор и че те планират да избягат. Желаейки да избегне публичен скандал, кмета на града е решил да финансира нова охранителна система за вашия затвор. Ваша работа е да запазите доброто име на затвора си и да защитите тортите на сладкарниците в околността.

Конструиране на сеизмограф

Вашата охранителна система е много добра, но в миналото е имало случаи, в които затворници са бягали копаейки тунели под затвора.

Във второ занятие споменахме какво е сеизмограф. Някой помни ли какво е и за какво служи?

Сеизмографът е уред, който усеща трептенията в земята и да, той може да усети ако някой копае под затвора ви. Жироскопичния сензор в този робот, ни служи като сензор на вибрации. Докато сеизмографите чертаят трептенията, които усещат върху лист хартия, нашият робот само ги чете и реагира ако преминат определено ниво.

Наблюдателница, охранителен робот, построен с LEGO Mindstorms EV3

Наблюдателницата е охранителен робот, който засича стъпките на нарушители. За целта използва жиро сензор, закачен на мачта. Тази мачта засилва вибрациите и прави сензора по-чувствителен. Щом засече нарушител, робота може да се огледа и да намери точната му позиция.

Сега, след като построихте робота, затворете кутията, за да не ви пречи.

  1. Приберете всички части, които не ви трябват за робота, в кутията.
  2. Затворете кутията и я отместете, така че да не ви пречи повреме на следващите задачи.

Програмиране и теория

Днес използваме жироскопичния сензор, за да програмираме робота да усеща трептения, когато някой се опитва да се промъкне. Естествено, трябва да спираме алармата в деня за посещения и когато се сменят пазачите. Все пак, не желаем да ловим собствените си пазачи. 

Жироскопичен сензор - ускорение

Забелязали ли сте, че понякога жироскопичят сензор не мери правилно ъгъла? Това е така, защото това не е нещото, за което е създаден да измерва!

Преди, когато сме работили с жироскопичен сензор, измервахме ъгъла, на който се е завъртял робота, но днес го използваме по друг начин. Знаете ли, че жироскопичния сензор не измерва ъгъла, на който се завърта, а всъщност измерва промяната в скоростта на завъртане (ускорение)? Нашият робот е умен и той използва това ускорение, за да пресметне ъгъла, на който се намира. За съжаление, не винаги пресмята ъгъла правилно, но винаги дава правилното ъглово ускорение. Начинът, по който получаваме това ускорение е в Rate режима на жироскопичния сензор:

Rate режима може да бъде намерен и в други блокчета използващи жироскопичен сензор, като чакащото блокче или блокчето за условен оператор:

Виждали ли сте по филмите, как ловци слагат ушите си на земята и спрямо силата на звука, който чуват определят колко далеч се намира животното? По подобрен начин, трябва да накараме нашият сеизмограф да ни сигнализира за наближаващите го затворници чрез различни звуци.

Звуково блокче - честота

Как можем да програмираме робота да издаде определен звук? Нека първо разгледаме как се измерва звука и тогава да програмираме робота да издава звуци:

Какво е звук?

Човек, който не знае вече този интересен факт, е трудно да си го представи, но звука е всъщност вибрация. Тази вибрация се придвижва през въздуха до нашите уши, но тя може да се придвижва и през други материали. Примернo делфините комуникират във водата и ние също можем да чуем някои звуци, които издават.

Чували ли сте, че оперните певци имали дълбок глас, а оперните певици имали висок глас?

Звукът има две скали за измерване. Силата на звука се измерва в децибели (db). Докато дълбочината (честотата) на звука се измерва в херцове (Hz). Мъжкият глас се измерва между 85-180 Hz, а женският между 165-255 Hz. Знаете ли, че делфините могат да издават звук с толкова висока честота, че ние не можем да ги чуем?

За да програмираме робота да издава звук с определена честота ни трябва звуковото блокче от зелената палитра, в режима Play Tone:

 

За следващите 4 задачи разполагате с не повече от 25 минути. Ако желаете да си поиграете с музикалният инструмент, който ще създадете, бъдете бързи!

Ако сте направили програмата правилно, трябва да чувате еднакъв звук при всяко трептене. Това е така, защото блокчето за звук НЕ издава звук с по-ниска честота от 250 Hz. За целта трябва да му изискваме звук с по-висока честота.

Сега чуваме по-висок прекъсващ се звук, но не чуваме да се променя. Това е така, защото разликата идваща от жироскопичният сензор е твърде малка. За да се отличава, трябва да го увеличим.

Това, което направихте току-що:

  1. Измерваме отклонението на жирото;
  2. Умножаваме отклонението по 20;
  3. Към резултата прибавяме 1000;
  4. Крайният резултат подаваме като честота за блокчето за звук.

Това е още един алгоритъм, който създадохте днес! Браво!

Важно е да наблегнем: няма значение дали отклонението на жирото е равно на 0, 10 или -1000. Този алгоритъм ще работи с всякакви неизвестни числа!

 

Небостъргачи

Не, нашият затвор не е небостъргач, но има какво да научим от тях. Знаете ли колко е трудно да се направи един небостъргач? Колко много мерки трябва да се вземат, за да не падне? Тези огромни сгради се правят с невероятно големи основи и се изстъняват към върхът си, като пирамиди. Това е така, защото по време на земетресение, върхът на небостъргача се клати значително по-силно от основата му. За да не падне небостъргачи, основата трябва да е по здрава от върха, за да може да го задържи върху нея. От това можем да си направим извода, че един сеизмограф би работил по-добре върху небостъргач, защото вибрациите на върха са по-силни. Нямаме наличен небостъргач около нас, но имаме няколко гредички, с които сме повдигнали сензора за сеизмографа на високо.

Сумисти

Знаете ли, че сумистите всъщност се наричат Рикиши. Нека разгледаме какво се случва в една сумо битка:

content picture

Виждали ли сте сумистите как приклякват преди мача да започне?
Когато са изправени, по-лесно могат да бъдат съборени и за това приклякват. Те смъкват центъра на тежестта си надолу към земята.

Това означава ли, че сумистът, който напада от по-ниска позиция винаги печели?
Не! Сумистът нападащ от по-ниска позиция има предимство, но не винаги печели.

Защо е това?
Една причина може да бъде, че той е бил по-малък. В сумото размерът има значение. Това се дължи на факта, че голямото тяло може да поеме по-силен удар, без да се поклати. За това сумистите се хранят толкова много.

Означава ли това, че по-малък сумист не може да победи по-голям сумист?
Отново НЕ! Случва се и по-леките сумисти да печелят. Колкото победата им зависи от теглото, толкова зависи и от гъвкавостта им. Гъвкавостта на сумистите им позволява да поемат челно сблъсъка с опонента си, без да бъдат избутани.

Вече имаме охранителната система, но утре е деня за посещения, а вие имате почивен ден. Охранителите в затвора знаят само как да включат системата, но не и как да я изключат. Явно няма да има почивни дни за вас. Освен! Как можем да включим охранителната система през ноща и тя да се изключи сама сутрин?

Условие за излизане от блокчето за повторение

Досега използвахте блокчето за повторение, за да повтаряте програмите си вечно. Но знаете ли, че една програма може да се повтаря, докато посочено от вас условие бъде изпълнено, без да се налага да използвате блокчето за прекъсване на цикли?

При натискане с мишката върху някой от краищата на блока за повторение той се маркира и в долната част на прозореца можем да видим неговите настройки:

Подобно на блока за изчакване, който изчакваше докато не се случи нещо, блокът за повторение повтаря блоковете в своето тяло, докато не се изпълни условието за излизане от цикъла.

Какви условия за напускане можем да имаме? В EV3 има 5 вида цикли, които се различават по това докога ще се повтаря тялото на цикъла. Можем да ги видим, като кликнем върху падащото меню вдясно от Control. 

  1. Forever - тази настройка е отбелязана по подразбиране. При нея тялото на цикъла се повтаря безкрайно. Ако имаме блокове след такъв цикъл, те никога няма да бъдат изпълнени! Когато имаме такъв цикъл, роботът трябва да бъде спрян ръчно от светлосивия бутон;
  2. Sensor - при тази настройка тялото на цикъла се повтаря, докато някой от сензорите не отчете определена стойност. По-подробно ще се запознаем с нея в следващите нива;
  3. Time - при тази настройка тялото на цикъла ще се повтаря определено време, което се задава в секунди;
  4. Count - една от често използваните настройки. При нея се настройва колко пъти да се изпълни тялото на цикъла. За реализиране на движение в квадрат ще използваме точно тази настройка и ще я настроим на 4;
  5. Logic - тази настройка е малко по-сложна и на този етап от обучението ви няма да я използваме.

Следният пример показва как да се настрои блокчето за повторение, така че програмата да се повтаря докато моторът, прикачен на порт "А", се завърти на повече от 90 градуса:

Както виждате, условният блок за повторение може да работи с всички сензори, до които имате достъп.

Запомнете, че условието на цикъла е условие за прекъсване на цикъла. Цикълът се повтаря, докато условието не бъде изпълнено. Щом условието за прексъсване на цикъла се изпълни, се преминава към следващото блокче след цикъла в програмата.

Важно: условието на цикъла се проверява само веднъж на всяко повторение на цикъла, след като бъдат изпълнени всички блокчета от тялото на цикъла. Ако сложите блокче за изчакване вътре в цикъла, може да получите неочаквано поведение.

В програмата си имаме блокче за условен оператор, което САМО прекъсва цикъла. Можем да поставим условието му, като условие на блокчето за повторение и да го отстраним от програмата си.

Задачи по приключване на урока.

  1. Направете снимки и клипове на роботите
  2. Разглобете и подредете робота
  3. Подредете работното си място
    • Важно е да подредите електрониката на роботите върху капака на кутията.
    • Навийте кабела за програмиране, така че да е събран.
    • Поставете кабелите за робота до електрониката.
    • Навийте кабела на мишката около мишката.
    • Навийте кабела на зарядното на лаптопа така, както преподавателят ви ще ви покаже.
    • Когато изключите компютъра, оставете го до кутията по роботика.
  4. Изключете всички програми на компютъра
  5. Излезте от FLLCasts
  6. Изключете компютъра
  7. Приберете столовете си под масата