Привет мучителю микросхем! Не могу разобраться с настройками яркости с 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 метода измерения освещенности. Как это
подскажите
И с 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