Обсуждаем цифровые устройства...
Ответить

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

Вс мар 31, 2019 11:14:53

Привет мучителю микросхем! Не могу разобраться с настройками яркости с 22 по 25.

#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 то переходят в дневной.
Важно помнить, что освещенность измеряется обратно. чем больше света тем меньше цифра.
Надо бы конечно это переделать, но руки не доходят.

Спойлер
И в 26-й настройке есть 3 метода измерения освещенности. Как это :dont_know: подскажите
И с 27-й настройкой я тоже нуждаюсь в помощи!
И про самую изюминку этих часов, про зайцев еще хотел спросить: их яркость меняется?
Спасибо!


Код:
#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

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

Вт апр 02, 2019 19:40:39

Ok b612! Премного благодарен. Все очень доходчиво. Спасибо за лик. без.
Последний раз редактировалось РОСКА Вт апр 02, 2019 19:43:26, всего редактировалось 1 раз.

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

Вт апр 02, 2019 19:42:35

Ok b612! Спасибо за лик. без.
Плюс встал на место ?
Ждём настоящий видосик

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

Вт апр 02, 2019 19:47:51

Ах, да! Вы кажеться не упомянули про яркость зайцев. Она регулируется?

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

Вт апр 02, 2019 19:48:36

Ах, да! Вы кажеться не упомянули про яркость зайцев. Она регулируется?
не регулируется

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

Чт апр 18, 2019 13:11:06

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

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

Чт апр 18, 2019 18:40:08

Всем добрый день! Мне часы очень понравились и я решил внести свой скромный вклад в их популяризацию. Оставляю ссылку на архив:
https://yadi.sk/d/HJePI9-nKeQJ7A
Вот это реально подарок !!!
Спасибо огромное !
Сделайте ещё если не трудно небольшие видосики про ваши экземпляры.
Для такого человека не жалко и подопиливать прошивку.
У меня нет в железе ни DHT ни BME. Я мог бы сделать прошивку а вы попытайтесь собрать в железе и опробуете. Надеюсь всё получится если датчики не закапризничают.
Конденсаторы параллельно кнопкам нужны не для подавления дребезга, он давится программно. просто опыт показал, что без кондёров появляются ложные срабатывания от статики даже когда к часам никто не прикасается.
Резистор не понимаю за чем он нужен. Защищать ногу ардуины на случай если ардуине не подано питание а на ленту уже подано вроде не нужно, ибо в ардуине вроде есть защитные диводы. Развечто защищать светик от аналогичной ситуации...
В прочем согласен если даташит велит, значит надо.

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

Ср май 01, 2019 08:55:38

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

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

Если кому надо, сделаю и для других вариантов "гирлянды"
Вложения
300419_Mishany_1led_seg.hex
(84.19 KiB) Скачиваний: 437

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

Сб май 04, 2019 04:52:06

А я все не теряю надежду дождаться свою прошивку с датчиком влажности))

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

Сб май 04, 2019 09:32:13

А я все не теряю надежду дождаться свою прошивку с датчиком влажности))
а я думал вы пропали.
Ок постараюсь сделать побыстрее.

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

Сб авг 03, 2019 12:48:08

SergeyK

Чтобы поотлаживать прошивку на схеме Mishany нужно подключить схему через переходник к компу через RX и TX
выводы PD0 к TX компа и PD1 к RX компа. для пущей безопасности через резисторы по 100-200 ом
Прошивка скорее всего с первого раза ничего не высветит на светиках, но с компом должна начать общаться.
И настройтесь на то, что перепрошивать придётся раз 10-20
может быть имеет смысл подключить DTR по ардуинсовски и шить по ардуиновски через тот же переходник
Вложения
SergeyK001.hex
(83.29 KiB) Скачиваний: 350

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

Вс авг 04, 2019 14:35:38

поправленная прошивка под схему Mishany под BME280
Вложения
SergeyK007.hex
(86.78 KiB) Скачиваний: 372

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

Вс авг 04, 2019 15:34:10

поправленная прошивка под схему Mishany под BME280


https://youtu.be/FLdTEooRJM4

Вот так получилось с этой прошивкой!!!! Есть небольшие недочеты но в основном уже все работает!
Чето телефон стал глючно снимать, пришлось что то положить на экран чтоб хоть как то видно стало! Но думаю что смысл будет понятен!

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

Вс авг 04, 2019 17:46:56

Эффектиков бы всяких. Типа такого https://www.youtube.com/watch?v=PUb0eEovKdo
скролов всяких пепреходов цифр из одной в другую и тд.
Понятно что попса, но эффетно же.

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

Вс авг 04, 2019 20:37:30

Эффектиков бы всяких. Типа такого https://www.youtube.com/watch?v=PUb0eEovKdo
скролов всяких пепреходов цифр из одной в другую и тд.
Понятно что попса, но эффетно же.

Можно было бы, НО память ардуины уже кончилась (

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

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

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

Реально показывать не более 4-ёх показателей, каждый держать на экране по 2 секунды. Приходится ждать того что нужно целых 6 секунд, и даже это уже раздражает.

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

Пн авг 05, 2019 07:27:03

https://youtu.be/FLdTEooRJM4
И корпус сделать такой белый эллллиптический (как обмылок) совершенно без намёка на прямоугольник и спереди и в разрезе.
и экран чтобы белый на белом под одно, а внутри световые перегородки.
Чтобы цифры появлялись как нарисованые светом.
И подставка тоже в виде ножки как у рюмки тоже эллиптическая и три кнопки на ней тоже эллиптические.
А ещё в такой эллиптический корпус можно поместить плосконький динамик.
И сделать бой в стиле жан мишель жарр или вот примерно так https://www.youtube.com/watch?v=sK0Po5LqS5E

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

Пн авг 05, 2019 18:22:21

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

Часики в обоих вариантах и b612 & Mishany
Теперь умеют работать с датчиком BME280 и соответственно могут показывать влажность.
Плюс добавлен показ температуры, снимаемой с датчиков BME и BMP
Вложения
SergeyK011.hex
(87.43 KiB) Скачиваний: 386
Последний раз редактировалось b612 Вт авг 06, 2019 12:19:12, всего редактировалось 1 раз.

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

Пн авг 05, 2019 18:48:36

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

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

Ср авг 07, 2019 19:20:41

Видео обновленной прошивки:
https://youtu.be/hbXFqX9gVus

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

Вс авг 11, 2019 10:06:02

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