Умный светофор (учимся моргать лампочками)

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

В общем, пока только анонс и постановка задачи:

Задача: построить модель "умного светофора", который кроме стандартного переключения цветов красный-желтый-зеленый, дополнительно считает количество подошедших к нему пешеходов и по достижению заданного порога включает зеленый для пешеходов.

Для определенности: нормально красный горит 30сек, желтый 2сек, зеленый 30сек, после чего зеленый мигает 2 раза по 0.5сек и переключается на красный заново. Модель делаем попроще (меньше светодиодов): с одной стороны "для машин" и вторая сторона для пешеходов.

Подсчет пешеходов с помощью ИК-датчика по проходу ближе порогового расстояния (датчик на отражение). Скажем 5-й пешеход, приводит к переключению светофора, если тот горит "зеленым" для автомашин: также мигаем 2 раза по 0.5сек и открываем дорогу пешеходам.

Цель: освоить автоматное программирование независимых процессов.

1. Переформулируем задачу в виде конечных автоматов:

а) Автомат "светофор": поддерживает нормальный режим работы: "красный"(30) - "желтый"(2) - "зеленый"(30) - "мигающийЗеленый"(0.5) - "мигающийЗеленый"(0.5). "Слушатель вх.потока" - счетчик времени, "изменятель состояний" - "выключить всё, перейти к следующему/начать сначала, включить согласно новому состоянию". Структура состояния автомата: {"цвет", "длительность"}

б) Автомат "датчик": Если светофор не "красный" (для авто), то считает количество пешеходов у светофора, и как только превышен порог, проверяет состояние светофора и при необходимости переключает его на "мигающийЗеленый", сбрасывая подсчет заново.

Коллизии: если в период "желтый" набежит достаточно пешеходов, то светофор сразу переключится в мигающий зеленый, что детишкам оказалось очень весело. :)

Остальное пошарю, должно ещё сохраниться..

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

Да, всё будет. Только не надо комментировать раньше времени. Выложу обстоятельно в виде урока в нескольких постах. Писать сразу всё - будет одна большая портянка ниочем, да и времени столько нет. Так шта .. наберитесь терпения. Чуть-чуть. :)

Продолжение темы:

Постановка задачи - "модельная", для реализации детишками 11-12лет на начальном этапе освоения нашего "Ардуино как Лего" (кроме сына, он часто выступал как сопреподаватель в этой команде, он - четвертый). Исходный уровень: "не знаком вовсе" (таких - трое). Материалы на р.место: "Ардуино НАНО", 4 светодиода (красный, желтый, зеленый и синий) и ИК датчик.  Всё оформлено в лего, и с ним сопрягается легко. Само лего - школьные остатки от наборов NXT .. "то что не растащили", впрочем - нам хватило с запасом. Занятия проходили раз в неделю, по 3 часа с перерывами. Каждое занятие (кроме первого) было разбито на "фракции":

а) вспоминаем "прошлый раз" - примерно 30мин. Каждый рассказывал, показывал, смотрел в записки и т.д. вспоминая общими усилиями что делали и что узнали нового на прошлом занятии. Оказалось крайне полезно для "раз в неделю";

б) задача на сегодня, поиск решений, реализация .. всё остальное время (тут часто и много разбивалось на локальные подзадачки "до перерыва"), за исключением последних 30-45мин. как успевалось;

в) подведение итогов занятия, выводы (силами детишек), что узнали нового .. игра с результатом и уборка территории за собой. Это последние 30-40 мин. Даже если что-то не успевалось на занятии, тут меньше получаса не отводилось. Оказалось крайне полезно в плане на "поиграть со сделанным" и получить удовольствие.

Конструкция: фактически моделька с одной стороной светофорной частью "для машин" и датчиком пешеходов (то есть и вовсе без сигнальной пешеходной части - не хватало светодиодов), к которому впоследствии был прикручен синий светодиод и дополнен своим конечным автоматом. Но, это изложу в свое время. В той постаноке задачи, что изложена выше (и как она ставилась вначале) есть классные грабли, но .. "в свое время".

Первое занятие - вводное, с освоением электрических схем, законом Ома и пр. мелочью с помощью конструктора "Знаток". Один из троих оказался с ним знаком и ещё у одного он оказался дома но .. "не интересен". Плюсом, демонстрация наборов, знакомство с Лего (один тоже "не в курсе"). К концу занятия уже каждый собрал себе по схеме из инструкции Знатка, "на выбор". В наличии притащил из дома 3 разных набора Знаток.. кое-что забрали на ремонт. :) Ну и конечно вдоволь наслушались радио, назапускали пропеллер под потолок, подняв напругу из всех трех комплектов батареек .. и т.д. Было оч. весело, всем понравилось.

Второе занятие по сути вводное в Ардуино и Ардуино ИДЕ. Долго и нудно вспоминали "закон Ома", "параллельное/последовательное" соединения и особенно обозначения на схемах. В общем тут и наступило понимание необходимости первых 30минут. Тут же завелись блокнотики, и т.д. На самом занятии - освоение примеров из штатной библиотеки ИДЕ: поморгать лампочками, покрутить резистор, серводвигатель .. освоили эти 3, а заодно обозначилось очередное "расхождение": один дитенок оказывается "знал Ардуино", точнее уже ходил на платные занятия .. результат конечно оказался нулевым, но по мере освоения библиотек "открывалось второе дыхание" .. что-то постепенно вспоминал про "там пишут на каком-то си!" Собственно этот "си" и был целью второго занятия: что "язык" это всего лишь некий текст на английском... упс. с английским проблемы .. у нашего и ещё один. Зато есть выходец из школы с английским уклоном .. очень хороший уровень для своего возраста. К концу занятия каждый полистал примеры из коробки и попробовал самостоятельно залить его в Нано. В общем, с запуском ИДЕ, загрузкой образцов, где-что-искать, заливкой в НАНО, монитором - разобрались более-менее. Да, ещё: научились различать текст программы от комментариев :)

В общем "команда" оказалась сильно разношерстной, что после этого занятия меня поставило в полный аут. К следующему занятию готовился всю неделю .. как, что, каким способом? .. афигеть и не встать.

Третье занятие. Собственно тут только и началась работа над проектом.

 

P.S. просьба не комментировать ни этот пост ни тему .. буду дописывать, а пока убежал.

 

bwn
Offline
Зарегистрирован: 25.08.2014

Архат, куда-то вы не в те дебри. Тогда уж лучше конспект курса занятий для обучения Ардуино, толку и пользы больше будет. ИМХО.

Pyotr
Offline
Зарегистрирован: 12.03.2014

Архат, давно хотел сказать - хорошим делом занимаетесь. У нас в городе радиокружок уж лет 10 как закрылся. 

Ворота
Ворота аватар
Offline
Зарегистрирован: 10.01.2016

Хотелось бы понять куда делся мой пост? Ответ на него от ТС остался, а сам пост куда-то пропал.

И ещё, ТС,  а комментировать-то когда будет можно? Сколько ждать-то? Или это уровки в реальном времен идут - по одному в неделю?

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

Тут после вашего поста снова пролезли долб@@@@ы, несмотря на просьбу заткнуть сфинктеры на время. За сим, продолжения не будет.

Можете флудить, срать - сколько влезет. Можете вообще потереть все мои посты с 2015 года, как это сделали на амперке, по сути ЗАПРЕТИВ выкладывать там мои проекты .. спорить и что-то доказывать недоветеринарам-программистам-говнокодерам (Вас тут таких "старичков" - большинство), не способным получить вышу даже по ветеринарии - у меня желания нет.

Адью, не кашляйте, подпевая тут друг-другу. Кукушка хвалит петуха за то, что хвалит он кукушку. Без меня. Ещё раз - можете поступить также как сделали на амперке - потереть всё.