
Програмування світлофорної системи: виявлення транспортного засобу

Перейдіть на інший план, щоб отримати більше контенту
Яке повідомлення передається по радіо на світлофор?
Це світлофор. Це на червоному. Ось приїжджає автобус. Який запізнюється. Уявіть, якби автобус міг повернутися за розкладом, не чекаючи на червоне світло! Що, якби автобус міг сказати світлофору, що він приїжджає? Зараз ми збираємося запрограмувати автобус так може надіслати повідомлення на світлофор. Для зв’язку ми будемо використовувати радіосигнали. Перш ніж почати програмування, нам потрібно: Підключений мікроконтролер і три світлодіоди до нього, як описано в іншому відео. Ще один мікроконтролер, що представляє шину. І програма для автобуса. Почнемо з псевдокоду для автобуса. Автобус передасть радіосигнал на світлофор. Щоб світлофор міг приймати радіосигнал автобуса він повинен використовувати ту саму частоту, та сама радіогрупа. Вибираємо радіогрупу «один». Отже, псевдокод для програми шини починається з: Запустити програму. Установіть групу радіо на «один». Автобус хоче мати зелене світло. Коли автобус надсилає повідомлення «один», це означає «Ось я прийшов, перемикай на зелений». Коли ж тоді автобус пришле свою «одинку»? Ну, коли наближається до світлофора. Ми вирішили підключити це до Кнопка на мікроконтролері. Якщо натиснути кнопку А, відправити «один». Це фактично все, що нам потрібно для автобусної програми. Тепер до програми світлофора. Світлофор слухає той самий радіоканал, що і автобус. Отже, псевдокод світлофора також буде: Запустити програму. Установіть групу радіо на «один». Світлофор повинен не тільки слухати, а й реагувати на кожне повідомлення з автобуса. Щоб постійно слухати і реагувати, нам потрібно мати код, який запускається знову і знову. Тоді ми використовуємо цикл з умовою, яка завжди є істинною. Ця частина коду виглядає так: Тепер світлофор весь час просто світить червоним. Коли світлофор отримує повідомлення від автобуса, він стане зеленим: надати автобусу пріоритет. Створіть змінну "prio", яка зберігається трек автобуса, що запитує пріоритет. Коли "prio" - "правда" автобус має пріоритет. інакше “prio” є “помилковим”. Ми додаємо це до псевдокоду: Якщо радіо отримує «один» тому встановіть «prio» на «true». Коли "prio" - "правда" світлофор стає зеленим. Інакше світлофор повинен світитися червоним. Додаємо цю умову: Якщо «prio» дорівнює «false» тільки тоді світлофор загориться червоним. Робимо відступ у рядку, який пов’язаний із рядком if. Але якщо "prio" не дорівнює "false"? Пишемо: Інакше вимкніть червоний і увімкніть зелений. На початку програми світлофор має бути червоним, «prio» має бути «false». Перевіримо наш псевдокод? Спочатку "prio" - це "неправда" і світлофор червоний. Тепер водій автобуса натискає кнопку. «Пріо» стає «істинним». Код переходить до «else» і світло стане зеленим! Але знову не червоніє. Хм...ми ніколи не вирішували, як довго має горіти зелене світло, "prio" більше ніколи не повернеться до "false". Тож ми даємо автобусу три секунди проїхати повз світлофор, додавши три секунди пауза, тут. Потім вимикаємо зелене світло і ставимо «prio» на «false», щоб червоне світло могло знову світити. Всі ці рядки пов’язані з частиною else. Ми показуємо це, вкладаючи їх. Перевіримо ще раз. «Пріо» — «неправда», а світлофор горить червоним. Ось приходить автобус, який запізнюється, кнопка A натиснута і «prio» стає «істинним». Програма переходить до «інше» і світлофор стає зеленим. Через три секунди "prio" стає "false" і світлофор знову стає червоним. Хоча ми не запрограмували жовте світло, і завжди червоний, якщо не приходить автобус, все одно це хороший початок. І, можливо, цей автобус наздожене свій розклад. добре!