предлагаю 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, а мне как-то пофиг. а Вас это как-то коробит? Напоминаю, что это не раздел "Работа", я вправе озвучивать любые решения.
зачем ей знать, что происходит на циферблате? циферблат шагает сам, электронная начинка сама.
Как только вы представите все возможные сценарии, поймете какой будет геморрой для пользователя. Просто представьте, что питание МК пропало (батарейное как предполагается). После каждой смены батареи юзер должен будет выставлять время на МК в соответствии с часами "заумным алгоритмом"? А если часы и/или МК начнут врать каждый на несколько минут в одну сторону? Пользователь не вас, а дизайнера будет поминать, может даже непечатными словами.
Нужен механизм часов, на которые можно подавать внешние секундные импульсы (есть ли такие?), в данном случае с нашего МК. Он же и будет зажигать светодиоды.
_________________ Каждый имеет право на свое личное ошибочное мнение.
У меня было тяжелое детство - я до 14 лет смотрел черно-белый телевизор.
Качественное и безопасное устройство, работающее от аккумулятора, должно учитывать его физические и химические свойства, профили заряда и разряда, их изменение во времени и под влиянием различных условий, таких как температура и ток нагрузки. Мы расскажем о литий-ионных аккумуляторных батареях EVE и нескольких решениях от различных китайских компаний, рекомендуемых для разработок приложений с использованием этих АКБ. Представленные в статье китайские аналоги помогут заменить продукцию западных брендов с оптимизацией цены без потери качества.
дизайнер - это художник, спрашивать, видимо, дальше уже бесполезно....надо предлагать вопросы, на которые можно ответить да-нет.... Итого - 1)питание от сети +5 В подходит ?....(3 батарейки на два горящих светодиода себе бы не поставил) 2) автоматическая синхронизация не требуется 3) светодиоды идут сами по себе, но нужна кнопка их подгонки под нужный час 4)при нажатии (или отпускании) кнопки сбрасывать счётчик секунд (для синхронизации с секундной стрелкой), т.е. устанавливать только в 00 мин 00 сек.
1) не знаю, что такое +5 В. Обычная сеть 220В нужна. Как мне объяснили, на батарейках проработает от нескольких часов до неск.суток (зависит от батареек и их количества). Если так и есть, к черту всякие батарейки. 2) да 3) да 4) да
Вам напомнить, альтруист вы наш, что это коммерческий проект и для коммерческих целей?
Что значит "напомнить"? Я где-то об этом упоминала? Для коммерческих проектов я не обращалалсь бы на форум, это делается несколько иначе. Я сказала только, что заплачу за работу мастера. По-моему, это нормально)) Я поняла, что Вам легче становится, когда Вы на негативе, да?
Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре.
Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.
более простой алгоритм настройки: после включения не горит ничего 1е удержание - перебираются пары светодиодов (отпускаем кнопку в момент, когда они "догонят" часовую стрелку) 2е удержание - подстройка (бежит 1 светодиод, отпускаем кнопку, когда он догонит минутную стрелку)
это сеть 220в, пропущенная через блок питания (например зарядник от мобилки)
_________________ Просто не учи физику в школе, и вся твоя жизнь будет наполнена чудесами и волшебством Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
Вам реальную помощь предложил Самсусамыч....А вы именно на его вопросы и не ответили.....Сидеть сутками и ждать тоже неинтересно (а надо-то вам)...
есть аналоговые, цифровые, аналого-цифровые. Может и еще что-то, дальше вникать нет необходимости.
Разве я спрашивал об этом? Вы, или не читаете вопросы, или совершенно забыли курс школьной физики (раздел электротехники)… попытаюсь ещё раз задать вопросы: https://radiokot.ru/forum/viewtopic.php ... 0#p3937200 И в дополнение: Вы сможете залить прошивку в МК AVR?
ну... во первых придётся собрать хоть и не сложную, но схемку... попробовал нарисовать её в протеусе... похоже ТСу, в данном случае проще всего взять готовую ардуину, её и прошить проще будет...
_________________ Просто не учи физику в школе, и вся твоя жизнь будет наполнена чудесами и волшебством Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
BlackKilkennyCat я вправе озвучивать любые решения.
Главное чтоб они ещё были бы логически правильные. О чём вам говорит и -
Цитата:
Zhuk72 Как только вы представите все возможные сценарии, поймете какой будет геморрой для пользователя. ... Пользователь не вас, а дизайнера будет поминать, может даже непечатными словами.
:)
Цитата:
Asya K Что значит "напомнить"? Я где-то об этом упоминала?
Сорри, так получилось, но это как бы относилось не совсем к вам. И Асенька, плиз, гляньте в личку.
Учитывая сжатость срок и несколько, конечно, громогласное моё заявление о паре вечеров, комплектующие выбирались из максимального наличия на моём складе.
Итого можно посмотреть на схеме. Краткое пояснение: 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, новомодными регистрами для светодиодов и иных драйверов.
Я бы сделал иначе. Никаких самодельных плат - всё приобретается в магазине. - Ардуино Нано. Завтра захочется добавить будильник или изменить светодиодные эффекты, новый скетч и готово. Более того, не понравится - вынул и используешь для других целей. - RTC DS3231. Высокоточные часы обязательно. Погрешность 1 мин/год позволяет использовать как образцовые, по ним выставляются механические. Ручная синхронизация называется.) - 4-х разрядный LED индикатор. Припаивается к Нано. Хочется яркости, тогда модуль индикации на TM1636 по 4-м проводам. Индикатор при желании можно вывести на переднюю панель - будут ещё и цифровые часы. - 2 кнопки для установки времени, хотя можно и с ПК - USB в наличии. - 4 пина на индикацию 12-ти светодиодов - куча проводов не нужна. - Питание. Внешний БП от мобильного телефона 5 в/500 ма (либо 9 в/500 ма). Цена на комплектующие в районе 500-1000р. Софт 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). Обидно. Наверное, не вижу решения.
Вечер номер 3 Изготовление платы и пайка. Осталось подобрать резисторы для светодиодов и кнопок, да один диод. Заняло около 6 часов, но часть времени - извращенные эксперименты с ацетоном и засохшим ПФ-ВЩ, ожидание травления, а часть - поиск ферритовой бусины и металлизация отверстий методом втулок. Если бы у меня всё было как у нормального радиолюбителя (у меня даже паяльная станция в ремонте, паял громадным жалом обычным 30-ваттным), заняло бы опять 4 часа.
Ну, подбор и пайка резисторов дело минутное и совместно с программой. Итого, 12-16 часов на подобное устройство. Плюс программирование. Вполне можно уложится в термин "Конструкция выходного дня". И нет необходимости в ардуино.
Я бы сделал иначе. Никаких самодельных плат - всё приобретается в магазине. - Ардуино Нано. Завтра захочется добавить будильник или изменить светодиодные эффекты, новый скетч и готово. Более того, не понравится - вынул и используешь для других целей. - RTC DS3231. Высокоточные часы обязательно. Погрешность 1 мин/год позволяет использовать как образцовые, по ним выставляются механические. Ручная синхронизация называется.)
- 2 кнопки для установки времени, хотя можно и с ПК - USB в наличии. - 4 пина на индикацию 12-ти светодиодов - куча проводов не нужна. - Питание. Внешний БП от мобильного телефона 5 в/500 ма (либо 9 в/500 ма). Цена на комплектующие в районе 500-1000р. Софт BlackKilkennyCat напишет бесплатно.)
//----------, динамик, термистор, фоторезистор------------------------------------------------------------ #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==========================
//---------- 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[b], chas[lasth0*12+b]); } // перебираем выходы, читаем массив.
if (minuta[lastm0*12+b]!=0){ digitalWrite(pins[b], minuta[lastm0*12+b]);} // перебираем выходы, читаем массив. } } //======выводим на экран часы==================== void playchas(){ clrAll(); // очистка экрана lasth0=h0; for (uint8_t b = 0; b <= 11; b++) { digitalWrite(pins[b], chas[lasth0*12+b]);} // перебираем выходы, читаем массив. } //======выводим на экран минуты==================== void playminuta(){ clrAll(); // очистка экрана lastm0=m0; for (uint8_t b = 0; b <= 11; b++) { digitalWrite(pins[b], minuta[lastm0*12+b]);} // перебираем выходы, читаем массив. } //=======очистить экран========== void clrAll(){ for (uint8_t b = 0; b <= 11; b++) { digitalWrite (pins[b], LOW);} // перебираем выходы, тушим все светики. } //============== //----------
я немного перестарался... девайс может показывать двумя светиками [b]час как просила Asya K и может показывать двумя светиками час и одним светиком минуты (бонус )
Код:
[code] //---------- playvremay(); // выводим на экран часы и минуты // playchas(); // выводим на экран только часы //---------- [/code]
Serzh2000, круто! ну а я вчерашний вечер потратил на изучение мк, stm8l050 - для меня новый, есть небольшие отличия, да на алгоритм проброса шим через регистр, успел лишь бип-бип )
На всяк случай, вдруг кто вздумает повторить или взять как базу для своего проекта.
Здесь, и соответственно, в трассировке есть пара схемных недоделок-ошибок:
1)в процессе работы пришлось задрать частоту обновления регистра очень высоко, чтобы хоть как-то регулировать яркость, вследствие этого необходимо добавить резисторы для нормального закрытия ключей, либо заменить mosfet на биполярные, иначе появляется паразитная засветка светодиодов. Резисторы 1k включаются между выходом строк и GND; 2) отслеживание исчезновения основного питания и последующий перевод мк в low run mode при таком запитывании мк и сдвигового регистра в ряде случаев может произойти некорректно - паразитное напряжение может пройти через защитные диоды регистра обратно на шину основного питания, что вызовет ложное срабатывание алгоритма. Решение: либо внимательно следить за состоянием портов, либо развязать питание регистра ещё одним диодом. 3) яркость регулируется более-менее приемлемо, но мк пришлось тактировать от 8 МГЦ - меньшая частота вызывает видимое мерцание на минимальной яркости. Но зато яркость меняется индивидуально для каждого светодиода.
прототип отправлен, после оценки-замечаний будет доработан.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 16
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения