Большие плавные часы Arduino & WS2812 flowing clock

Обсуждаем цифровые устройства...
b612
Вымогатель припоя
Сообщения: 584
Зарегистрирован: Чт янв 07, 2010 16:58:11
Контактная информация:

Re: Большие плавные часы Arduino & WS2812 flowing clock

Сообщение b612 »

[uquote="РОСКА",url="/forum/viewtopic.php?p=3605356#p3605356"]Привет мучителю микросхем! Не могу разобраться с настройками яркости с 22 по 25.[/uquote]
#define NastrOsveshennostNastalDenL 22//младший(66) и старший(67) байты цифры, которая является порогом триггера Шмитта
#define NastrOsveshennostNastalDenH 23//для включения дневного режима
#define NastrOsveshennostNastalaNochL 24 //аналогично для ночного режима
#define NastrOsveshennostNastalaNochH 25

младшие байты как показала практика, роли не играют
обрабатывается это так
Спойлер

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

        if (!VsegdaDen) { //реакция на датчик освещенности
          if (((Osveshennost) < OsveshennostNastalDen) && (!DenNoch)) {
            DenNoch = true;
            NastalDen();
          }
          else if (((Osveshennost) > OsveshennostNastalaNoch) && (DenNoch)) {
            DenNoch = false;
            NastalaNoch();
          }
        }

по русски : свет вечером темнеет и когда доходит до OsveshennostNastalaNoch часики переключаются в ночной режим
потом светлеет и когда доходит до OsveshennostNastalDen то переходят в дневной.
Важно помнить, что освещенность измеряется обратно. чем больше света тем меньше цифра.
Надо бы конечно это переделать, но руки не доходят.

Спойлер[uquote="РОСКА",url="/forum/viewtopic.php?p=3605356#p3605356"]И в 26-й настройке есть 3 метода измерения освещенности. Как это :dont_know: подскажите
И с 27-й настройкой я тоже нуждаюсь в помощи!
И про самую изюминку этих часов, про зайцев еще хотел спросить: их яркость меняется?
Спасибо![/uquote]

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

#define _sNakopleniem 0
#define _sZatemneniem 1
#define _sZatemneniem2 2
uint8_t MetodIzmereniyaOsveshennosti = _sNakopleniem;
...
каждую миллисекунду
    if (MetodIzmereniyaOsveshennosti == _sNakopleniem)
      //|| ((MetodIzmereniyaOsveshennosti == _sZatemneniem2) && (!DenNoch)))
    {
      OsveshennostCshIsmerenij++;
      if (TypDatchikaSveta == _AnalogTypDatchikaSvetaBool) {
        uint16_t o = analogRead(0);
        OsveshennostNakopitel = OsveshennostNakopitel + o;
      } else { //_DigitalTypDatchikaSvetaBool
        if ((~PIND & B00001000) == 0) {
          OsveshennostNakopitel = OsveshennostNakopitel + 1024;
        }
      }
      if (OsveshennostCshIsmerenij >= 40) { //40 миллисекунд это две волны 50Гц
        Osveshennost = OsveshennostNakopitel;
        OsveshennostNakopitel = 0;
        OsveshennostCshIsmerenij = 0;
      }
    }//if (MetodIzmereniyaOsveshennosti==0){
...
каждую секунду
        //если метод с затемнением
        if ((MetodIzmereniyaOsveshennosti == _sZatemneniem)
          || (MetodIzmereniyaOsveshennosti == _sZatemneniem2))
        {
          if (OsveshennostCshIsmerenij >= ChastotaIzmereniaOsveshennosti) {
            OsveshennostCshIsmerenij = 0;
            #ifdef __NeoPixel
              //Если метод с только дневным затемнением и ночь
              if ((MetodIzmereniyaOsveshennosti == _sZatemneniem2) && (!DenNoch))
              { Osveshennost = analogRead(0) * 64;//не гасим а просто измеряем
              }else{ //если метод с любым затемнением или день
                pogasit();//затемняем
                //delayMicroseconds(50);
                delay(DlitelnostIzmereniaOsveshennosti);
                Osveshennost = analogRead(0) * 64;
                pixels.show();
              }
            #else//#ifdef __NeoPixel
              Osveshennost = analogRead(0) * 64;
            #endif//#ifdef __NeoPixel
          }
          else {//if (OsveshennostCshIsmerenij >= ChastotaIzmereniaOsveshennosti) {
            OsveshennostCshIsmerenij++;
          }//if (OsveshennostCshIsmerenij >= ChastotaIzmereniaOsveshennosti) {
        }//если метод с затемнением

