Здравствуйте, уважаемые читатели. Сегодня я хочу рассказать как я делал своему сыну игрушечный светофор. Будет схема, скетч для Arduino, поэтапный фотоотчет как всё собиралось и в конце гифка с демонстрацией работы.
Предыстория
История с создания этого светофора начиналась так. В один прекрасный день, супруга привела ребёнка из садика всего в слезах. Оказывается папа одного из мальчиков сделал светофор, и мальчик принёс этот светофор в садик, моё чадо хотело поиграть с ним, а ему не давали (может и давали, но по его мнению, мало).
Светофор получился прикольный, жена сфотографировала его на мобильный, вот это фото:
В итоге, моя малышня говорит: «Папа сделай мне такое же». Что мне остаётся, маленький ребёнок просит, значит надо делать, тем более самому было интересно сделать такую игрушку.
Схема и скетч
Я решил сделать немного другой светофор, он будет для автомобилей, и для пешеходов. Управлять светофором будет конечно же микроконтроллер, в данном случае Arduino Pro Micro (можно использовать любую другую Arduino плату). Схема простая до безобразия:
Первые три светодиода — это красный, желтый и зелёный свет для машин, остальные красный и зелёный для пешеходов.
Скетч для микроконтроллера
Найден в интернете, с моими небольшими правками
int car_red = 2; // пин подключения 2, красный для машин
int car_yellow = 3; // пин подключения 3, жёлтый для машин
int car_green = 4; // пин подключения 4, зелёный для машин
int people_red = 5; // пин подключения 5, красный для пешеходов
int people_green = 6; // пин подключения 6, зелёный для пешеходов
void setup() {
pinMode(car_red, OUTPUT);
pinMode(car_yellow, OUTPUT);
pinMode(car_green, OUTPUT);
pinMode(people_red, OUTPUT);
pinMode(people_green, OUTPUT);
}
void loop() {
Car (LOW, HIGH, LOW); // засветился жёлтый для машин
delay(2000);
Car (HIGH, LOW, LOW); // засветился красный для машин
delay(100);
People (LOW, HIGH); // засветился зелёный для пешеходов
delay(3000);
for (int x=0; x<10; x++) { // мигает зелёный для пешеходов
People (LOW, HIGH);
delay(250);
People (LOW, LOW);
delay(250);
}
People (HIGH, LOW); // засветился красный для пешеходов
delay(500);
Car (HIGH, HIGH, LOW); // засветился красный и жёлтый для машин
delay(2000);
Car (LOW, LOW, HIGH); // засветился зелёный для машин
delay(12000);
for (int x=0; x<10; x++) { // мигает зелёный для машин
Car (LOW, LOW, HIGH);;
delay(250);
Car (LOW, LOW, LOW);
delay(250);
}
}
void Car (byte red, byte yellow, byte green) {
digitalWrite(car_red, red);
digitalWrite(car_yellow, yellow);
digitalWrite(car_green, green);
}
void People (byte red, byte green) {
digitalWrite(people_red, red);
digitalWrite(people_green, green);
}
На макетной плате собрал схему, всё работает как надо:
Светодиоды покупались —
тут, плата Arduino Pro Micro покупалась —
тут, резисторы советские МЛТ — нашлись в закромах.
Надо делать самое сложное — корпус.
Сборка
Были у меня светорассеиватели от сломанного китайского прожектора:
Отталкиваясь от размера светорассеивателей прикинул размер будущего светофора. Корпус решил делать из листового вспененного ПВХ толщиной 4 мм, такой используется в наружной рекламе, материал лёгкий и достаточно прочный. В иллюстраторе набросал элементы корпуса будущего светофора:
Может кому понадобится, ссылка на раскрой светофора —
тут
Так как ЧПУ у меня пока нет, придется вырезать всё вручную. Напечатал раскройку корпуса на самоклеящейся бумаге, наклеил на лист ПВХ:
Берём нож и вырезаем, вспененный ПВХ режется довольно легко:
Пробуем собрать детали светофора:
Сверлим отверстия и примеряем светорассеиватели, за одно прикидываем какого размера и формы надо сделать козырьки:
С помощью цианакрилата и соды склеиваем корпус, содой засыпаем щели и пропитываем клеем:
Зачищаем сначала 100-й, потом 240-й, в конце 360-й наждачной бумагой, корпус приобретает такой вид:
Тоже самое делаем с основанием будущего светофора:
Стойку для светофора выточил из полипропиленовой трубы диаметром 20 мм:
Примеряем детали вместе, извиняюсь за беспорядок на столе:
Козырьки для светофора решил вырезать из пластиковой бутылки, зачищаем перед покраской:
Грунтуем, красим и покрываем лаком:
Приклеиваем светодиоды, и устанавливаем светорассеиватели на место:
Элементом питания для игрушки будет литий-ионный аккумулятор 16340, по известной технологии изготавливаем для него «холдер»:
Забегая вперед, скажу, максимальное потребление схемы когда горит одновременно красный и желтый свет около 50 мА. Аккумулятора хватит на долго, тем не менее его всегда можно достать и зарядить.
На макетной плате собираем остальную часть схемы:
Пробный пуск:
Сделал гифку для наглядной демонстрации как работает светофор, время свечения каждого цвета разумеется можно менять, отредактировав скетч:
Вот такая получилась игрушка, ребёнок очень доволен — папе приятно.
Всем удачных поделок, спасибо за внимание.
я уже взрослый, но мне хочется тоже такой)))
пы.сы. пачиняю светофоры в конторе, которая их развешивает.
ссылка
Не по ГОСТу у Вас…
Следующий этап — ещё 3 таких и управление по радиоканалу.
Делал но года три назад нечто подобное с возможностью дистанционного управления по wifi из Scratch. Думал размножить и заинтересовать ребенка управлением трафиком. Увы, дитё не заинтересовалось, в итоге забросил. :(
Вот удивительно, почему в этом возрасте такая тяга к светофорам! Я себя помню в начале 70-х — мама работала на почтовом ящике, и там мне тоже сделали светофор с индикаторными лампочками от каких-то приборов…
Вхождение обычно начинают с изучения простых вещей, самостоятельного анализа (и последующей самостоятельной модификации) скетчкй из десятка строк, в которых при соответствующих пояснениях и наличии интереса разберётся и школьник начальных классов.
Или скажете, что человек, не знакомый с логикой, электроникой и радиотехникой вообще сможет запосто отыскать неисправность в схеме kirich, если один из логических элементов окажется битым?
У меня очень поверхностное понимание, думаю. Знаю, что есть разные типы данных, есть процедуры и функции, в целом понятно про объекты, бывают какие-то указатели (тоже из названия вроде понятно, про что речь). Если не углубляться в дикую оптимизацию и прочее, то вполне достаточно.
Для отладки есть гугл в конце концов, там уже почти всё для популярных библиотек разобрано и разжёвано.
Кому-то, кто даже не в курсе как подключить светодиод к ардуине, проще разобраться с программированием, потому что его не отвлекает то, что он знал до этого. А кому-то проще сделать на логике, потому нельзя писать вот так сходу, все очень индивидуально.
Чего там трудного:
setup — выполняется единожды при запуске, loop — постоянный цикл как и во всех МК, а далее digitalWrite & delay (ну на примере данного светофора), и схему можно упростить до безобразия, ардуина и 5 диодов, всё!
Зато схему работы (алгоритмы) править — как душе угодно, хоть свою схему управления придумай, унизь автомобилистов сделав «их зеленый» — 10 секунд, а пешеходный — 70 секунд или наоборот :)
Кроме того, чтобы что-то изучать, надо понимать что это нужно будет постоянно и в будущем, иначе через год придется опять вспоминать как «мигать светодиодом».
С электроникой я начал знакомиться еще до школы, но программирование узнал только в техникуме. Не было у нас в школе такого.
без библиотек язык никому не нужен — мало кто захочет решать прикладную задачу с нуля, используя только возможности языка. А под наворотами вы что понимаете?
В частности в микроконтроллерах часто можно обойтись без библиотек для простых задач :)
Условную компиляцию, шаблоны и т.п.
Условная компиляция для МК это вообще подарок — позволяет компактно написать код, не зависящий от версии МК. Но вот их синтаксис и реализация уродливы как и большинство библиотек С++ с кучей подчеркиваний
Я с этим и не спорю. Просто говорю, что сам язык без этих наворотов — прост.
Сам язык без наворотов практически бесполезен сегодня — он ничего не умеет, даже текстовые строки для него чуждая сущность.
Не совсем понятно, почему Вы свалили в кучу директивы препроцессора и библиотеки? Это совершенно разные вещи. Имена функций и их параметров не имеют почти никакого отношения к синтаксису языка (им определён лишь допустимый набор символов). Куча подчёркиваний — это прихоть программистов, а не требование языка. Никто не вынуждает их использовать.
Но не спорю, что для функционально законченного микропроцессорного устройства программирование на каком-нибудь метаязыке на порядок удобнее (гибкость-то не нужна). Скажем, запрограммировать посудомойку на отложенный старт гораздо проще и быстрее не на С++, а с помощью пары кнопок.)))
Так речь-то всё-таки о самом языке, а не о библиотеках. Набор библиотечных функций может быть один и тот же для разных языков. А вот языки — один сложнее, другой проще. С — простой для понимания.
Библиотеки функций (для С++ — классов), естественно, есть на все случаи жизни. И можно подумать, без библиотек вы на других языках много чего напрограммируете. Без библиотек мало какой язык интересен (а язык, в который много чего встроено без библиотек, будет либо узкоспециализированным, либо слишком сложным).
www.embedded.com/tag-vs-type-names/
В языке множество ситуаций неопределенного поведения by design. Новички легко попадаются в ловушки
shahmaty.info/chess-puzzle/
Э, нет. Это уже не «просто играть» :)
У С и С++ богатые возможности, но никто не заставляет при программировании микроконтроллеров использовать их все. Выучите десяток примитивных операторов — этого хватит.
К тому же реализация с механическими часами не так проста. А с ростом сложности надёжность падает.
Все условия выполнены. Да, гибкости нет, зелёный мигает один раз. Но работает. И у kirich чуть выше (и чуть сложнее) — тоже работает.
Я лишь против высказываний, что на жёсткой логике архисложно сделать игрушечный светофор. Сложнее, но не запредельно. Я против мнения, что начать работать с Ардуино сложно: электронщикам из-за «безумно сложного» языка C, а программистам — из-за сложной схемотехники. И то, и другое не соответствует действительности. И, раз уж тут подвожу итоги, про надёжность: реализация на жёсткой логике надёжнее, но в нашем случае это не имеет значения и потому не может быть аргументом в пользу выбора той или иной схемы.
Еще есть HCT, но похуже.
граждане) допустили слишком много ошибок. Постоянно нужно следить за скотом.А, все беды же от депутатов\полицаев\священников, забыл, да.
David Hough, Proficient motorcycling
Хотя следует признать, что законодательство у нас в плане наказания пьяных мразот неадекватно мягкое. И даже не за дтп, а просто за факт нахождения за рулем.
замыкал проводаклацал выключателемне хватает очень, что бы ребенок мог сам руку приложить, если не к изготовлению, то хотя бы к управлению игрушкой.
а тут похоже папа даже не показывал ребенку процесс, и какая для ребенка разница купили ему игрушку или папа сделал?
а когда папа может купить — это тоже повод для гордости, но чье кунг-фу круче — пожалуй, здесь оффтопик
Принесли как-то прожектор на ремонт, в нём светодиоды деградировали от перегрева, ремонт был не целесообразен, а линзы от прожектора остались.
На работу, поди, на машине ездите? А на телеге, запряжённой лошадью, слабо?
2. не было микроконтролеров
3. Зачем из пушки по воробьям стрелять?
4. Я делал все сам без помощи родителей. И во всем разбирался.
2. Если изучаем электричество — то на тумблерах. Как вариант на реле.
3. Если изучаем электронику — то тут транзисторы
4. Если изучаем логику — то логические микросхемы типа К155ЛАх или аналоги :-)
5. Если изучаем программирование микроконтроллеров — то как у автора.
Все от задач зависит что ХОТИМ изучать с ребенком. Главное чтобы он сам все делал. А то получается как в анекдоте про квадрокоптер.
Главное чтобы это работало и было интересно ребенку, ему в 2-5 лет как то по барабану ваша электроника.
Своей пипиской меряться не зазорно.
Хорошо, кода у папы руки из нужного места растут.
Вы смеётесь?
Вам для понимания, что значит «беспорядок на столе»…
Я тоже такого принципа придерживаюсь.
Сейчас переехали, хотя бы немного полок появилось все свое разложить, но стола такого не будет наверное никогда =)
Мой брат любит беспорядок и легко в нем ориентируется, я наоборот люблю порядок и также легко в нем ориентируюсь =)
Две крайности одной сущности =))
Да-да, вы все помните и знаете где лежит, безусловно. И кпд 146, это тоже понятно )
у меня есть и коробки с деталями, где для удобства поиска есть вложенные коробки и баночки, и бардак на столе, как у автора фото, которое мы обсуждаем.
гораздо быстрее в процессе работы взять деталь или инструмент со стола, чем лезть на антресоли в ящик/коробку/футляр/баночку и т.п.
золотая середина где-то между )
понятно, что самые часто используемые вещи «кешируются» на поверхности стола. Другое дело, когда их количество возрастает и вместо того, чтобы достать из ящика, тратишь больше времени на поиски.
а так, действительно, золотая середина где-то между.
но явно не на фото уважаемого DRON2402.
Dickie toys, не реклама, просто может кому пригодится, как и мне. Делает то же самое, для машин и для пешеходов. Цена около 6 дол. Ищется по названию производителя, в комплекте еще два дорожных знакапо ходу, до сих пор на авито можно встретить :)
Лампочка по вертикали перемещается рычажком, торчащим из опоры.
Замечу...-именно на этой фазе и происходит единение\конфликт «отцов и детей»!
Пропустишь?...-пожалеешь! Ибо, «отдал от себя» копейки, а приобретёшь…
Ну, и цена бывает разной!(-кому-то и Порше будет мусорником ныне..:(...)
А вот моя мигалка!
Из особенностей:
Питание от micro USB
Контроллер — atmega88 ( в принципе любая из мег, просто взял что было)
Матрицы — расковыренные AD22
Питание матриц DC-DC step UP через UNL2003 и стабилизаторы тока 20 мА в (виде диодов)
Корпус верх — мебельная ножка, алюминиевая 40х40х115, из леруа,
Стойка — алюминиевый контейнер из под какого-то лекарства (идеально подошел по диаметру в мебельную ножку),
Нижняя часть — распаечная коробка Tico из леруа. В нижней части корпуса залит бетон с болтами, чтоб не падал.
Время цикла регулируется джемперами для каждой стороны, джемепера спрятаны под фигурной крышечкой, сверху. крышекчка это, бывшая, выкручиваемая опора мебельной ножки
Корпус в сборе окрашен черной матовой краской из баллончика
Софт сделан в FLprog, сейчас готовится другая версия, на ESP с управлением временем и режимами по Wi-FI, в качестве драйверов для светодиодных матриц будет участвовать микросхема WS2811, удобна тем что в ней 3 шим драйвера для светодиодов, как раз по 1 микросхеме на секцию, бонусом — можно будет рулить яркостью матриц, а то при полном токе они слепят по вечерам.
А как программист не могу не отметить пропадающий потенциал… Можно сделать кроме автоматического режима ещё и пешеходный по запросу (кнопка для пешеходов), можно добавить ручное управление (типа инспектор регулирует). Я как-то мешок тактовых кнопок за цент купил (ошибка что ли у продавца была), сразу приходит на ум их использование в подобном проекте. :)
Срок службы электронных игрушек редко превышает срок службы батарей, надо чтоб сохранялась годами? — Убери за стекло, в шкаф, пусть ребенок ходит, смотрит, облизывается и тихо ненавидит…
Посмотрите внимательно, ничего не выпадает из контекста? Выключатель питания. Такого нет в реальном светофоре, это рудимент.
Согласитесь, это не_правильно. Перенесите его на боковую поверхность подставки, диссонанс уйдет. ))
(С помощью остатков пластика и «соды», ретуширование можно сделать очень быстро и практически незаметно)
А вот у меня предложения/замечания по конструкции:
1. Козырьки. Бутылка ПЭТ самый неудобный материал (нормально не клеится, не красится). У вас же был вспененный ПВХ покрытый тонким слоем листового ПВХ — отличный материал для обработки и склейки «намертво». И обрезков было достаточно (с учетом п.2.)
2. Козырьки «советские», закрывающие лампы накаливания. В современных светодиодных светофорах козырьки маленькие — больше для защиты от непогоды, чем от засветки. Важно — маленькие козырьки более безопасные в эксплуатации модели (не оторвутся от случайного падения)
3. Раз уж «внутри неонка» ©, то сделайте одну-две кнопки для управления режимами!!! Это повысит «играбельность» на порядок! Например — одна кнопка может просто сразу менять режим на следующий (не дожидаясь таймаута). А другая, например — кнопка «переход по требованию», когда длинный режим зеленого для авто меняется на пешеходный по правилам… А еще, например, при нажатии обоих кнопок в течение 5 сек — включается «режим бога» где управление каждым светофором будет своей кнопкой… представляете какие ДТП можно устраивать? :) и не надо говорить, что включенные два зеленых приучит ребенка к беспорядку. Скорее — приучит ребенка смотреть по сторонам даже при переходе на зеленый.
4. Для тех, кто будет повторять — присмотритесь к конструктору ЛЕГО! наверняка у вас валяется куча деталек от китайских «аналогов». Если делать корпус из них (с применением клея), то готовый продукт будет гармонично интегрирован в ДД с лего-машинками и человечками…
ps Классный проект. Бросайте его на другие ресурсы (в т.ч. импортные. На инструктаблс, например), и куча детей получат отличные подарки к новому году!
потому что эти конструкторы больше, чем нужно, заточены на сборку конкретного макета, и поэтому малопригодны для свободного творчества, которое и развивает инженерное мышление.
условно говоря, из набора Лего робота вы вряд ли соберете токарный станок.
но при наличии в продаже условного Лего набора токарного станка — вы вынужденно купите и его, и отдельно робота тоже.
в отличие от невзрачных советских механических конструкторов, которые состояли из примитивных деталей простейшей формы (металлические пластинки с отверстиями под винты М4 и колеса из жесткого полиэтилена), которые позволяли собирать любой механизм и, например, на своем опыте убеждаться, что круглые колеса лучше квадратных.
т.е. империя Лего это своего рода секта покупателей, нацеленная на стратегию «собери их всех», как наклейки в сетевых продуктовых магазинах. При желании собрать новую модель нужно покупать новый Лего, — как-то так.
отсюда и эти завалы деталей к моменту, когда ребенок подрастет и перестанет интересоваться Лего.
А вы меня уже обвинили чуть ли не в интимной связи с Оле Кирк Кристиансеном.
в магазинах продаются ведра деталей лего. создавай сколько влезет
не хочешь? вот тебе готовый наборчик, из которого по инструкции можно сделать 2-3 модели
Когда увидел Mindstorms очень понравилось, а учитывая, что, некоторые личности из этого делают, это явно вам не советские металлические конструкторы
В принципе, если докинуть моторы и ведро деталей, то можно собрать много что, явных ограничений нет.
Но, конечно, токарник из репчатого лука и ножек от табурета духовнее как-то.
Сейчас клею мотыльницы для друзей.)
И вопрос, как вообще ребенок этим играет, интересует сам процесс игры. Тоже задумался сделать, но думаю хватит его на пол часа.
Ребёнок чуть деформирует козырёк пальцами в процессе игры — вся краска и отвалится.
Увы., неправильно выбранный материал для замечательного проекта.
И, имхо, не хватает платы USB зарядки.
Добавить управление ИК пультом, можно от телика, там бывают красная, желтая и зеленая кнопки. Есть еще, правда, голубая… Это для тех кто с мигалками. :)
Я год назад писал про мера-придумщика светофорного движения. Не сочтите за рекламу. Проработало оно около месяца.