Тепер необхідно визначити, як така зміна конструкції позначиться на програмі. Для простоти знову слід почати з найпростішого релейного регулятора і тому, в першу чергу, цікавлять можливі положення датчиків щодо лінії:
Насправді, можна виділити ще одне допустимий стан - на складних трасах це буде перетин перехрестя або якогось потовщення на шляху.
Інші положення датчиків розглядатися не будуть, тому що або є похідними від показаних вище, або це такі положення робота, коли він зійшов з лінії і вже не зможе повернути себе на неї використовуючи інформацію з датчиків. У підсумку, всі перераховані положення можна звести до наступної класифікації:
- лівий датчик, також як і правий - над світлою поверхнею
- лівий датчик над світлою поверхнею, правий датчик над темною
- лівий датчик над темною поверхнею, правий датчик над світлою
- обидва датчика знаходяться над темною поверхнею
- Якщо обидва датчика над білою поверхнею, то це нормальна ситуація, в якій лінія знаходиться між датчиками, тому робот повинен їхати прямо.
- Якщо лівий датчик ще над світлою поверхнею, а правий датчик вже над темною, значить, робот заїхав своєю правою частиною на лінію, а значить йому потрібно повертати направо, щоб лінія знову опинилася між датчиками.
- Якщо лівий датчик виявився над темною поверхнею, а правий ще над світлою, то для вирівнювання роботу треба повертати ліворуч.
- Якщо обидва датчика над темною поверхнею, то в загальному випадку, робот знову продовжує рухатися прямо.
Ця дія ще не дозволяє сказати в яку сторону роботу треба їхати. Але воно розділить стану, перераховані вище, на дві групи: (I, II) для верхньої гілки і (III, IV) для нижньої. У кожній з груп тепер по два стану, тому необхідно вибрати якийсь з них. Якщо уважно подивитися на перші два стану I і II, то вони відрізняються становищем правого датчика - в одному випадку він над світлою поверхнею, в іншому - над темною. Саме це і визначить вибір, яку дію зробити:
Тепер можна вставити блоки, що визначають поведінку моторів згідно з таблицями вище: верхня гілка вкладеного умови визначає комбінацію "обидва датчика на світлому", верхня - "лівий на світлому, правий на темному":
Нижня гілка основної умови відповідає за іншу групу станів III і IV. Ці два стани також відрізняються один від одного рівнем освітленості, який уловлює правий датчик. Значить, він буде визначати вибір кожного з них:
Утворені дві гілки наповнюються блоками руху. Верхня гілка відповідає за за стан "лівий на темному, правий на світлому", а нижня - за "обидва датчика на темному".
Слід зазначити, що дана конструкція всього лише визначає, як включити мотори в залежності від показань сенсорів в певному місці поля, природно через мить програма повинна перевірити чи не змінилися показання, щоб відповідним чином підправити поведінку моторів, а через мить ще раз, ще й т . Д. Тому вона повинна бути поміщена в цикл, який буде забезпечувати таку повторювану перевірку:
Така досить проста програма буде забезпечувати досить високу швидкість пересування робота вздовж лінії без вильоту за її межі, якщо правильним чином налаштувати максимальну швидкість при русі в станах I і IV, а також задати оптимальний спосіб гальмування в станах II і III - чим крутіше повороти на трасі , тим "жорсткіше" має бути гальмування - швидкість повинна скидатися швидше, і навпаки - при плавних поворотах цілком можна застосовувати гальмування через вимкнення енергії або навіть взагалі через незначний скидання швидкості.