если по русски то
0 - в течение 40 миллисекунд каждую миллисекунду измеряется освещенность и складывается
потом результат делится на 40
Это сделано для случая когда комната освещается лампами с сильной пульсацией
1 - каждые ChastotaIzmereniaOsveshennosti (настр 27) секунд табло гаснет на DlitelnostIzmereniaOsveshennosti (настр 28) миллисекунд, в конце этого интервала производится одиночное измерение
2 - то же что и 1 только в ночном режиме табло не гаснет
1ый и 2-ой режимы сделаны для случая если картину портит освещенность создаваемая самими часиками.
По этой же причине в режимах 1 и 2 никогда не включается десятичная точка между 2-ым и 3-им разрядами ибо неподалёку от неё я и устанавливаю датчик освещенности.

Добавлено after 17 minutes 41 second:
//про настройки для версии прошивки 84
Спойлер#define KolichestvoNastroek 78
#define Nastr0 0 //НЕ ИЗМЕНЯТЬ эта настройка соответствует надписи "SET"
#define NastrKorrektciaSekund 1 //суточная корректировка секунд 120=нет коррекции, 0=-120 сек, 240=120 сек
#define NastrVsegdaDen 2 //"всегда день" устр-во не будет реагировать на датчик освещенности
#define NastrSonNachH 3 //начало сна (час)
#define NastrSonNachM 4 //начало сна (минута)
#define NastrSonKonH 5 //конец сна (час)
#define NastrSonKonM 6 //конец сна (минута)
#define NastrZajcyOnOFF 7
#define NastrZaderjkaDlaChasovIMinutDen 8 //искусственная задержка обновления для дневного режима в миллисекундах
#define NastrZaderjkaDlaChasovIMinutNoch 9 //искусственная задержка обновления для ночного режима в миллисекундах
#define NastrDelitelDen 10 //число - степень двойки на которую будет поделено значение цветовых компонентов
#define NastrDelitelNoch 11 //число - степень двойки на которую будет поделено значение цветовых компонентов
#define NastrMinutSvetitVoSne 12
#define NastrCvetChasovIMinut 13 //номер цвета в палитре для часов и минут
#define NastrCvetDnyaMesyzca 14 //номер цвета в палитре для дня и месяца
#define NastrCvetDnyaNedeli 15 //номер цвета в палитре для дня недели
#define NastrCvetGradusnika0 16 //номер цвета в палитре для градусника #0
#define NastrCvetGradusnika1 17 //номер цвета в палитре для градусника #1
#define NastrCvetGradusnika2 18 //номер цвета в палитре для градусника #2
#define NastrCvetOstalnyhGradusnikoff 19 //номер цвета в палитре для остальных градусников
#define NastrCvetDavleniya 20 //номер цвета в палитре для давления
#define NastrCvetOsveshennosti 21 //номер цвета в палитре для освещенности
#define NastrOsveshennostNastalDenL 22//младший и старший байты цифры, которая является порогом триггера Шмитта
#define NastrOsveshennostNastalDenH 23//для включения дневного режима
#define NastrOsveshennostNastalaNochL 24 //аналогично для ночного режима
#define NastrOsveshennostNastalaNochH 25
//как показала практика младшие байты не имеют смысла
//настройка NastrOsveshennostNastalDenH должна быть меньше настройки NastrOsveshennostNastalaNochH
#define NastrMetodIzmereniyaOsveshennosti 26
#define NastrChastotaIzmereniaOsveshennosti 27 //частота измеренияя освещенности методом "с затемнением" в секундах
#define NastrDlitelnostIzmereniaOsveshennosti 28 //длительность затемнения в миллисекундах
/* Про настройки 26,27 и 28
0 - в течение 40 миллисекунд каждую миллисекунду измеряется освещенность и складывается
потом результат делится на 40
Это сделано для случая когда комната освещается лампами с сильной пульсацией
1 - каждые ChastotaIzmereniaOsveshennosti (настр 27) секунд табло гаснет на DlitelnostIzmereniaOsveshennosti (настр 28) миллисекунд, в конце этого интервала производится одиночное измерение
2 - то же что и 1 только в ночном режиме табло не гаснет
1ый и 2-ой режимы сделаны для случая если картину портит освещенность создаваемая самими часиками.
По этой же причине в режимах 1 и 2 никогда не включается десятичная точка между 2-ым и 3-им разрядами ибо неподалёку от неё я и устанавливаю датчик освещенности.*/
#define NastravtomatFlag 29 //будет или не будет происходить автоматический цикл смены режимов
//ВАЖНО ! настройки последовательности 30-39 должны идти по порядку
//механизм привязан к NastrAvtomatPosledovatelnost0
#define NastrAvtomatPosledovatelnost0 30 //номер очередного режима
#define NastrAvtomatPosledovatelnost1 31 //или число равное общему количеству режимов
#define NastrAvtomatPosledovatelnost2 32 //означающее конец автоматического цикла
#define NastrAvtomatPosledovatelnost3 33
#define NastrAvtomatPosledovatelnost4 34
#define NastrAvtomatPosledovatelnost5 35
#define NastrAvtomatPosledovatelnost6 36
#define NastrAvtomatPosledovatelnost7 37
#define NastrAvtomatPosledovatelnost8 38
#define NastrAvtomatPosledovatelnost9 39
//ВАЖНО ! настройки последовательности 40-49 должны идти по порядку
//механизм привязан к NastrAvtomatTimer0
#define NastrAvtomatTimer0 40 //время в секундах, отведённое соответствующему режиму
#define NastrAvtomatTimer1 41 //при автоматической смене режимов
#define NastrAvtomatTimer2 42
#define NastrAvtomatTimer3 43
#define NastrAvtomatTimer4 44
#define NastrAvtomatTimer5 45
#define NastrAvtomatTimer6 46
#define NastrAvtomatTimer7 47
#define NastrAvtomatTimer8 48
#define NastrAvtomatTimer9 49
#define NastrShagRed 50 //число которое вычитается из цветового компонента за один цикл обновления
#define NastrShagGreen 51 //число которое вычитается из цветового компонента за один цикл обновления
#define NastrShagBlue 52 //число которое вычитается из цветового компонента за один цикл обновления
#define NastrTypDatchikaSveta 53 //тип датчика света 0-_DigitalTypDatchikaSvetaByte цифровой, 1- _AnalogTypDatchikaSvetaByte аналоговый
//ВАЖНО ! настройки последовательности 54-77 должны идти по порядку
//механизм привязан к NastrOsnovnojRed
#define NastrOsnovnojRed 54 //палитра
#define NastrOsnovnojGreen 55 //желтый
#define NastrOsnovnojBlue 56 //
#define NastrRozovyjRed 57 //розовый
#define NastrRozovyjGreen 58 //
#define NastrRozovyjBlue 59
#define NastrGloubojyjRed 60 //голубой
#define NastrGloubojjGreen 61
#define NastrGloubojjBlue 62
#define NastrZelenovatyjRed 63 //зеленоватый
#define NastrZelenovatyjGreen 64
#define NastrZelenovatyjBlue 65
#define NastrPalitra01R 66
#define NastrPalitra01G 67
#define NastrPalitra01B 68
#define NastrPalitra02R 69
#define NastrPalitra02G 70
#define NastrPalitra02B 71
#define NastrPalitra03R 72
#define NastrPalitra03G 73
#define NastrPalitra03B 74
#define NastrPalitra04R 75
#define NastrPalitra04G 76
#define NastrPalitra04B 77
Аватара пользователя
РОСКА
Родился
Сообщения: 10
Зарегистрирован: Сб авг 18, 2018 14:06:39

