Окончание предыдущего обзора
Если Вам вдруг понадобилось быстренько собрать что-то простое, автономное и более-менее прилично выглядящее — вот вариант, как это можно реализовать.
В итоге, сделал устройство автоматики — генератор импульсов с регулируемой амплитудой и длительностью. Мне он на работе помогает автономно проводить проверку и чистку электромагнитных клапанов и реле с рабочим напряжением 5-28В и потребляемой мощностью до 4Вт.
Конечно, проще было собрать генератор на базе аппаратного таймера NE555 и подстроечниками выставлять необходимые параметры импульсов, но я потихоньку осваиваю Arduino и решил попробовать сделать устройство на базе контроллера. Был выбран один из самых маленьких неоригинальных контроллеров Digispark, совместимый с Arduino, возможностей которого более чем достаточно для выполнения простейших функций. Подробнее об этом и других контроллерах я постараюсь рассказать в отдельном обзоре.
Преобразователь повербанка использован без каких либо переделок.
Повышающий преобразователь из этого обзора с небольшими доработками, обозначенные на схеме красным.
Конденсатор снижает пульсации на выходе, а перемычка на подстроечнике позволяет значительно повысить плавность регулировки напряжения в области рабочих значений.
На контроллере был отключён красный светодиод по питанию, т.к. он давал паразитную засветку индикатора контроля выхода.
В качестве выхода использован порт P1, т.к. к нему уже подключен индикатор для контроля режима работы.
В качестве входа с кнопки использован порт P3, т.к. он имеет нормальную внешнюю подтяжку 1кОм.
Внутренняя подтяжка входа Reset контроллера весьма слабая (50кОм), что вызывает ложный сброс контроллера в условиях сильных помех. Пришлось его заблокировать, принудительно подав +5В.
Итоговая схема подключения всех модулей
В качестве ключа можно использовать любые N-канальные полевики с максимальным напряжением 55-100В и током более 10А, например
HUFA75307D (55V 15A 0,09Ohm)
IRLU024NP (55V 17A 0,065Ohm)
IRFU3910P (100V 16A 0,115Ohm)
Резисторы по выходному питанию необходимы для ограничения импульсного разрядного тока через ключевой элемент на безопасном уровне при кратковременном замыкании выхода.
Диод на выходе гасит ЭДС самоиндукции подключённых катушек, что предотвращает пробой ключевого элемента.
В начале, повышающий преобразователь пытался запитать непосредственно от аккумулятора 3,7В и ничего из этого не вышло, т.к он не смог вытянуть требуемые 24В. Это связано с ограничением MT3608 в 90% Maximum Duty Cycle. Поэтому пришлось использовать двойное преобразование напряжения 3,7В > 5В > 24В
Т.к. на холостом ходу преобразователь и контроллер потребляют относительно небольшой ток, пришлось подключить дополнительную нагрузку в виде резистора 200 Ом, чтобы преобразователь не отключался самостоятельно без нагрузки.
Конструкция
Перемычки корпуса при необходимости подрезаются в нужных местах
Тактовую кнопку и обе платы приклеил к корпусу холодной сваркой Poxipol
Настройка выходного напряжения производится отвёрткой рядом с тактовой кнопкой
Для программирования контроллера, пропилил отверстие для гнезда microUSB Digispark
Силовой ключ и диод удобнее всего оказалось разместить прямо на выходном разъёме навесным монтажом.
Весь монтаж выполнен пайкой проводом МГТФ, разъёмы намеренно не использовались.
Готовый монтаж
Чтобы мигающий красный светодиод было лучше видно, напротив него на крышке приклеил подходящую белую трубку в качестве световода. Для синего светодиода световод установлен штатно.
Красный индикатор видно слабовато, т.к. крышка плохо пропускает свет.
В собранном виде
Для подключения генератора к различным устройствам, используются переходники. Вот один из них — для подключения клапанов.
Диаграммы выходных сигналов во всех режимах работы.
Для программирования использовал IDE Arduino 1.6.5
К сожалению, С++ практически не знаю, поэтому в программе использовал только простейшие функции, не используя библиотеки, подпрограммы и макросы. Функция «delay» используется только для обработки нажатия кнопки и не вносит искажений в рабочие временные циклы.
Короткое нажатие тактовой кнопки переключает режимы работы по кольцу (всего их 6), длительное нажатие устанавливает 1 режим работы. При желании, программу можно переделать под нужные требования, комментариев там достаточно.
Можно попробовать добавить сохранение режима после отключения питания, программирование выдержек времени прямо с кнопки и многое другое.
Если программисты найдут в текущей версии косяки — не стесняйтесь поправить :)
Вывод: несмотря на кажущуюся простоту конструкции, собрать и отладить её было непросто, зато для меня устройство получилось очень полезное, что с лихвой компенсировало все труды.
Планирую купить+41Добавить в избранноеОбзор понравился+74
+135
Корпус прекрасен, у меня тоже лежит такой, как повербанк он не заработал, при зарядке телефона 1А перегревается и отключается, а дальше идут постоянные включения/выключения как он немного остынет или опять перегреется. А вот как корпус прибора с питанием 5В задумка великолепная. Обзору однозначный плюс
Это электротехника — наука о контактах. Все неисправности сводятся к двум причинам: либо контакт есть, там где он не нужен, либо контакта нет, где он требуется. )))))))))))
Хотел все время спросить мт3608 как себя ведет? В тишине слышно как пишит или нет? Просто на днях делал повыщающий преобразовтель с 3,7 вольт до 5 вольт. Ставил https://aliexpress.com/item/snapshot/7268048657.html
Так он меня своим микрописком просто добил.
в программе тут использование таймера напрашивается, была бы раза в 3 короче)
и во много раз энергоэффективнее — выставил регистры в обработчике кнопок и тинька сама будет дрыгать ногой, можно в обработчике ещё и спать её отправлять до следующего прерывания
Хорошая поделка!
Код конечно «жестковат» — выглядит странно и с++ тут нет, простой c, для начала изучения вполне норм
У меня вот есть потребность питать от 18650 некую поделку, которой требуется 5 и 12 В. Потребление по 5 В составит в районе 300 мА, потребление по 12 В порядка 500 мА. Устройство от батарейки должно уметь работать часа 3 для одного заряда. Вот думаю сколько мне батареек потребуется параллельно соединить чтобы их смогла зарядить народная платка зарядки и как лучше сформировать необходимые 12 В.
Я об этом догадывался :)
Покажите как надо в образовательных целях.
Потребление по 5 В составит в районе 300 мА, потребление по 12 В порядка 500 мА. Устройство от батарейки должно уметь работать часа 3 для одного заряда.
Можно легко прикинуть — у меня получилось не менее 3х банок по 2600мАч. Лучше брать с запасом 4шт
общие пожелания по коду: пины и «магические константы» (типа времени) лучше вначале программы задать #define — так и программа читается легче и лишние комментарии можно убрать, второе следует к памяти относится бережнее, конкретно здесь — не использовать int для флагов и режима — тип byte для них самый раз. Ну и режимы работы у вас отличаются только временами — есть смысл обобщить и вынести проверки в функцию, код будет гораздо более читаем. Времена передавать аргументами. Я бы описал режим структуркой и определили их массив вначале, где номер режима определяет индекс в массиве — код был бы очень легкочитаем.
лучше вначале программы задать #define
Надо попробовать, но программа станет ещё длиннее
Если длиннее для человека, то все равно. Чем понятнее тем лучше.
Да, действительно можно сэкономить целых 2 байта :)
Привычка — вторая натура. Лучше сразу привыкнуть брать переменные по минимуму занимаемого места, магические числа описывать как константы /define, делать отступы и писать код который сможешь понять через полгода после окончания проекта.
Банальности, но очень сильно помогают в работе с программой.
Но вот только может старшее поколение пояснит мне такую любовь к использованию МГТФ провода?
Я еще в детстве, в радиокружке его люто невзлюбил, потому как разделывать — гемор.
Но ладно, тогда у нас проводов особо не было, сейчас и продаются, и у меня, как у админа — куча пучков от дохлых БП и прочего.
Разноцветные, красивые, сразу понятно. что куда идет. А тут — один цвет, и капризный в разделке.
Жилы вы при этом не вытягиваете?
Я часто просто подплавляю изоляцию жалом (плоское), и потом кусачками…
Видите как, неудачный детский опыт до сих пор жив…
На оборонном заводе (учился там когда-то на монтажника РЭА) для зачистки МГТФ используют обжигалку. Выглядит как старый аппарат для выжигания по дереву. Т.е. нихромовая проволока, раскаленная докрасна.
А если у кого в руках замечали кусачки… казнь была медленной и мучительной. 8)
А в домашних условиях я использую обычную «турбо» зажигалку.
Там тех паров… мизер по сравнению с парами от припоя и прочего.
А кусачками все равно жилы и изоляция повреждаются. Да и края потом лохматые.
Ну и МГТФ 0.03 кусачками у меня не получается зачистить.
хуже, да, но там где не нужен мгтф, где нет вибраций, высокой температуры и устройство не подвергается мех возд, паяю ide жилами, тем более прототипы навесным монтажом, которые все равно потом разберутся. Не вижу смысла в такие места резать мгтф.
Качество меди, жил, прочность, термостойкая!!! изоляция.
Зачищать надо УМЕТЬ! Даже кусачками не проблема, а уж спец инструментом…
Долговечность! После вымачивания в солёной океанской воде.Даже через 50 лет провод из жгута -как новый.
Королёв не смог запустить Р-1 копию Фау-2, пока не наладили выпуск проводов в фторопластовой изоляции.По немецкой естественно! технологии и оборудовании.
Гуттаперчевая отечественная -горела.
Вас никто и не просит пользоваться МГТФ, есть полно китайского барахла.Нам больше останется.
Я отрезками МГТФ собирал свой первый компьютер по типу Радио-80 на крейте.А Специалиста уже эмалированным проводом -пайкой перегретым паяльником к контактным площадкам макетной платы.
Я что-то сомневаюсь, что 90% местных самоделок требуют такой пресловутой надежности, о которой вы говорить.
А вот простоты «чтения» конструкции, чтобы было видно сразу, что куда идет — да.
Да, муж сестры, старше меня на 10 лет — тоже свой первый «спектрум» так паял, но это же мазохизм чистой воды, по мне.
А у вас почему-то сразу, если кому-то что-то неудобно, так человек не умеет, да? Может, он сексом предпочитает по-другому заниматься? ;)
Так дело ТОГДА было даже не в надёжности а в удобстве!
Пользовались теми проводами, что были на производстве самыми лучшими и удобными-для себя любимого.
Были и ПВХ провода в двойной «шёлковой» изоляции.Были и одножильные, были и в шёлковой изоляции -много всего было.Так у них концы оболочки плавились, плавилась изоляция обнажая жилу и угрожая замыканием.А монтаж на плате ПК ну очень плотный.Представте себе ткнули вы в гущу паутины проводов горячим паяльником, чтобы подпаяться к похороненному в глубине пятачку?
И все провода проплавились до жил-замыкание и Сизифов труд на смарку!!! Если вы видели подобные конструкции то за проводами платы было не видно!
А МГТФ был всех толщин в наличии и зачистка проблем не представляла.
Мазохизм и адский труд.А куда деваться если готовые платы были дифсит и стоили пару-тройку зарплат? А сколько стоил Синклер или советский Эппл(3600-9000 от комплектации рублей в 86 году при зарплате в 130, Волга 10 000)??? Память 48килобайт стоила ДОРОЖЕ самого ПК.
ЛУТ технологии не существовало(платы разводили рейсфедерами нитрокраской или цапон лаком даже для пром телевизоров Электрон, Рубин итд 3УСЦТ), лазерных принтеров ещё не было даже на производстве, персональных ПК дома с программами разводки тоже.Были только отечественные и американские Ксероксы под роспись в 1 отделе с перечислением копированного материала.Только промышленные установки проектирования и производства плат, занятые ТОЛЬКО военным производством-не многие имели к ним доступ и знания пользования программами.Заказать печать плат официально для себя или мелкой партией было не возможно(до НЭПА Меченого), только по блату через задний проход за большие деньги, от предприятия итд.Китая ещё не было.
Есть и были конечно американские фторопластовые ЦВЕТНЫЕ провода не хуже МГТФ, но вы ЦЕНЫ на них видели??? Потому что они только МИЛИТАРИ класса.
Многие к тому же имеют старые запасы с работы, а барыги торгуют на радиорынках запасами со складов(кто что охранял то и имел).
И на сегодня по соотношению цена/качество ничего лучше у нас на рынке НЕТ.
Ваш Кэп О.
Я бы порекомендовал добавить [mode = 0] [Uвых = 0]. И при запуске вставать в этот режим, дабы случайно не пожечь нагрузку, если напряжение было случайно не перенастроено.
У меня вопрос, а для чего и где используется это устройство? Вижу много умных советов в комментариях как улучшить что бы хорошо работало, и примерно такой же тематики, а какое его предназначение в устройстве или связке с другими работающими от электричества.
В конкретно вашем случае, где? если не секрет конечно т.к. обзор и скетч к нему. А к предыдущему комментарию это и так понятно что стробоскоп по алгоритму через реле, по видео можно убедиться ещё раз, используют в таких случаях которые вы и перечислили.
Например, есть электромагнитный клапан, который начал работать нестабильно. Я его снимаю, помещаю в моющий раствор и подаю импульсы. Аналогия — чистка форсунок в авто.
Попробуйте flprog, бесплатно, визуально. Мне было с ним гораздо проще сделать вменяемый проект для себя. До этого все какие то наработки копились но в готовое изделие не оформлялись. Не думаешь каким макаром писать код, просто сразу делаешь то, что надо. Не реклама, просто мне удобно показалось.
Автор молодец, как всегда, в электронике, но вот скетч с точки зрения программиста ужасен )). Осваивайте функции, массивы, логический тип переменных и получайте удовольствие от красивых, компактных и эффективных программ!
Сам во времена симбиан немного кодил на питоне, и как у 99% самоучек поначалу получался реальный «индийский код» То есть много текста, куча функций «на будущее» коменты сопровождали каждую не до конца освоенную функцию. На старом харде нашел свои первые «творения» и ужаснулся.
поддерживать такой код приятнее, помоему. Для добавления и изменения режимов достаточно менять инициализацию массива структур, остальные все настройки вверху. Это наверно не конкретный код реализации — мне просто приятнее так смотреть )
Если Вам что-то непонятно — спрашивайте конкретнее, объясню. Вам еще учиться и учиться эффективному программированию. И в этом ничего зазорного. Я тоже не так давно узнал, что в среде Ардуино: HIGH = 1, LOW = 0, TRUE = 1, FALSE = 0
Для облегчения написания кода флаги все можно проверять или скажем if(flag) или if(!flag). Т.е. digitalRead(BUTTON_PIN) == LOW приводится к !digitalRead(BUTTON_PIN)
как то так помоему не хуже… только надо проверить — написал за 5 мин без проверок
Спасибо, почти работает :)
— при запуске, выход неактивен, что не позволяет отследить запуск программы до нажатия кнопки
— появился дополнительный режим со случайной частотой моргания. Видимо вылет за границу диапазона.
Как работает эта программа — пока не понял…
У автора проще, не нужно быть программером, чтоб понять реализацию. Сам сторонник так писать, пусть будет всё последовательно, чем куча непонятных строк, типа «template<typename T, size_t n> inline size_t arraySize(const T (&arr)[n]){return n;}»
При этом даже моя маленькая метеостанция (темп, давление, влажность дома и на улице), с дисплеем от кассового аппарата, выводом данных на narodmon, с радиоканалом на IRF до кухни с датчикми газа и протечки, спокойно влезла в 328 контроллер вот таким вот последовательным кодом и место осталось, и читается легко, и менять код просто, когда видно сразу куда чего дописать при изменениях.
Белая метеостанция? Ул. Стекольная? ))) Такой большой город и всего один датчик.
Я на ESP-12 собрал. Пока один датчик для пробы, остальные жду с Китая. По NRF можно вопрос в личку?
Конечно. Но я просто IRFок в своё время набрал, теперь мучаюсь (не дальнобойные они, через всю квартиру с бетонными стенами очень с трудом). Теперь, когда WiFi по той цене, что IRF стоили, лучше бы на них собрал, но переделывать смысла уже не вижу, и ирфок ещё штук 7 осталось ) (правда засыпают они зачётно, вообще не потребляют практически)
колхоз дело добровольное
поддерживать приведенный код для меня проще, и раз уж писать на языке предстоит и использовать в дальнейшем программу — немного времени потратить на базовые принципы совсем не повредит.
Хотя… большинство программистов из Индии с вами согласятся :)
вообще-то эта плата предназначена для построения устройств на базе софтового усб, причем писать софт для мк уже не нужно, т.к. есть все готовое littlewire.cc/
Замечательное устройство! Вот только второй MicroUSB разъем на мой вкус выглядит немного «лишним». Не думали о переносе его функций на разъем PowerBank’а? «Земля» у них общая, линии данных у MicroUSB PowerBank’а не задействованы или закорочены. Остается питание +5V. Его можно было организовать с помощью двухпозиционного переключателя у которого два вывода подключены как у вас – общий на +5V Digispark, второй на OUT+ PowerBank, а третий подключить к IN+ PowerBank.
вот новый код:
— первый параметр период, второй длительность импульса (в коде автора обзора, также как и в моем предложенном, контролировалось пространство без импульса)
— расписал почти каждую строчку комментариями
— ввел флаг окончания импульса, чтобы лишний раз не дергать
— убрал лишнюю переменную последней длительности импульса
— нулевой режим удален в принципе
— мелкие правки
Проверил, работает нормально :)
Ваш скетч немного отформатировал и добавил в статью.
Листинг и скомпилированная программа стали немного короче, но как она работает до конца не понял
Кстати, странно, что никто не упомянул про EN вход у MT3608. Вероятно, здесь полезнее управлять затвором полевика, но есть ещё способ посылать логический сигнал на enable вход в повышайке, но иногда это очень полезно. При логическом нуле на EN входе (это pin4, левая ножка со стороны входа, спаянная с плюс-питанием вместе, её вполне легко можно отогнуть булавкой, например, либо даже дорожку перерезать) она жрёт 0.1 микроампера. Хотя да, для красивой формы сигналов (в случае высокоимпендансной нагрузки) полевик на выходе уже после кондёров целесообразнее.
А для не-сигнальных задач — Enable вход :)
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.
Так он меня своим микрописком просто добил.
А что это еще на входе?
На схеме красным эта доработка не обозначена…
и во много раз энергоэффективнее — выставил регистры в обработчике кнопок и тинька сама будет дрыгать ногой, можно в обработчике ещё и спать её отправлять до следующего прерывания
Так я и использовал программный таймер.
Код конечно «жестковат» — выглядит странно и с++ тут нет, простой c, для начала изучения вполне норм
У меня вот есть потребность питать от 18650 некую поделку, которой требуется 5 и 12 В. Потребление по 5 В составит в районе 300 мА, потребление по 12 В порядка 500 мА. Устройство от батарейки должно уметь работать часа 3 для одного заряда. Вот думаю сколько мне батареек потребуется параллельно соединить чтобы их смогла зарядить народная платка зарядки и как лучше сформировать необходимые 12 В.
Покажите как надо в образовательных целях.
Можно легко прикинуть — у меня получилось не менее 3х банок по 2600мАч. Лучше брать с запасом 4шт
Да, действительно можно сэкономить целых 2 байта :)
Пока не представляю как так сделать
Привычка — вторая натура. Лучше сразу привыкнуть брать переменные по минимуму занимаемого места, магические числа описывать как константы /define, делать отступы и писать код который сможешь понять через полгода после окончания проекта.
Банальности, но очень сильно помогают в работе с программой.
Но вот только может старшее поколение пояснит мне такую любовь к использованию МГТФ провода?
Я еще в детстве, в радиокружке его люто невзлюбил, потому как разделывать — гемор.
Но ладно, тогда у нас проводов особо не было, сейчас и продаются, и у меня, как у админа — куча пучков от дохлых БП и прочего.
Разноцветные, красивые, сразу понятно. что куда идет. А тут — один цвет, и капризный в разделке.
Поясните — зачем?!
Я часто просто подплавляю изоляцию жалом (плоское), и потом кусачками…
Видите как, неудачный детский опыт до сих пор жив…
А если у кого в руках замечали кусачки… казнь была медленной и мучительной. 8)
А в домашних условиях я использую обычную «турбо» зажигалку.
А кусачками все равно жилы и изоляция повреждаются. Да и края потом лохматые.
Ну и МГТФ 0.03 кусачками у меня не получается зачистить.
хуже, да, но там где не нужен мгтф, где нет вибраций, высокой температуры и устройство не подвергается мех возд, паяю ide жилами, тем более прототипы навесным монтажом, которые все равно потом разберутся. Не вижу смысла в такие места резать мгтф.
Патчам из комлекта сетевых устройств находится прямое применение все время.
Зачищать надо УМЕТЬ! Даже кусачками не проблема, а уж спец инструментом…
Долговечность! После вымачивания в солёной океанской воде.Даже через 50 лет провод из жгута -как новый.
Королёв не смог запустить Р-1 копию Фау-2, пока не наладили выпуск проводов в фторопластовой изоляции.По немецкой естественно! технологии и оборудовании.
Гуттаперчевая отечественная -горела.
Вас никто и не просит пользоваться МГТФ, есть полно китайского барахла.Нам больше останется.
Я отрезками МГТФ собирал свой первый компьютер по типу Радио-80 на крейте.А Специалиста уже эмалированным проводом -пайкой перегретым паяльником к контактным площадкам макетной платы.
Я что-то сомневаюсь, что 90% местных самоделок требуют такой пресловутой надежности, о которой вы говорить.
А вот простоты «чтения» конструкции, чтобы было видно сразу, что куда идет — да.
Да, муж сестры, старше меня на 10 лет — тоже свой первый «спектрум» так паял, но это же мазохизм чистой воды, по мне.
А у вас почему-то сразу, если кому-то что-то неудобно, так человек не умеет, да? Может, он сексом предпочитает по-другому заниматься? ;)
Пользовались теми проводами, что были на производстве самыми лучшими и удобными-для себя любимого.
Были и ПВХ провода в двойной «шёлковой» изоляции.Были и одножильные, были и в шёлковой изоляции -много всего было.Так у них концы оболочки плавились, плавилась изоляция обнажая жилу и угрожая замыканием.А монтаж на плате ПК ну очень плотный.Представте себе ткнули вы в гущу паутины проводов горячим паяльником, чтобы подпаяться к похороненному в глубине пятачку?
И все провода проплавились до жил-замыкание и Сизифов труд на смарку!!! Если вы видели подобные конструкции то за проводами платы было не видно!
А МГТФ был всех толщин в наличии и зачистка проблем не представляла.
Мазохизм и адский труд.А куда деваться если готовые платы были дифсит и стоили пару-тройку зарплат? А сколько стоил Синклер или советский Эппл(3600-9000 от комплектации рублей в 86 году при зарплате в 130, Волга 10 000)??? Память 48килобайт стоила ДОРОЖЕ самого ПК.
ЛУТ технологии не существовало(платы разводили рейсфедерами нитрокраской или цапон лаком даже для пром телевизоров Электрон, Рубин итд 3УСЦТ), лазерных принтеров ещё не было даже на производстве, персональных ПК дома с программами разводки тоже.Были только отечественные и американские Ксероксы под роспись в 1 отделе с перечислением копированного материала.Только промышленные установки проектирования и производства плат, занятые ТОЛЬКО военным производством-не многие имели к ним доступ и знания пользования программами.Заказать печать плат официально для себя или мелкой партией было не возможно(до НЭПА Меченого), только по блату через задний проход за большие деньги, от предприятия итд.Китая ещё не было.
Есть и были конечно американские фторопластовые ЦВЕТНЫЕ провода не хуже МГТФ, но вы ЦЕНЫ на них видели??? Потому что они только МИЛИТАРИ класса.
Многие к тому же имеют старые запасы с работы, а барыги торгуют на радиорынках запасами со складов(кто что охранял то и имел).
И на сегодня по соотношению цена/качество ничего лучше у нас на рынке НЕТ.
Ваш Кэп О.
Действительно интересный комментарий!
А вот последовательно с затвором я бы крайне рекомендовал поставить резистор, хоть 100 ом. Иначе рано или поздно спалите контроллер.
поддерживать такой код приятнее, помоему. Для добавления и изменения режимов достаточно менять инициализацию массива структур, остальные все настройки вверху. Это наверно не конкретный код реализации — мне просто приятнее так смотреть )
конкретный код посмотрите и поймете почему и что я написал )
в остальном, все настолько просто, что комментарии лишние тут помоему
0- режим выключено
1-всегда присутствует сигнал
это два необычных режима которые нуждаются в спец обработке, другие все обрабатываются по типовому алгоритму
— при запуске, выход неактивен, что не позволяет отследить запуск программы до нажатия кнопки
— появился дополнительный режим со случайной частотой моргания. Видимо вылет за границу диапазона.
Как работает эта программа — пока не понял…
byte CurrentMode=0;
bool ButtonFlag=false;
это сделали?
или CurrentMode=1; — тогда начнет с первого
if (CurrentMode > MaxMode){
попробуйте заменить на
if (CurrentMode > MaxMode-1){
либо жестко задать MaxMode = 6 и убрать
MaxMode = arraySize(MT);
Помогло :)
границы надо посмотреть
вообще доберусь до компа — могу потестить у меня есть спарк, это все писал с телефона
Теперь по USB не связывается…
Предстоит весёлая процедура подключения к ISP программатору и восстановление загрузчика.
ладно хоть это не роутер, где подпаиваться нужно
в общем, жду обратной связи — если что соберу сам такое
Загрузил Вашу программу со всеми изменениями
Результаты:
— начинает с 1 режима :)
— нулевой режим пропал :)
— 2 и 3 режимы поменялись местами, пытаюсь понять почему так
p.s. кажись разобрался — второй параметр почему-то программирует паузу вместо импульса
p.p.s. как работает программа так и не понял :(
можете сейчас строчек в инициализации добавить с любыми другими режимами :)
Это тоже проверил — работает :)
Как работает программа так и не понял, надо С++ изучать, а мозги уже не те :(
Привык писать на Ассемблер, Basic, LAD, STL, FBD,…
И, собственно, это все, что следует сказать про эти два кода. :)
кому захочется понять — наверно поймут — он очень простой
При этом даже моя маленькая метеостанция (темп, давление, влажность дома и на улице), с дисплеем от кассового аппарата, выводом данных на narodmon, с радиоканалом на IRF до кухни с датчикми газа и протечки, спокойно влезла в 328 контроллер вот таким вот последовательным кодом и место осталось, и читается легко, и менять код просто, когда видно сразу куда чего дописать при изменениях.
Я на ESP-12 собрал. Пока один датчик для пробы, остальные жду с Китая. По NRF можно вопрос в личку?
поддерживать приведенный код для меня проще, и раз уж писать на языке предстоит и использовать в дальнейшем программу — немного времени потратить на базовые принципы совсем не повредит.
Хотя… большинство программистов из Индии с вами согласятся :)
littlewire.cc/
PS
Упс! Не получится так запитать. Увидел в схеме Digispark диод, включенный встречно между +5V и USB. Ну, тогда можно вместо переключателя поставить тумблер с двумя независимыми группами перекидных контактов. Вы подобный уже пристраивали в эту коробочку в предыдущем отзыве
… Хотя, наверное, лишний весь этот «огород». Провода к MicroUSB разъемам припаивать… Бр-р-р. «Лучшее враг хорошего» © Лучше оставить как есть.
Сделать маленькое отверстие проще, чем переделывать.
… значит это совсем иное устройство.
они похожи, как дробовик деда и автомат… оба стреляют
— первый параметр период, второй длительность импульса (в коде автора обзора, также как и в моем предложенном, контролировалось пространство без импульса)
— расписал почти каждую строчку комментариями
— ввел флаг окончания импульса, чтобы лишний раз не дергать
— убрал лишнюю переменную последней длительности импульса
— нулевой режим удален в принципе
— мелкие правки
Попробую сам разобраться
нулевой удалил — теперь надо:
byte CurrentMode = 0;
// начинаем с первого режима
CurrentMode = 0; — два раза там
// первый режим не требует контроля времени, поэтому отработаем его тут
if (in_mode == 0) {
на один режим меньше стало и первый стал нулевым
Ваш скетч немного отформатировал и добавил в статью.
Листинг и скомпилированная программа стали немного короче, но как она работает до конца не понял
может кому-то пригодится :)
там еще можно оптимизировать — но смысла нет
А для не-сигнальных задач — Enable вход :)
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.