Контроллер для последовательного включения светодиодов

Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Аватара пользователя
valentinovich
Электрический кот
Сообщения: 1003
Зарегистрирован: Ср окт 04, 2017 20:47:40

Re: Контроллер для последовательного включения светодиодов

Сообщение valentinovich »

BlackKilkennyCat Даже бесплатно.
Вам напомнить, альтруист вы наш, что это коммерческий проект и для коммерческих целей?
Реклама
BlackKilkennyCat
Собутыльник Кота
Сообщения: 2905
Зарегистрирован: Ср ноя 29, 2017 06:58:50

Re: Контроллер для последовательного включения светодиодов

Сообщение BlackKilkennyCat »

предлагаю 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, а мне как-то пофиг. а Вас это как-то коробит? Напоминаю, что это не раздел "Работа", я вправе озвучивать любые решения.
Реклама
Reflector
Поставщик валерьянки для Кота
Сообщения: 2089
Зарегистрирован: Вс июн 19, 2016 09:32:03

Re: Контроллер для последовательного включения светодиодов

Сообщение Reflector »

[uquote="BlackKilkennyCat",url="/forum/viewtopic.php?p=3938273#p3938273"]предлагаю 1 кнопку но с заумным алгоритмом:[/uquote]
Отпускание при коротком нажатии - переключение на следующий светодиод, длинное нажатие - сброс. Еще и минуты одной кнопкой настраивать я бы не стал...
Аватара пользователя
Zhuk72
Сверлит текстолит когтями
Сообщения: 1231
Зарегистрирован: Ср янв 29, 2014 08:41:31
Откуда: Баку
Контактная информация:

Re: Контроллер для последовательного включения светодиодов

Сообщение Zhuk72 »

[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]
Каждый имеет право на свое личное ошибочное мнение.

У меня было тяжелое детство - я до 14 лет смотрел черно-белый телевизор.
Реклама
Эиком - электронные компоненты и радиодетали
Asya K
Родился
Сообщения: 9
Зарегистрирован: Сб дек 05, 2020 14:54:01

Re: Контроллер для последовательного включения светодиодов

Сообщение Asya K »

[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"]
BlackKilkennyCat Даже бесплатно.
Вам напомнить, альтруист вы наш, что это коммерческий проект и для коммерческих целей?[/uquote]

Что значит "напомнить"? Я где-то об этом упоминала? Для коммерческих проектов я не обращалалсь бы на форум, это делается несколько иначе. Я сказала только, что заплачу за работу мастера. По-моему, это нормально)) Я поняла, что Вам легче становится, когда Вы на негативе, да?
Реклама
BlackKilkennyCat
Собутыльник Кота
Сообщения: 2905
Зарегистрирован: Ср ноя 29, 2017 06:58:50

Re: Контроллер для последовательного включения светодиодов

Сообщение BlackKilkennyCat »

Zhuk72 писал(а):Как только вы представите все возможные сценарии
Поверьте, лучше не надо. У меня очень богатая фантазия.
Пользователь не вас, а дизайнера будет поминать, может даже непечатными словами.
Часы в микроволновке. И ничего, все как-то мучаются. Хотя хочется вскрыть и впихнуть туда батарейку...
Реклама
Аватара пользователя
Ivanoff-iv
Друг Кота
Сообщения: 7077
Зарегистрирован: Пт ноя 11, 2016 05:48:09
Откуда: Сердце Пармы

Re: Контроллер для последовательного включения светодиодов

Сообщение Ivanoff-iv »

более простой алгоритм настройки:
после включения не горит ничего
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"]
Asya K писал(а):общаться не умеете?
Вам реальную помощь предложил Самсусамыч....А вы именно на его вопросы и не ответили.....Сидеть сутками и ждать тоже неинтересно (а надо-то вам)...[/uquote]

есть аналоговые, цифровые, аналого-цифровые. Может и еще что-то, дальше вникать нет необходимости.[/uquote]
Разве я спрашивал об этом? Вы, или не читаете вопросы, или совершенно забыли курс школьной физики (раздел электротехники)… попытаюсь ещё раз задать вопросы: https://radiokot.ru/forum/viewtopic.php ... 0#p3937200
И в дополнение: Вы сможете залить прошивку в МК AVR?
1en2
Собутыльник Кота
Сообщения: 2804
Зарегистрирован: Вс фев 02, 2020 09:12:37

Re: Контроллер для последовательного включения светодиодов

Сообщение 1en2 »

я так понял, что механизм часов лучше не трогать, это может просто привести к его поломке....
Аватара пользователя
Ivanoff-iv
Друг Кота
Сообщения: 7077
Зарегистрирован: Пт ноя 11, 2016 05:48:09
Откуда: Сердце Пармы

Re: Контроллер для последовательного включения светодиодов

Сообщение Ivanoff-iv »

ну... во первых придётся собрать хоть и не сложную, но схемку...
попробовал нарисовать её в протеусе... похоже ТСу, в данном случае проще всего взять готовую ардуину, её и прошить проще будет...
Для тех, кто не учил магию мир полон физики :)
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
Аватара пользователя
valentinovich
Электрический кот
Сообщения: 1003
Зарегистрирован: Ср окт 04, 2017 20:47:40

Re: Контроллер для последовательного включения светодиодов

Сообщение valentinovich »