Re: Большие плавные часы Arduino & WS2812 flowing clock

Сообщение РОСКА »

Ok b612! Премного благодарен. Все очень доходчиво. Спасибо за лик. без.
Последний раз редактировалось РОСКА Вт апр 02, 2019 19:43:26, всего редактировалось 1 раз.
b612
Вымогатель припоя
Сообщения: 584
Зарегистрирован: Чт янв 07, 2010 16:58:11
Контактная информация:

Re: Большие плавные часы Arduino & WS2812 flowing clock

Сообщение b612 »

[uquote="РОСКА",url="/forum/viewtopic.php?p=3607566#p3607566"]Ok b612! Спасибо за лик. без.[/uquote]Плюс встал на место ?
Ждём настоящий видосик
Аватара пользователя
РОСКА
Родился
Сообщения: 10
Зарегистрирован: Сб авг 18, 2018 14:06:39

Re: Большие плавные часы Arduino & WS2812 flowing clock

Сообщение РОСКА »

Ах, да! Вы кажеться не упомянули про яркость зайцев. Она регулируется?
b612
Вымогатель припоя
Сообщения: 584
Зарегистрирован: Чт янв 07, 2010 16:58:11
Контактная информация:

Re: Большие плавные часы Arduino & WS2812 flowing clock

