Вам напомнить, альтруист вы наш, что это коммерческий проект и для коммерческих целей?BlackKilkennyCat Даже бесплатно.
Контроллер для последовательного включения светодиодов
- valentinovich
- Электрический кот
- Сообщения: 1003
- Зарегистрирован: Ср окт 04, 2017 20:47:40
Re: Контроллер для последовательного включения светодиодов
- Реклама
-
BlackKilkennyCat
- Собутыльник Кота
- Сообщения: 2905
- Зарегистрирован: Ср ноя 29, 2017 06:58:50
Re: Контроллер для последовательного включения светодиодов
предлагаю 1 кнопку но с заумным алгоритмом:
1) 1 длинное нажатие переводит в настройку. Светодиоды сигнализируют об этом дружным морганием 1 раз все.
2) каждое следующее нажатие перемещает 1 светодиод по кругу - настройка часа.
3) 1 следующее длинное нажатие переводит в режим настройки минут. Режим определяется дружным морганием 2 раза.
4) тут возможны варианты. Либо с точностью 2.5 минуты (2 горящих светодиода), либо сначала десятки (светодиод бежит до 5 и возвращается на 0), а потом минуты.
5 или 6) если десятки-единицы минут, то длинное нажатие переводит в единицы. Дружное моргание 3 раза.
5 или 6) Длинное нажатие выводит из режима настройки, Быстрый бегущий огонек по кругу пару-тройку раз
7) нормальная работа.
секунды здесь, думаю, ненужны
Добавлено after 34 seconds:
valentinovich, а мне как-то пофиг. а Вас это как-то коробит? Напоминаю, что это не раздел "Работа", я вправе озвучивать любые решения.
1) 1 длинное нажатие переводит в настройку. Светодиоды сигнализируют об этом дружным морганием 1 раз все.
2) каждое следующее нажатие перемещает 1 светодиод по кругу - настройка часа.
3) 1 следующее длинное нажатие переводит в режим настройки минут. Режим определяется дружным морганием 2 раза.
4) тут возможны варианты. Либо с точностью 2.5 минуты (2 горящих светодиода), либо сначала десятки (светодиод бежит до 5 и возвращается на 0), а потом минуты.
5 или 6) если десятки-единицы минут, то длинное нажатие переводит в единицы. Дружное моргание 3 раза.
5 или 6) Длинное нажатие выводит из режима настройки, Быстрый бегущий огонек по кругу пару-тройку раз
7) нормальная работа.
секунды здесь, думаю, ненужны
Добавлено after 34 seconds:
valentinovich, а мне как-то пофиг. а Вас это как-то коробит? Напоминаю, что это не раздел "Работа", я вправе озвучивать любые решения.
Re: Контроллер для последовательного включения светодиодов
[uquote="BlackKilkennyCat",url="/forum/viewtopic.php?p=3938273#p3938273"]предлагаю 1 кнопку но с заумным алгоритмом:[/uquote]
Отпускание при коротком нажатии - переключение на следующий светодиод, длинное нажатие - сброс. Еще и минуты одной кнопкой настраивать я бы не стал...
Отпускание при коротком нажатии - переключение на следующий светодиод, длинное нажатие - сброс. Еще и минуты одной кнопкой настраивать я бы не стал...
- Zhuk72
- Сверлит текстолит когтями
- Сообщения: 1231
- Зарегистрирован: Ср янв 29, 2014 08:41:31
- Откуда: Баку
- Контактная информация:
Re: Контроллер для последовательного включения светодиодов
[uquote="BlackKilkennyCat",url="/forum/viewtopic.php?p=3938260#p3938260"]зачем ей знать, что происходит на циферблате? циферблат шагает сам, электронная начинка сама.[/uquote]
Как только вы представите все возможные сценарии, поймете какой будет геморрой для пользователя. Просто представьте, что питание МК пропало (батарейное как предполагается). После каждой смены батареи юзер должен будет выставлять время на МК в соответствии с часами "заумным алгоритмом"? А если часы и/или МК начнут врать каждый на несколько минут в одну сторону? Пользователь не вас, а дизайнера будет поминать, может даже непечатными словами.
[uquote="BlackKilkennyCat",url="/forum/viewtopic.php?p=3938260#p3938260"]дальше будет какое-то расхождение, пофиг.[/uquote]
Вам да, пользователю - читайте выше.
[uquote="BlackKilkennyCat",url="/forum/viewtopic.php?p=3938260#p3938260"]Если вытащить такт из механизма часов - ваще не будет расхождения. Или наоборот, запихать такт в часы.[/uquote]
Повторюсь: это и есть синхронизация, о которой я говорил ранее:
[uquote="Zhuk72",url="/forum/viewtopic.php?p=3937646#p3937646"]Нужен механизм часов, на которые можно подавать внешние секундные импульсы (есть ли такие?), в данном случае с нашего МК. Он же и будет зажигать светодиоды.[/uquote]
Как только вы представите все возможные сценарии, поймете какой будет геморрой для пользователя. Просто представьте, что питание МК пропало (батарейное как предполагается). После каждой смены батареи юзер должен будет выставлять время на МК в соответствии с часами "заумным алгоритмом"? А если часы и/или МК начнут врать каждый на несколько минут в одну сторону? Пользователь не вас, а дизайнера будет поминать, может даже непечатными словами.
[uquote="BlackKilkennyCat",url="/forum/viewtopic.php?p=3938260#p3938260"]дальше будет какое-то расхождение, пофиг.[/uquote]
Вам да, пользователю - читайте выше.
[uquote="BlackKilkennyCat",url="/forum/viewtopic.php?p=3938260#p3938260"]Если вытащить такт из механизма часов - ваще не будет расхождения. Или наоборот, запихать такт в часы.[/uquote]
Повторюсь: это и есть синхронизация, о которой я говорил ранее:
[uquote="Zhuk72",url="/forum/viewtopic.php?p=3937646#p3937646"]Нужен механизм часов, на которые можно подавать внешние секундные импульсы (есть ли такие?), в данном случае с нашего МК. Он же и будет зажигать светодиоды.[/uquote]
Каждый имеет право на свое личное ошибочное мнение.
У меня было тяжелое детство - я до 14 лет смотрел черно-белый телевизор.
У меня было тяжелое детство - я до 14 лет смотрел черно-белый телевизор.
Re: Контроллер для последовательного включения светодиодов
[uquote="1en2",url="/forum/viewtopic.php?p=3938267#p3938267"]дизайнер - это художник, спрашивать, видимо, дальше уже бесполезно....надо предлагать вопросы, на которые можно ответить да-нет....
Итого -
1)питание от сети +5 В подходит ?....(3 батарейки на два горящих светодиода себе бы не поставил)
2) автоматическая синхронизация не требуется
3) светодиоды идут сами по себе, но нужна кнопка их подгонки под нужный час
4)при нажатии (или отпускании) кнопки сбрасывать счётчик секунд (для синхронизации с секундной стрелкой), т.е. устанавливать только в 00 мин 00 сек.[/uquote]
1) не знаю, что такое +5 В. Обычная сеть 220В нужна. Как мне объяснили, на батарейках проработает от нескольких часов до неск.суток (зависит от батареек и их количества). Если так и есть, к черту всякие батарейки.
2) да
3) да
4) да
Добавлено after 1 minute 3 seconds:
[uquote="valentinovich",url="/forum/viewtopic.php?p=3938270#p3938270"]
Что значит "напомнить"? Я где-то об этом упоминала? Для коммерческих проектов я не обращалалсь бы на форум, это делается несколько иначе. Я сказала только, что заплачу за работу мастера. По-моему, это нормально)) Я поняла, что Вам легче становится, когда Вы на негативе, да?
Итого -
1)питание от сети +5 В подходит ?....(3 батарейки на два горящих светодиода себе бы не поставил)
2) автоматическая синхронизация не требуется
3) светодиоды идут сами по себе, но нужна кнопка их подгонки под нужный час
4)при нажатии (или отпускании) кнопки сбрасывать счётчик секунд (для синхронизации с секундной стрелкой), т.е. устанавливать только в 00 мин 00 сек.[/uquote]
1) не знаю, что такое +5 В. Обычная сеть 220В нужна. Как мне объяснили, на батарейках проработает от нескольких часов до неск.суток (зависит от батареек и их количества). Если так и есть, к черту всякие батарейки.
2) да
3) да
4) да
Добавлено after 1 minute 3 seconds:
[uquote="valentinovich",url="/forum/viewtopic.php?p=3938270#p3938270"]
Вам напомнить, альтруист вы наш, что это коммерческий проект и для коммерческих целей?[/uquote]BlackKilkennyCat Даже бесплатно.
Что значит "напомнить"? Я где-то об этом упоминала? Для коммерческих проектов я не обращалалсь бы на форум, это делается несколько иначе. Я сказала только, что заплачу за работу мастера. По-моему, это нормально)) Я поняла, что Вам легче становится, когда Вы на негативе, да?
- Реклама
-
BlackKilkennyCat
- Собутыльник Кота
- Сообщения: 2905
- Зарегистрирован: Ср ноя 29, 2017 06:58:50
Re: Контроллер для последовательного включения светодиодов
Поверьте, лучше не надо. У меня очень богатая фантазия.Zhuk72 писал(а):Как только вы представите все возможные сценарии
Часы в микроволновке. И ничего, все как-то мучаются. Хотя хочется вскрыть и впихнуть туда батарейку...Пользователь не вас, а дизайнера будет поминать, может даже непечатными словами.
- Ivanoff-iv
- Друг Кота
- Сообщения: 7077
- Зарегистрирован: Пт ноя 11, 2016 05:48:09
- Откуда: Сердце Пармы
Re: Контроллер для последовательного включения светодиодов
более простой алгоритм настройки:
после включения не горит ничего
1е удержание - перебираются пары светодиодов (отпускаем кнопку в момент, когда они "догонят" часовую стрелку)
2е удержание - подстройка (бежит 1 светодиод, отпускаем кнопку, когда он догонит минутную стрелку)
Добавлено after 9 minutes 1 second:
[uquote="Asya K",url="/forum/viewtopic.php?p=3938284#p3938284"]1) не знаю, что такое +5 В.[/uquote] это сеть 220в, пропущенная через блок питания (например зарядник от мобилки)
после включения не горит ничего
1е удержание - перебираются пары светодиодов (отпускаем кнопку в момент, когда они "догонят" часовую стрелку)
2е удержание - подстройка (бежит 1 светодиод, отпускаем кнопку, когда он догонит минутную стрелку)
Добавлено after 9 minutes 1 second:
[uquote="Asya K",url="/forum/viewtopic.php?p=3938284#p3938284"]1) не знаю, что такое +5 В.[/uquote] это сеть 220в, пропущенная через блок питания (например зарядник от мобилки)
Для тех, кто не учил магию мир полон физики 
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
-
Самсусамыч
Re: Контроллер для последовательного включения светодиодов
[uquote="Asya K",url="/forum/viewtopic.php?p=3938237#p3938237"][uquote="1en2",url="/forum/viewtopic.php?p=3938181#p3938181"]
есть аналоговые, цифровые, аналого-цифровые. Может и еще что-то, дальше вникать нет необходимости.[/uquote]
Разве я спрашивал об этом? Вы, или не читаете вопросы, или совершенно забыли курс школьной физики (раздел электротехники)… попытаюсь ещё раз задать вопросы: https://radiokot.ru/forum/viewtopic.php ... 0#p3937200
И в дополнение: Вы сможете залить прошивку в МК AVR?
Вам реальную помощь предложил Самсусамыч....А вы именно на его вопросы и не ответили.....Сидеть сутками и ждать тоже неинтересно (а надо-то вам)...[/uquote]Asya K писал(а):общаться не умеете?
есть аналоговые, цифровые, аналого-цифровые. Может и еще что-то, дальше вникать нет необходимости.[/uquote]
Разве я спрашивал об этом? Вы, или не читаете вопросы, или совершенно забыли курс школьной физики (раздел электротехники)… попытаюсь ещё раз задать вопросы: https://radiokot.ru/forum/viewtopic.php ... 0#p3937200
И в дополнение: Вы сможете залить прошивку в МК AVR?
Re: Контроллер для последовательного включения светодиодов
я так понял, что механизм часов лучше не трогать, это может просто привести к его поломке....
- Ivanoff-iv
- Друг Кота
- Сообщения: 7077
- Зарегистрирован: Пт ноя 11, 2016 05:48:09
- Откуда: Сердце Пармы
Re: Контроллер для последовательного включения светодиодов
ну... во первых придётся собрать хоть и не сложную, но схемку...
попробовал нарисовать её в протеусе... похоже ТСу, в данном случае проще всего взять готовую ардуину, её и прошить проще будет...
попробовал нарисовать её в протеусе... похоже ТСу, в данном случае проще всего взять готовую ардуину, её и прошить проще будет...
Для тех, кто не учил магию мир полон физики 
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
- valentinovich
- Электрический кот
- Сообщения: 1003
- Зарегистрирован: Ср окт 04, 2017 20:47:40
Re: Контроллер для последовательного включения светодиодов
Главное чтоб они ещё были бы логически правильные. О чём вам говорит и -BlackKilkennyCat
я вправе озвучивать любые решения.
Zhuk72
Как только вы представите все возможные сценарии, поймете какой будет геморрой для пользователя. ...
Пользователь не вас, а дизайнера будет поминать, может даже непечатными словами.
Сорри, так получилось, но это как бы относилось не совсем к вам.Asya K
Что значит "напомнить"? Я где-то об этом упоминала?
И Асенька,
-
BlackKilkennyCat
- Собутыльник Кота
- Сообщения: 2905
- Зарегистрирован: Ср ноя 29, 2017 06:58:50
Re: Контроллер для последовательного включения светодиодов
Учитывая сжатость срок и несколько, конечно, громогласное моё заявление о паре вечеров, комплектующие выбирались из максимального наличия на моём складе.
Итого можно посмотреть на схеме.
Краткое пояснение:
1) питание пока не определился. склоняюсь в сторону мини-усб разъёма: их есть у меня, они "толстые" и понадёжнее микро, шнуры к ним и блок питания с усб-выходом непроблематично купить.
2) для минимизации числа компонентов выбрана матрица 3х4, максимальный ток светодиода в импульсе 50 мА, максимальный суммарный ток в импульсе 150 мА. Однако, думаю, достаточно ограничить до 40 (120).
3) мк STM8L050J3 - изначально ориентирован на возможность подключения 32.768, встроенные RTC, но к сожалению 8 ног.
4) 595 регистр как расширитель выходов.
5) две кнопки, логика - делитель напряжения, совместно используют пин с защелкой 595, делитель напряжение исключает влияние на защелкивание регистра.
6) Питание 595 и светодиодов от 3.3 вольта, микроконтроллера - от 3 вольт.
7) Предусмотрена батарейка. Расчётное время работы часов на самой тонкой "таблетке" около 2 лет.
8 ) Предусмотрено определение отсутствия основного питания.
9) Опционально предусмотрена "кукушка", хотя я так ещё пока динамиком не управлял.
Эффекты доступны практически любые в т. ч. регулировка яркости.
Синхронизация с механическими часами отсутствует, хотя ввести можно, используя вход кнопки.
Кнопок две, для сохранения мозга пользователя, первая кнопка - вход, выход и переключение режимов, вторая кнопка - установка значений.
Затраченное время: 4 часа, из которых половина ушла на рассмотрение множества иных вариантов, в т. ч. с DFU, внешними RTC, новомодными регистрами для светодиодов и иных драйверов.
Итого можно посмотреть на схеме.
Краткое пояснение:
1) питание пока не определился. склоняюсь в сторону мини-усб разъёма: их есть у меня, они "толстые" и понадёжнее микро, шнуры к ним и блок питания с усб-выходом непроблематично купить.
2) для минимизации числа компонентов выбрана матрица 3х4, максимальный ток светодиода в импульсе 50 мА, максимальный суммарный ток в импульсе 150 мА. Однако, думаю, достаточно ограничить до 40 (120).
3) мк STM8L050J3 - изначально ориентирован на возможность подключения 32.768, встроенные RTC, но к сожалению 8 ног.
4) 595 регистр как расширитель выходов.
5) две кнопки, логика - делитель напряжения, совместно используют пин с защелкой 595, делитель напряжение исключает влияние на защелкивание регистра.
6) Питание 595 и светодиодов от 3.3 вольта, микроконтроллера - от 3 вольт.
7) Предусмотрена батарейка. Расчётное время работы часов на самой тонкой "таблетке" около 2 лет.
8 ) Предусмотрено определение отсутствия основного питания.
9) Опционально предусмотрена "кукушка", хотя я так ещё пока динамиком не управлял.
Эффекты доступны практически любые в т. ч. регулировка яркости.
Синхронизация с механическими часами отсутствует, хотя ввести можно, используя вход кнопки.
Кнопок две, для сохранения мозга пользователя, первая кнопка - вход, выход и переключение режимов, вторая кнопка - установка значений.
Затраченное время: 4 часа, из которых половина ушла на рассмотрение множества иных вариантов, в т. ч. с DFU, внешними RTC, новомодными регистрами для светодиодов и иных драйверов.
- Вложения
-
- DipTrace Schematic - clock.pdf
- (20.49 КБ) 203 скачивания
Re: Контроллер для последовательного включения светодиодов
Я бы сделал иначе. Никаких самодельных плат - всё приобретается в магазине.
- Ардуино Нано. Завтра захочется добавить будильник или изменить светодиодные эффекты, новый скетч и готово. Более того, не понравится - вынул и используешь для других целей.
- RTC DS3231. Высокоточные часы обязательно. Погрешность 1 мин/год позволяет использовать как образцовые, по ним выставляются механические. Ручная синхронизация называется.)
- 4-х разрядный LED индикатор. Припаивается к Нано. Хочется яркости, тогда модуль индикации на TM1636 по 4-м проводам. Индикатор при желании можно вывести на переднюю панель - будут ещё и цифровые часы.
- 2 кнопки для установки времени, хотя можно и с ПК - USB в наличии.
- 4 пина на индикацию 12-ти светодиодов - куча проводов не нужна.
- Питание. Внешний БП от мобильного телефона 5 в/500 ма (либо 9 в/500 ма).
Цена на комплектующие в районе 500-1000р. Софт BlackKilkennyCat напишет бесплатно.)
- Ардуино Нано. Завтра захочется добавить будильник или изменить светодиодные эффекты, новый скетч и готово. Более того, не понравится - вынул и используешь для других целей.
- RTC DS3231. Высокоточные часы обязательно. Погрешность 1 мин/год позволяет использовать как образцовые, по ним выставляются механические. Ручная синхронизация называется.)
- 4-х разрядный LED индикатор. Припаивается к Нано. Хочется яркости, тогда модуль индикации на TM1636 по 4-м проводам. Индикатор при желании можно вывести на переднюю панель - будут ещё и цифровые часы.
- 2 кнопки для установки времени, хотя можно и с ПК - USB в наличии.
- 4 пина на индикацию 12-ти светодиодов - куча проводов не нужна.
- Питание. Внешний БП от мобильного телефона 5 в/500 ма (либо 9 в/500 ма).
Цена на комплектующие в районе 500-1000р. Софт BlackKilkennyCat напишет бесплатно.)
-
BlackKilkennyCat
- Собутыльник Кота
- Сообщения: 2905
- Зарегистрирован: Ср ноя 29, 2017 06:58:50
Re: Контроллер для последовательного включения светодиодов
OKF, я не использую одурино, написать софт к нему не смогу по причине нежелания приобретать ненужные знания. И даже не представляю, где его можно купить. Остальное же у меня есть уже.
Что касается точности, то вот характеристика STM8L050J3:
Low-power RTC
– BCD calendar with alarm interrupt
– Digital calibration with +/- 0.5 ppm accuracy
Добавлено after 6 hours 20 minutes 59 seconds:
ещё один вечер, опять 4 часа и трассировка завершена.
Как не оптимизировал, для односторонней домашней минимально удобный размер получается 66х34 мм.
И одну перемычку всё же придется кинуть поверху (U1 13-8). Обидно. Наверное, не вижу решения.

Что касается точности, то вот характеристика STM8L050J3:
Low-power RTC
– BCD calendar with alarm interrupt
– Digital calibration with +/- 0.5 ppm accuracy
Добавлено after 6 hours 20 minutes 59 seconds:
ещё один вечер, опять 4 часа и трассировка завершена.
Как не оптимизировал, для односторонней домашней минимально удобный размер получается 66х34 мм.
И одну перемычку всё же придется кинуть поверху (U1 13-8). Обидно. Наверное, не вижу решения.

-
BlackKilkennyCat
- Собутыльник Кота
- Сообщения: 2905
- Зарегистрирован: Ср ноя 29, 2017 06:58:50
Re: Контроллер для последовательного включения светодиодов
Вечер номер 3
Изготовление платы и пайка.
Осталось подобрать резисторы для светодиодов и кнопок, да один диод.
Заняло около 6 часов, но часть времени - извращенные эксперименты с ацетоном и засохшим ПФ-ВЩ, ожидание травления, а часть - поиск ферритовой бусины и металлизация отверстий методом втулок.
Если бы у меня всё было как у нормального радиолюбителя (у меня даже паяльная станция в ремонте, паял громадным жалом обычным 30-ваттным), заняло бы опять 4 часа.

Ну, подбор и пайка резисторов дело минутное и совместно с программой.
Итого, 12-16 часов на подобное устройство. Плюс программирование.
Вполне можно уложится в термин "Конструкция выходного дня". И нет необходимости в ардуино.
Изготовление платы и пайка.
Осталось подобрать резисторы для светодиодов и кнопок, да один диод.
Заняло около 6 часов, но часть времени - извращенные эксперименты с ацетоном и засохшим ПФ-ВЩ, ожидание травления, а часть - поиск ферритовой бусины и металлизация отверстий методом втулок.
Если бы у меня всё было как у нормального радиолюбителя (у меня даже паяльная станция в ремонте, паял громадным жалом обычным 30-ваттным), заняло бы опять 4 часа.