BlackKilkennyCat
я вправе озвучивать любые решения.
Главное чтоб они ещё были бы логически правильные. О чём вам говорит и -
Zhuk72
Как только вы представите все возможные сценарии, поймете какой будет геморрой для пользователя. ...
Пользователь не вас, а дизайнера будет поминать, может даже непечатными словами.
:)
Asya K
Что значит "напомнить"? Я где-то об этом упоминала?
Сорри, так получилось, но это как бы относилось не совсем к вам.
И Асенька, :) плиз, гляньте в личку.
BlackKilkennyCat
Собутыльник Кота
Сообщения: 2905
Зарегистрирован: Ср ноя 29, 2017 06:58:50

Re: Контроллер для последовательного включения светодиодов

Сообщение BlackKilkennyCat »

Учитывая сжатость срок и несколько, конечно, громогласное моё заявление о паре вечеров, комплектующие выбирались из максимального наличия на моём складе.

Итого можно посмотреть на схеме.
Краткое пояснение:
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 скачивания
OKF
Это не хвост, это антенна
Сообщения: 1392
Зарегистрирован: Вт июн 07, 2011 08:03:18

Re: Контроллер для последовательного включения светодиодов

Сообщение OKF »

Я бы сделал иначе. Никаких самодельных плат - всё приобретается в магазине.
- Ардуино Нано. Завтра захочется добавить будильник или изменить светодиодные эффекты, новый скетч и готово. Более того, не понравится - вынул и используешь для других целей.
- 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: Контроллер для последовательного включения светодиодов

Сообщение BlackKilkennyCat »

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). Обидно. Наверное, не вижу решения.
Изображение
BlackKilkennyCat
Собутыльник Кота
Сообщения: 2905
Зарегистрирован: Ср ноя 29, 2017 06:58:50

Re: Контроллер для последовательного включения светодиодов

Сообщение BlackKilkennyCat »

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

Изображение

Ну, подбор и пайка резисторов дело минутное и совместно с программой.
Итого, 12-16 часов на подобное устройство. Плюс программирование.
Вполне можно уложится в термин "Конструкция выходного дня". И нет необходимости в ардуино.
Аватара пользователя
Serzh2000
Опытный кот
Сообщения: 867
Зарегистрирован: Пт фев 27, 2015 12:00:53
Откуда: Рязанская область

Re: Контроллер для последовательного включения светодиодов

Сообщение Serzh2000 »

[uquote="OKF",url="/forum/viewtopic.php?p=3939051#p3939051"]Я бы сделал иначе. Никаких самодельных плат - всё приобретается в магазине.
- Ардуино Нано. Завтра захочется добавить будильник или изменить светодиодные эффекты, новый скетч и готово. Более того, не понравится - вынул и используешь для других целей.
- RTC DS3231. Высокоточные часы обязательно. Погрешность 1 мин/год позволяет использовать как образцовые, по ним выставляются механические. Ручная синхронизация называется.)

- 2 кнопки для установки времени, хотя можно и с ПК - USB в наличии.
- 4 пина на индикацию 12-ти светодиодов - куча проводов не нужна.
- Питание. Внешний БП от мобильного телефона 5 в/500 ма (либо 9 в/500 ма).
Цена на комплектующие в районе 500-1000р. Софт BlackKilkennyCat напишет бесплатно.)[/uquote]


сегодня встал, делать нечего, вот навоял... :music:

плата получилась Изображение

ну и сам скетч ардуиновский

Спойлер#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
и может показывать двумя светиками час и одним светиком минуты (бонус :facepalm: :)) )

Код: Выделить всё

[code]    //-------------------------------------------------------
      playvremay();      // выводим на экран часы и минуты
    //  playchas();        // выводим на экран только часы     
    //-------------------------------------------------------
  
[/code]
Вложения
casy.zip
(224.51 КБ) 211 скачиваний
BlackKilkennyCat
Собутыльник Кота
Сообщения: 2905
Зарегистрирован: Ср ноя 29, 2017 06:58:50

Re: Контроллер для последовательного включения светодиодов

Сообщение BlackKilkennyCat »

Serzh2000, круто! ну а я вчерашний вечер потратил на изучение мк, stm8l050 - для меня новый, есть небольшие отличия, да на алгоритм проброса шим через регистр, успел лишь бип-бип )
OKF
Это не хвост, это антенна
Сообщения: 1392
Зарегистрирован: Вт июн 07, 2011 08:03:18

Re: Контроллер для последовательного включения светодиодов

Сообщение OKF »

[uquote="Serzh2000",url="/forum/viewtopic.php?p=3940508#p3940508"]сегодня встал, делать нечего, вот навоял... :music:[/uquote]
Ну, если встал, и делать нечего, тогда конечно.)
"Так значит можете, если захотите!"
BlackKilkennyCat
Собутыльник Кота
Сообщения: 2905
Зарегистрирован: Ср ноя 29, 2017 06:58:50

Re: Контроллер для последовательного включения светодиодов

Сообщение BlackKilkennyCat »

[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 МГЦ - меньшая частота вызывает видимое мерцание на минимальной яркости. Но зато яркость меняется индивидуально для каждого светодиода.

прототип отправлен, после оценки-замечаний будет доработан.
Ответить

Вернуться в «Разные вопросы по МК»