Сообщение b612 »

[uquote="РОСКА",url="/forum/viewtopic.php?p=3607570#p3607570"]Ах, да! Вы кажеться не упомянули про яркость зайцев. Она регулируется?[/uquote]не регулируется
romanchik_71@mail.ru
Родился
Сообщения: 11
Зарегистрирован: Чт янв 31, 2019 21:13:35

Re: Большие плавные часы Arduino & WS2812 flowing clock

Сообщение romanchik_71@mail.ru »

Всем добрый день! Мне часы очень понравились и я решил внести свой скромный вклад в их популяризацию. Оставляю ссылку на архив:
https://yadi.sk/d/HJePI9-nKeQJ7A
Там три папки с моделями ЧАСЫ_2, ЧАСЫ_3 и ЧАСЫ_4. В каждой папке отдельный комплект моделей для изготовления часов Дмитрия. Сам изготовил каждый из этих вариантов, одни себе, два - по просьбе близких. В папке ЧАСЫ_3 есть текстовый файл с описанием. Модели в формате stl, а также имеются исходники в m3d и stp. Так что пользуйтесь, кто хочет что-то поменять, меняйте на здоровье. Все три варианта выглядят просто охренительно и радуют своих владельцев. Единственная просьба к автору... У меня мама зациклена на влажности... Ей очень понравились сами часы, но ворчит, что не показывают влажность)) У меня валяется модуль DHT11, если не сложно, привяжите его к прошивке (а на будущее, можно было бы вместо BMP-280 использовать BME-280, который измеряет и влажность, и температуру, и давления).
Еще по часам, в качестве кнопок лучше использовать "мышиные" микрики, не нужны кондеры параллельно кнопкам, отсутствует "дребезг" контактов. И между D6 ардуины и лентой лучше бы поставить резистор ом на 200, чтобы исключить возможное выгорание пина ардуины или первого светодиода. А за часы Дмитрию большое спасибо. Надеюсь и мне кто-то скажет спасибо за модельки)))
b612
Вымогатель припоя
Сообщения: 584
Зарегистрирован: Чт янв 07, 2010 16:58:11
Контактная информация:

Re: Большие плавные часы Arduino & WS2812 flowing clock

Сообщение b612 »

[uquote="romanchik_71@mail.ru",url="/forum/viewtopic.php?p=3619020#p3619020"]Всем добрый день! Мне часы очень понравились и я решил внести свой скромный вклад в их популяризацию. Оставляю ссылку на архив:
https://yadi.sk/d/HJePI9-nKeQJ7A[/uquote]Вот это реально подарок !!!
Спасибо огромное !
Сделайте ещё если не трудно небольшие видосики про ваши экземпляры.
Для такого человека не жалко и подопиливать прошивку.
У меня нет в железе ни DHT ни BME. Я мог бы сделать прошивку а вы попытайтесь собрать в железе и опробуете. Надеюсь всё получится если датчики не закапризничают.
Конденсаторы параллельно кнопкам нужны не для подавления дребезга, он давится программно. просто опыт показал, что без кондёров появляются ложные срабатывания от статики даже когда к часам никто не прикасается.
Резистор не понимаю за чем он нужен. Защищать ногу ардуины на случай если ардуине не подано питание а на ленту уже подано вроде не нужно, ибо в ардуине вроде есть защитные диводы. Развечто защищать светик от аналогичной ситуации...
В прочем согласен если даташит велит, значит надо.
b612
Вымогатель припоя
Сообщения: 584
Зарегистрирован: Чт янв 07, 2010 16:58:11
Контактная информация:

