Тут нашелся интересный способ скомпилировать прошивку в Arduino IDE без излишней траты памяти. Это не совсем скетч в привычном его понимании, а просто .ino файл с одной единственной строчкой :)
Обновил статью и репозиторий на гитхабе, смотрите.
Интересная статья, спасибо.
Но само по себе визуальное программирование микроконтроллеров — тема сомнительная, имхо, и работает только для несложных схем. Стоит алгоритму усложниться — и разбираться в нем становится очень сложно.
Корпус — суровое DIY, я прямо аж заслезился.
В целом, проект неплохой, особенно для начинающего, но статье явно не хватает фоток платы и электрической схемы. Сам делал подобное устройство как-то раз, но делал на обычных электромагнитных реле и были слышны щелчки при переключении каналов, хотя на качество звука почти не влияло.
В заключении хотелось бы сказать, что нельзя просто так оставить входной аудио-провод «не воткнутым» ни во что, нужно его вставить в какое либо устройство или заглушку в виде гнезда minijack, в котором все контакты соединены между собой.
Спасибо.
Скетча для Arduino не будет по причине неэкономного расходования ресурсов МК прошивкой, скомпилированной в ней. Откройте для себя Atmel Studio, данная среда разработки Вас приятно удивит по сравнению с Arduino IDE.
Для сравнения: пустой скетч (вида void setup() {} void loop(){}) весит 172 байта, тогда как в Atmel Studio всего 40 байт. Когда доступно только 1024 байта памяти программ, 130 байт — очень хорошая экономия.
Для предотвращения пикантных ситуаций, как на данной картинке, ставят обратный клапан на канализацию.
Если проблема заключается в прорыве трубы водоснабжения, то поможет электромагнитный вентиль, перекрываемый по сигналу датчика протечки.
Там этот провод от драйвера к фонарю достаточно длинный (25-30 см, скручен в спираль), и при этом достаточно тонкий. Можно было бы вместо него поставить что-нибудь потолще, но это будет очень колхозно.
Если решить эту проблему, тогда конечно уже придется ограничивать ток на драйвере. Но я бы все равно не стал ставить линейный стабилизатор, а сделал бы повышающий/понижающий импульсный преобразователь, что для КПД будет лучше. Но это уже другая история :)
Считается хорошим тоном ставить супрессоры в носимые устройства. При замене батареи можно дотронуться рукой до контактов холдера батареи, и если в этот момент Ваше тело было заряжено статическим электричеством, заряд пойдет прямиком на драйвер. МК может этого не пережить, да и полевые транзисторы тоже боятся сильных статических разрядов, насколько я знаю.
Через светодиод ток в обратном направлении не течет (до определенного порога — примерно в 5 В, что меньше максимального напряжения батареи, а если вдруг и будет превышено — отсечется супрессором). Так что да, схема работает.
Да, через R6 пойдет ток около 80 мкА, но это не наносит вреда — видимо, рассеивается на внутреннем диоде.
Собственный ток в выключенном режиме не более 5 мкА, обычно где-то 2-3 мкА.
Ну я же не зря поставил тег "arduino" :)
На самом деле, реализация антидребезга с delay — самая простая. Можно конечно через прерывание переполнения считать время, пока кнопка нажата, но я не вижу смысла так усложнять код.
Основной цикл должен смотреть на эту переменную и на переменную текущего режима работы, и исходя из их разницы, при необходимости ставить новый режим.
Имхо, так будет неудобно плавно изменять яркость в реальном времени
если зажать кнопку надолго, то основной цикл будет проходить дольше,
Это не является проблемой, с батареей ничего не случится, если проверку напряжения отложить на какое-то время.
Кроме того, кнопки дребезжат не только при нажатии, но и при отжатии — это тоже хорошо бы обрабатывать правильно
Ну так это отлично отрабатывается конструкцией следующего вида:
If (btn_pressed) {
while (btn_pressed); // антидребезг при нажатии
_delay_ms(x); // антидребезг при отпускании
}
Вообще, внешний физический мир асинхронен по отношению к циклу while (1) — и события с него ловить надо тоже асинхронно, а не тогда, когда процессор готов будет это сделать, вывалившись из очередного _delay_ms :)
Согласен, в теории все так и есть. Но на практике (в конкретном случае) кнопку нажимает человек — существо довольно медленное, и длительность нажатия составляет как минимум, несколько миллисекунд. За это время мк гарантированно успеет отловить это нажатие, так как в коде нет delay большой длительности. Исключение — дополнительный режим, но там это не мешает — кнопку можно держать, пока драйвер из него не выйдет.
Да, так и есть — ток ограничивает сопротивление проводов до диода (там около 25 см), контактов держателя батареи, ну и сама батарея имеет внутренее сопротивление. Если поставить туда линейный драйвер, КПД будет намного хуже.
Как измерял? При полностью открытом ключе, амперметром.
Этот пик в начале положительного фронта обусловлен большой емкостью и ее разрядом в момент открытия ключа? Если так, то у меня там на VIN нет конденсаторов, а значит такого быть не должно, поидее.
Выше уже писали, CD4051(2,3) или что-то подобное.
Скорее всего отличаются названия регистров — надо сравнивать даташиты.
Тут нашелся интересный способ скомпилировать прошивку в Arduino IDE без излишней траты памяти. Это не совсем скетч в привычном его понимании, а просто .ino файл с одной единственной строчкой :)
Обновил статью и репозиторий на гитхабе, смотрите.
Интересная статья, спасибо.
Но само по себе визуальное программирование микроконтроллеров — тема сомнительная, имхо, и работает только для несложных схем. Стоит алгоритму усложниться — и разбираться в нем становится очень сложно.
Корпус — суровое DIY, я прямо аж заслезился.
В целом, проект неплохой, особенно для начинающего, но статье явно не хватает фоток платы и электрической схемы. Сам делал подобное устройство как-то раз, но делал на обычных электромагнитных реле и были слышны щелчки при переключении каналов, хотя на качество звука почти не влияло.
Попробую угадать — АЦП начинает ловить сетевые наводки частотой 50 Гц?
Есть специализированные микросхемы — аудиокоммутаторы с несколькими входами и одним выходом.
По какой причине?
Спасибо.
Скетча для Arduino не будет по причине неэкономного расходования ресурсов МК прошивкой, скомпилированной в ней. Откройте для себя Atmel Studio, данная среда разработки Вас приятно удивит по сравнению с Arduino IDE.
Для сравнения: пустой скетч (вида void setup() {} void loop(){}) весит 172 байта, тогда как в Atmel Studio всего 40 байт. Когда доступно только 1024 байта памяти программ, 130 байт — очень хорошая экономия.
В теории можно, но я боюсь, что тогда прошивка не уместится в килобайт памяти.
Для предотвращения пикантных ситуаций, как на данной картинке, ставят обратный клапан на канализацию.
Если проблема заключается в прорыве трубы водоснабжения, то поможет электромагнитный вентиль, перекрываемый по сигналу датчика протечки.
Спасибо за подробный туториал. Как раз завалялась в коробке с модулями такая плата, теперь есть еще один повод познакомиться с STM32.
Реализация 1-wire не влезет в прошивку, а вот терморезистор можно поставить.
Там этот провод от драйвера к фонарю достаточно длинный (25-30 см, скручен в спираль), и при этом достаточно тонкий. Можно было бы вместо него поставить что-нибудь потолще, но это будет очень колхозно.
Если решить эту проблему, тогда конечно уже придется ограничивать ток на драйвере. Но я бы все равно не стал ставить линейный стабилизатор, а сделал бы повышающий/понижающий импульсный преобразователь, что для КПД будет лучше. Но это уже другая история :)
Как вариант, но это усложнит схему.
Ну ведь защиты много не бывает :)
Эти конденсаторы стоят после диода — импульс может дойти до транзистора раньше, чем впитается в емкость.
В даташите пишут, что ток утечки всего 5 наноампер.
Спасибо. По пунктам:
Да, через R6 пойдет ток около 80 мкА, но это не наносит вреда — видимо, рассеивается на внутреннем диоде.
Дело в том, что на проводах она рассеивается и так. А вы предлагаете еще стабилизатор туда, дабы потери были еще больше?
Ну я же не зря поставил тег "arduino" :)
На самом деле, реализация антидребезга с delay — самая простая. Можно конечно через прерывание переполнения считать время, пока кнопка нажата, но я не вижу смысла так усложнять код.
Имхо, так будет неудобно плавно изменять яркость в реальном времени
Это не является проблемой, с батареей ничего не случится, если проверку напряжения отложить на какое-то время.
Ну так это отлично отрабатывается конструкцией следующего вида:
Согласен, в теории все так и есть. Но на практике (в конкретном случае) кнопку нажимает человек — существо довольно медленное, и длительность нажатия составляет как минимум, несколько миллисекунд. За это время мк гарантированно успеет отловить это нажатие, так как в коде нет delay большой длительности. Исключение — дополнительный режим, но там это не мешает — кнопку можно держать, пока драйвер из него не выйдет.
Да, так и есть — ток ограничивает сопротивление проводов до диода (там около 25 см), контактов держателя батареи, ну и сама батарея имеет внутренее сопротивление. Если поставить туда линейный драйвер, КПД будет намного хуже.
Как измерял? При полностью открытом ключе, амперметром.
Этот пик в начале положительного фронта обусловлен большой емкостью и ее разрядом в момент открытия ключа? Если так, то у меня там на VIN нет конденсаторов, а значит такого быть не должно, поидее.