Ну, подбор и пайка резисторов дело минутное и совместно с программой.
Итого, 12-16 часов на подобное устройство. Плюс программирование.
Вполне можно уложится в термин "Конструкция выходного дня". И нет необходимости в ардуино.
- Serzh2000
- Опытный кот
- Сообщения: 867
- Зарегистрирован: Пт фев 27, 2015 12:00:53
- Откуда: Рязанская область
Re: Контроллер для последовательного включения светодиодов
[uquote="OKF",url="/forum/viewtopic.php?p=3939051#p3939051"]Я бы сделал иначе. Никаких самодельных плат - всё приобретается в магазине.
- Ардуино Нано. Завтра захочется добавить будильник или изменить светодиодные эффекты, новый скетч и готово. Более того, не понравится - вынул и используешь для других целей.
- RTC DS3231. Высокоточные часы обязательно. Погрешность 1 мин/год позволяет использовать как образцовые, по ним выставляются механические. Ручная синхронизация называется.)
- 2 кнопки для установки времени, хотя можно и с ПК - USB в наличии.
- 4 пина на индикацию 12-ти светодиодов - куча проводов не нужна.
- Питание. Внешний БП от мобильного телефона 5 в/500 ма (либо 9 в/500 ма).
Цена на комплектующие в районе 500-1000р. Софт BlackKilkennyCat напишет бесплатно.)[/uquote]
сегодня встал, делать нечего, вот навоял...
плата получилась
ну и сам скетч ардуиновский
#include "cyfra.h"
iarduino_RTC time(RTC_DS3231);
#include <Wire.h>
//------------------------------------------------Kлавиатура, динамик, термистор, фоторезистор------------------------------------------------------------
#define BUTTON_1 A0 // Пин клавиши 1
#define BUTTON_2 A1 // Пин клавиши 2
int flag=0;
int keyOld=0; // старое значение нажатой клавиши
int key;
int keySpeed=0; // переменная задает скорость повтора нажатых клавиш
int h0,m0;
int now;
int lasth0=24;
int lastm0=64;
uint32_t startTime; // какая то задержка 0,025 сек
const int timerMenu=2000; // время (в мс) перед автоматическим выходом из режима настроек
uint8_t pins[12] = {2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13};
//==============setup==========================
void setup() {
delay(100);
Serial.begin(9600);
time.begin();
// time.settime(52,00,9,27,10,15,2); // 0 сек, 51 мин, 21 час, 12, декабря, 2020года, суббота
for (uint8_t b = 0; b <= 11; ++b) {
pinMode (pins, OUTPUT);
digitalWrite(pins, LOW);}
digitalWrite(BUTTON_1, HIGH);
digitalWrite(BUTTON_2, HIGH);
}
void loop(){
startTime=millis();
klav(); // опрашиваем клавиши 0 - не нажаты, 1-2 клавиши нажаты
time.gettime("h:i:s"); // читаем время
m0=time.minutes ;
h0=time.hours;
if(m0!=lastm0){
//-------------------------------------------------------
playvremay(); // выводим на экран часы и минуты
// playchas(); // выводим на экран только часы
//-------------------------------------------------------
}
//==== кнопка №1 часы==================
if(key==1){
now=millis(); // сбарсываем переменную счета таймера в (миллис)
while(millis()-now<timerMenu){ // запускаем таймер автовыхода из подпрограмы
time.gettime("h:i:s"); // считываем данные часы, минуты, секунды
h0=time.hours;
klav(); // Опрашиваем клавиши 0- не нажаты, 1-2 клавиши нажаты
if(key==1){ // если нажата кнопка 1, то меняеме значение переменной отображаемой в данной позиции
if (h0>=11) h0=0;
else h0++;
time.settime(-1,-1, h0); // секунды и минуты оставим без изменений, меняем часы .
playchas(); // выводим на экран часы
}
}
key=0;
}
//==== кнопка №2 минуты================
if(key==2){
now=millis(); // сбарсываем переменную счета таймера в (миллис)
while(millis()-now<timerMenu){ // запускаем таймер автовыхода из подпрограмы
time.gettime("h:i:s"); // считываем данные часы, минуты, секунды
m0=time.minutes ;
klav(); // Опрашиваем клавиши 0- не нажаты, 1-2 клавиши нажаты
if(key==2){ // если нажата кнопка 2, то меняеме значение переменной отображаемой в данной позиции
if (m0>=59) m0=0;
else m0++;
time.settime(-1, m0); // секунды оставим без изменений, меняем минуты.
playminuta(); // выводим на экран
}
}
key=0;
}
}
//=======кнопки============
void klav(){ //
key=0; //
if(digitalRead(BUTTON_1)==LOW) key=1; // опрашиваем клавишу 1 и если нажата переменной присваиваем 1
if(digitalRead(BUTTON_2)==LOW) key=2; // тоже самое для клавиши 2
if(key!=0){ // есил клавиши нажаты
delay(100); // устанавливаем паузу между между опросами
}
}
//======выводим на экран часы====================
void playvremay(){
clrAll(); // очистка экрана
lasth0=h0;
lastm0=m0;
for (uint8_t b = 0; b <= 11; b++) {
if (chas[lasth0*12+b]!=0){
digitalWrite(pins, chas[lasth0*12+b]); } // перебираем выходы, читаем массив.
if (minuta[lastm0*12+b]!=0){
digitalWrite(pins, minuta[lastm0*12+b]);} // перебираем выходы, читаем массив.
}
}
//======выводим на экран часы====================
void playchas(){
clrAll(); // очистка экрана
lasth0=h0;
for (uint8_t b = 0; b <= 11; b++) {
digitalWrite(pins, chas[lasth0*12+b]);} // перебираем выходы, читаем массив.
}
//======выводим на экран минуты====================
void playminuta(){
clrAll(); // очистка экрана
lastm0=m0;
for (uint8_t b = 0; b <= 11; b++) {
digitalWrite(pins, minuta[lastm0*12+b]);} // перебираем выходы, читаем массив.
}
//=======очистить экран==========
void clrAll(){
for (uint8_t b = 0; b <= 11; b++) {
digitalWrite (pins, LOW);} // перебираем выходы, тушим все светики.
}
//==============
//-------------------------------------------конец--------------------------------------------------------------------------------------------
я немного перестарался...
девайс может показывать двумя светиками час как просила Asya K
и может показывать двумя светиками час и одним светиком минуты (бонус
)
[/code]
- Ардуино Нано. Завтра захочется добавить будильник или изменить светодиодные эффекты, новый скетч и готово. Более того, не понравится - вынул и используешь для других целей.
- RTC DS3231. Высокоточные часы обязательно. Погрешность 1 мин/год позволяет использовать как образцовые, по ним выставляются механические. Ручная синхронизация называется.)
- 2 кнопки для установки времени, хотя можно и с ПК - USB в наличии.
- 4 пина на индикацию 12-ти светодиодов - куча проводов не нужна.
- Питание. Внешний БП от мобильного телефона 5 в/500 ма (либо 9 в/500 ма).
Цена на комплектующие в районе 500-1000р. Софт BlackKilkennyCat напишет бесплатно.)[/uquote]
сегодня встал, делать нечего, вот навоял...
плата получилась
ну и сам скетч ардуиновский
Спойлер
#include <iarduino_RTC.h>#include "cyfra.h"
iarduino_RTC time(RTC_DS3231);
#include <Wire.h>
//------------------------------------------------Kлавиатура, динамик, термистор, фоторезистор------------------------------------------------------------
#define BUTTON_1 A0 // Пин клавиши 1
#define BUTTON_2 A1 // Пин клавиши 2
int flag=0;
int keyOld=0; // старое значение нажатой клавиши
int key;
int keySpeed=0; // переменная задает скорость повтора нажатых клавиш
int h0,m0;
int now;
int lasth0=24;
int lastm0=64;
uint32_t startTime; // какая то задержка 0,025 сек
const int timerMenu=2000; // время (в мс) перед автоматическим выходом из режима настроек
uint8_t pins[12] = {2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13};
//==============setup==========================
void setup() {
delay(100);
Serial.begin(9600);
time.begin();
// time.settime(52,00,9,27,10,15,2); // 0 сек, 51 мин, 21 час, 12, декабря, 2020года, суббота
for (uint8_t b = 0; b <= 11; ++b) {
pinMode (pins, OUTPUT);
digitalWrite(pins, LOW);}
digitalWrite(BUTTON_1, HIGH);
digitalWrite(BUTTON_2, HIGH);
}
void loop(){
startTime=millis();
klav(); // опрашиваем клавиши 0 - не нажаты, 1-2 клавиши нажаты
time.gettime("h:i:s"); // читаем время
m0=time.minutes ;
h0=time.hours;
if(m0!=lastm0){
//-------------------------------------------------------
playvremay(); // выводим на экран часы и минуты
// playchas(); // выводим на экран только часы
//-------------------------------------------------------
}
//==== кнопка №1 часы==================
if(key==1){
now=millis(); // сбарсываем переменную счета таймера в (миллис)
while(millis()-now<timerMenu){ // запускаем таймер автовыхода из подпрограмы
time.gettime("h:i:s"); // считываем данные часы, минуты, секунды
h0=time.hours;
klav(); // Опрашиваем клавиши 0- не нажаты, 1-2 клавиши нажаты
if(key==1){ // если нажата кнопка 1, то меняеме значение переменной отображаемой в данной позиции
if (h0>=11) h0=0;
else h0++;
time.settime(-1,-1, h0); // секунды и минуты оставим без изменений, меняем часы .
playchas(); // выводим на экран часы
}
}
key=0;
}
//==== кнопка №2 минуты================
if(key==2){
now=millis(); // сбарсываем переменную счета таймера в (миллис)
while(millis()-now<timerMenu){ // запускаем таймер автовыхода из подпрограмы
time.gettime("h:i:s"); // считываем данные часы, минуты, секунды
m0=time.minutes ;
klav(); // Опрашиваем клавиши 0- не нажаты, 1-2 клавиши нажаты
if(key==2){ // если нажата кнопка 2, то меняеме значение переменной отображаемой в данной позиции
if (m0>=59) m0=0;
else m0++;
time.settime(-1, m0); // секунды оставим без изменений, меняем минуты.
playminuta(); // выводим на экран
}
}
key=0;
}
}
//=======кнопки============
void klav(){ //
key=0; //
if(digitalRead(BUTTON_1)==LOW) key=1; // опрашиваем клавишу 1 и если нажата переменной присваиваем 1
if(digitalRead(BUTTON_2)==LOW) key=2; // тоже самое для клавиши 2
if(key!=0){ // есил клавиши нажаты
delay(100); // устанавливаем паузу между между опросами
}
}
//======выводим на экран часы====================
void playvremay(){
clrAll(); // очистка экрана
lasth0=h0;
lastm0=m0;
for (uint8_t b = 0; b <= 11; b++) {
if (chas[lasth0*12+b]!=0){
digitalWrite(pins, chas[lasth0*12+b]); } // перебираем выходы, читаем массив.
if (minuta[lastm0*12+b]!=0){
digitalWrite(pins, minuta[lastm0*12+b]);} // перебираем выходы, читаем массив.
}
}
//======выводим на экран часы====================
void playchas(){
clrAll(); // очистка экрана
lasth0=h0;
for (uint8_t b = 0; b <= 11; b++) {
digitalWrite(pins, chas[lasth0*12+b]);} // перебираем выходы, читаем массив.
}
//======выводим на экран минуты====================
void playminuta(){
clrAll(); // очистка экрана
lastm0=m0;
for (uint8_t b = 0; b <= 11; b++) {
digitalWrite(pins, minuta[lastm0*12+b]);} // перебираем выходы, читаем массив.
}
//=======очистить экран==========
void clrAll(){
for (uint8_t b = 0; b <= 11; b++) {
digitalWrite (pins, LOW);} // перебираем выходы, тушим все светики.
}
//==============
//-------------------------------------------конец--------------------------------------------------------------------------------------------
я немного перестарался...
девайс может показывать двумя светиками час как просила Asya K
и может показывать двумя светиками час и одним светиком минуты (бонус
Код: Выделить всё
[code] //-------------------------------------------------------
playvremay(); // выводим на экран часы и минуты
// playchas(); // выводим на экран только часы
//-------------------------------------------------------
- Вложения
-
- casy.zip
- (224.51 КБ) 211 скачиваний
-
BlackKilkennyCat
- Собутыльник Кота
- Сообщения: 2905
- Зарегистрирован: Ср ноя 29, 2017 06:58:50
Re: Контроллер для последовательного включения светодиодов
Serzh2000, круто! ну а я вчерашний вечер потратил на изучение мк, stm8l050 - для меня новый, есть небольшие отличия, да на алгоритм проброса шим через регистр, успел лишь бип-бип )
Re: Контроллер для последовательного включения светодиодов
[uquote="Serzh2000",url="/forum/viewtopic.php?p=3940508#p3940508"]сегодня встал, делать нечего, вот навоял...
[/uquote]
Ну, если встал, и делать нечего, тогда конечно.)
"Так значит можете, если захотите!"
Ну, если встал, и делать нечего, тогда конечно.)
"Так значит можете, если захотите!"
-
BlackKilkennyCat
- Собутыльник Кота
- Сообщения: 2905
- Зарегистрирован: Ср ноя 29, 2017 06:58:50
Re: Контроллер для последовательного включения светодиодов
[uquote="BlackKilkennyCat",url="/forum/viewtopic.php?p=3938859#p3938859"]Вложения:
DipTrace Schematic - clock.pdf [20.49 KiB][/uquote]
На всяк случай, вдруг кто вздумает повторить или взять как базу для своего проекта.
Здесь, и соответственно, в трассировке есть пара схемных недоделок-ошибок:
1)в процессе работы пришлось задрать частоту обновления регистра очень высоко, чтобы хоть как-то регулировать яркость, вследствие этого необходимо добавить резисторы для нормального закрытия ключей, либо заменить mosfet на биполярные, иначе появляется паразитная засветка светодиодов. Резисторы 1k включаются между выходом строк и GND;
2) отслеживание исчезновения основного питания и последующий перевод мк в low run mode при таком запитывании мк и сдвигового регистра в ряде случаев может произойти некорректно - паразитное напряжение может пройти через защитные диоды регистра обратно на шину основного питания, что вызовет ложное срабатывание алгоритма. Решение: либо внимательно следить за состоянием портов, либо развязать питание регистра ещё одним диодом.
3) яркость регулируется более-менее приемлемо, но мк пришлось тактировать от 8 МГЦ - меньшая частота вызывает видимое мерцание на минимальной яркости. Но зато яркость меняется индивидуально для каждого светодиода.
прототип отправлен, после оценки-замечаний будет доработан.
DipTrace Schematic - clock.pdf [20.49 KiB][/uquote]
На всяк случай, вдруг кто вздумает повторить или взять как базу для своего проекта.
Здесь, и соответственно, в трассировке есть пара схемных недоделок-ошибок:
1)в процессе работы пришлось задрать частоту обновления регистра очень высоко, чтобы хоть как-то регулировать яркость, вследствие этого необходимо добавить резисторы для нормального закрытия ключей, либо заменить mosfet на биполярные, иначе появляется паразитная засветка светодиодов. Резисторы 1k включаются между выходом строк и GND;
2) отслеживание исчезновения основного питания и последующий перевод мк в low run mode при таком запитывании мк и сдвигового регистра в ряде случаев может произойти некорректно - паразитное напряжение может пройти через защитные диоды регистра обратно на шину основного питания, что вызовет ложное срабатывание алгоритма. Решение: либо внимательно следить за состоянием портов, либо развязать питание регистра ещё одним диодом.
3) яркость регулируется более-менее приемлемо, но мк пришлось тактировать от 8 МГЦ - меньшая частота вызывает видимое мерцание на минимальной яркости. Но зато яркость меняется индивидуально для каждого светодиода.
прототип отправлен, после оценки-замечаний будет доработан.