Re: Большие плавные часы Arduino & WS2812 flowing clock

Сообщение b612 »

Пробная прошивка для часов собраных по схеме _Mishany

со схемой гирлянды
4 разряда, 1 светик на сегмент, двоеточие между средними разрядами

Если кому надо, сделаю и для других вариантов "гирлянды"
Вложения
300419_Mishany_1led_seg.hex
(84.19 КБ) 463 скачивания
romanchik_71@mail.ru
Родился
Сообщения: 11
Зарегистрирован: Чт янв 31, 2019 21:13:35

Re: Большие плавные часы Arduino & WS2812 flowing clock

Сообщение romanchik_71@mail.ru »

А я все не теряю надежду дождаться свою прошивку с датчиком влажности))
b612
Вымогатель припоя
Сообщения: 584
Зарегистрирован: Чт янв 07, 2010 16:58:11
Контактная информация:

Re: Большие плавные часы Arduino & WS2812 flowing clock

Сообщение b612 »

[uquote="romanchik_71@mail.ru",url="/forum/viewtopic.php?p=3627689#p3627689"]А я все не теряю надежду дождаться свою прошивку с датчиком влажности))[/uquote]а я думал вы пропали.
Ок постараюсь сделать побыстрее.
b612
Вымогатель припоя
Сообщения: 584
Зарегистрирован: Чт янв 07, 2010 16:58:11
Контактная информация:

Re: Большие плавные часы Arduino & WS2812 flowing clock

Сообщение b612 »

SergeyK

Чтобы поотлаживать прошивку на схеме Mishany нужно подключить схему через переходник к компу через RX и TX
выводы PD0 к TX компа и PD1 к RX компа. для пущей безопасности через резисторы по 100-200 ом
Прошивка скорее всего с первого раза ничего не высветит на светиках, но с компом должна начать общаться.
И настройтесь на то, что перепрошивать придётся раз 10-20
может быть имеет смысл подключить DTR по ардуинсовски и шить по ардуиновски через тот же переходник
Вложения
SergeyK001.hex
(83.29 КБ) 375 скачиваний
b612
Вымогатель припоя
Сообщения: 584
Зарегистрирован: Чт янв 07, 2010 16:58:11
Контактная информация:

Re: Большие плавные часы Arduino & WS2812 flowing clock

Сообщение b612 »

поправленная прошивка под схему Mishany под BME280
Вложения
SergeyK007.hex
(86.78 КБ) 402 скачивания
Аватара пользователя
SergeyK
Говорящий с текстолитом
Сообщения: 1511
Зарегистрирован: Вт апр 21, 2009 20:52:29
Откуда: ХМАО Югра Белоярский
Контактная информация:

Re: Большие плавные часы Arduino & WS2812 flowing clock

Сообщение SergeyK »

[uquote="b612",url="/forum/viewtopic.php?p=3676848#p3676848"]поправленная прошивка под схему Mishany под BME280[/uquote]

https://youtu.be/FLdTEooRJM4

Вот так получилось с этой прошивкой!!!! Есть небольшие недочеты но в основном уже все работает!
Чето телефон стал глючно снимать, пришлось что то положить на экран чтоб хоть как то видно стало! Но думаю что смысл будет понятен!
Гнев - мгновенное разрушение реальности!
Делай всегда хорошо, а хреново и так получится!!!!!
Аватара пользователя
shura2000
Вымогатель припоя
Сообщения: 613
Зарегистрирован: Пн фев 23, 2015 21:17:29
Откуда: г. Протвино, МО

Re: Большие плавные часы Arduino & WS2812 flowing clock

Сообщение shura2000 »

Эффектиков бы всяких. Типа такого https://www.youtube.com/watch?v=PUb0eEovKdo
скролов всяких пепреходов цифр из одной в другую и тд.
Понятно что попса, но эффетно же.
b612
Вымогатель припоя
Сообщения: 584
Зарегистрирован: Чт янв 07, 2010 16:58:11
Контактная информация:

Re: Большие плавные часы Arduino & WS2812 flowing clock

Сообщение b612 »

[uquote="shura2000",url="/forum/viewtopic.php?p=3676940#p3676940"]Эффектиков бы всяких. Типа такого https://www.youtube.com/watch?v=PUb0eEovKdo
скролов всяких пепреходов цифр из одной в другую и тд.
Понятно что попса, но эффетно же.[/uquote]
Можно было бы, НО память ардуины уже кончилась (

Скетч использует 30574 байт (99%) памяти устройства. Всего доступно 30720 байт.
Глобальные переменные используют 1136 байт (55%) динамической памяти, оставляя 912 байт для локальных переменных. Максимум: 2048 байт.

даже пришлось кое-что выкидывать.
пора портироваться на ESP

Да и так уже информации, которую могут выдавать часы, больше чем можно без напряга считывать.

Реально показывать не более 4-ёх показателей, каждый держать на экране по 2 секунды. Приходится ждать того что нужно целых 6 секунд, и даже это уже раздражает.
b612
Вымогатель припоя
Сообщения: 584
Зарегистрирован: Чт янв 07, 2010 16:58:11
Контактная информация:

Re: Большие плавные часы Arduino & WS2812 flowing clock

Сообщение b612 »

[uquote="SergeyK",url="/forum/viewtopic.php?p=3676869#p3676869"]https://youtu.be/FLdTEooRJM4[/uquote]И корпус сделать такой белый эллллиптический (как обмылок) совершенно без намёка на прямоугольник и спереди и в разрезе.
и экран чтобы белый на белом под одно, а внутри световые перегородки.
Чтобы цифры появлялись как нарисованые светом.
И подставка тоже в виде ножки как у рюмки тоже эллиптическая и три кнопки на ней тоже эллиптические.
А ещё в такой эллиптический корпус можно поместить плосконький динамик.
И сделать бой в стиле жан мишель жарр или вот примерно так https://www.youtube.com/watch?v=sK0Po5LqS5E
b612
Вымогатель припоя
Сообщения: 584
Зарегистрирован: Чт янв 07, 2010 16:58:11
Контактная информация:

Re: Большие плавные часы Arduino & WS2812 flowing clock

Сообщение b612 »

Болеменее вылизанная прошивка для Mishany BME280

Часики в обоих вариантах и b612 & Mishany
Теперь умеют работать с датчиком BME280 и соответственно могут показывать влажность.
Плюс добавлен показ температуры, снимаемой с датчиков BME и BMP
Вложения
SergeyK011.hex
(87.43 КБ) 419 скачиваний
Последний раз редактировалось b612 Вт авг 06, 2019 12:19:12, всего редактировалось 1 раз.
Аватара пользователя
SergeyK
Говорящий с текстолитом
Сообщения: 1511
Зарегистрирован: Вт апр 21, 2009 20:52:29
Откуда: ХМАО Югра Белоярский
Контактная информация:

Re: Большие плавные часы Arduino & WS2812 flowing clock

Сообщение SergeyK »

Чуток позже выложу видео работы. В общих чертах все нравится, смотрится шикарно. Надо немного разобраться с настройками. Автору прошивки огромное спасибо, потратили три дня на адаптацию прошивки под эту схему. Думаю что не зря!!!!
Гнев - мгновенное разрушение реальности!
Делай всегда хорошо, а хреново и так получится!!!!!
Аватара пользователя
SergeyK
Говорящий с текстолитом
Сообщения: 1511
Зарегистрирован: Вт апр 21, 2009 20:52:29
Откуда: ХМАО Югра Белоярский
Контактная информация:

Re: Большие плавные часы Arduino & WS2812 flowing clock

Сообщение SergeyK »

Видео обновленной прошивки:
https://youtu.be/hbXFqX9gVus
Гнев - мгновенное разрушение реальности!
Делай всегда хорошо, а хреново и так получится!!!!!
Аватара пользователя
shura2000
Вымогатель припоя
Сообщения: 613
Зарегистрирован: Пн фев 23, 2015 21:17:29
Откуда: г. Протвино, МО

Re: Большие плавные часы Arduino & WS2812 flowing clock

Сообщение shura2000 »

Я так понимаю - нормального ночного режима нету? Просто выключение на ночь. Совсем. и очень много всяких настроек, которые не очень удобно осуществляются?
Ответить

Вернуться в «Цифровая техника»