часы ардуино ds3231 max7219 ds18b20

Обсуждаем электронику на колесах. Нужен увлажнитель воздуха для Камаза? Вам сюда.
Аватара пользователя
SeGAD
Открыл глаза
Сообщения: 70
Зарегистрирован: Ср дек 07, 2022 21:01:11

Re: часы ардуино ds3231 max7219 ds18b20

Сообщение SeGAD »

Не, ничего нового, просто работа над ошибками. После моего вмешательства анимация смены даты и времени пропала вообще, сейчас я это исправил и дата со временем теперь меняется в виде бегущей строки.
Реклама
SERGSVG
Родился
Сообщения: 1
Зарегистрирован: Чт май 09, 2024 15:34:14

Re: часы ардуино ds3231 max7219 ds18b20

Сообщение SERGSVG »

Пожалуй самый интересный проект часов , анимация сделана потрясно ! Пару раз уже повторил этот проект, но сейчас возникла надобность в датчике температуры и влажности BME280. К большому сожалению знание программирования отрицательное )) Может кто уже прикручивал этот датчик ? Авторам спасибо за работу !
Реклама
Аватара пользователя
Serzh2000
Опытный кот
Сообщения: 867
Зарегистрирован: Пт фев 27, 2015 12:00:53
Откуда: Рязанская область

Re: часы ардуино ds3231 max7219 ds18b20

Сообщение Serzh2000 »

исправлена ошибка
Вложения
chasy_matrica_temp_otricatelnaay_s_kuku_29.02.24.rar
(183.91 КБ) 205 скачиваний
Аватара пользователя
SeGAD
Открыл глаза
Сообщения: 70
Зарегистрирован: Ср дек 07, 2022 21:01:11

Re: часы ардуино ds3231 max7219 ds18b20

Сообщение SeGAD »

Serzh2000, можно узнать что за ошибка была? =)
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
Serzh2000
Опытный кот
Сообщения: 867
Зарегистрирован: Пт фев 27, 2015 12:00:53
Откуда: Рязанская область

Re: часы ардуино ds3231 max7219 ds18b20

Сообщение Serzh2000 »

в меню яркость не выбиралась
Реклама
Аватара пользователя
SeGAD
Открыл глаза
Сообщения: 70
Зарегистрирован: Ср дек 07, 2022 21:01:11

Re: часы ардуино ds3231 max7219 ds18b20

Сообщение SeGAD »

Понял. Я тоже внес некоторые изменения в свою версию. Убрал режим День-Ночь. За всё время использования автоматический режим более чем себя оправдал. Вчера поменял обычный фоторезистор на модуль TZT XH-M131. Провожу испытания. Когда буду удовлетворен результатами выложу исходники =)
Реклама
Аватара пользователя
Serzh2000
Опытный кот
Сообщения: 867
Зарегистрирован: Пт фев 27, 2015 12:00:53
Откуда: Рязанская область

Re: часы ардуино ds3231 max7219 ds18b20

Сообщение Serzh2000 »

Провожу испытания. Когда буду удовлетворен результатами выложу исходники =)
очень интересно посмотреть на код. :shock:
Убрал режим День-Ночь. За всё время использования автоматический режим более чем себя оправдал.

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

//=== Установка яркости по датчику освещенности  ===========

void BrightnessCheck() {

  if (setups[4]==0) {                         // если включена адаптивная яркость
  if (millis() - bright_timer > 100) {       // каждые 100 мс
     bright_timer = millis();                // сбросить таймер
     new_bright = map(analogRead(LIGHT_PIN), 0, 1020, LIGHT_MAX, LIGHT_MIN );     // когда темно тускло
     new_bright = constrain(new_bright, LIGHT_MIN, LIGHT_MAX);
     new_bright_f = new_bright_f * coef + new_bright * (1 - coef);
      LEDS.setBrightness(new_bright_f);                                            // установить новую яркость
     }
  }else {new_bright_f = setups[4] * 10;                                          // установить яркость ручную.
  LEDS.setBrightness(new_bright_f);}
}
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
очень хорошо отрабатывает яркость по фоторезистору!!!
почитайте код может что понравиться...
https://community.alexgyver.ru/threads/ ... 33/page-70
Аватара пользователя
SeGAD
Открыл глаза
Сообщения: 70
Зарегистрирован: Ср дек 07, 2022 21:01:11

Re: часы ардуино ds3231 max7219 ds18b20

Сообщение SeGAD »

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

Re: часы ардуино ds3231 max7219 ds18b20

Сообщение Serzh2000 »

а эту цифру менял? 1020 на 1023
new_bright = map(analogRead(LIGHT_PIN), 0, 1020, LIGHT_MAX, LIGHT_MIN ); // когда темно тускло
Аватара пользователя
SeGAD
Открыл глаза
Сообщения: 70
Зарегистрирован: Ср дек 07, 2022 21:01:11

Re: часы ардуино ds3231 max7219 ds18b20

Сообщение SeGAD »

[uquote="Serzh2000",url="/forum/viewtopic.php?p=4735143#p4735143"]а эту цифру менял? 1020 на 1023
new_bright = map(analogRead(LIGHT_PIN), 0, 1020, LIGHT_MAX, LIGHT_MIN ); // когда темно тускло[/uquote]

Нет, не менял, в обсуждениях не увидел что надо менять эту цифру, либо не заметил, попробую, спасибо =)
Аватара пользователя
SeGAD
Открыл глаза
Сообщения: 70
Зарегистрирован: Ср дек 07, 2022 21:01:11

Re: часы ардуино ds3231 max7219 ds18b20

Сообщение SeGAD »

В общем получается так: если свет яркий и сразу затемнить, то яркость понижается до минимума. Если затемнить на половину, потом до минимума, то яркость почти не опускается до минимума, а остается на том уровне, который был при полумраке.
kym13
Родился
Сообщения: 1
Зарегистрирован: Пн авг 17, 2015 17:29:26

Re: часы ардуино ds3231 max7219 ds18b20

Сообщение kym13 »

[uquote="Serzh2000",url="/forum/viewtopic.php?p=4735143#p4735143"]а эту цифру менял? 1020 на 1023
new_bright = map(analogRead(LIGHT_PIN), 0, 1020, LIGHT_MAX, LIGHT_MIN ); // когда темно тускло[/uquote]
Цифру 1020 я ставил когда код под себя правил, там откуда вы взяли кусок кода часы собраны на адресных светодиодах WS2812 и при цифре 1023 происходило мерцание диодов в темноте. Фразу "Когда темно тускло" я написал в комментарии.
Аватара пользователя
Serzh2000
Опытный кот
Сообщения: 867
Зарегистрирован: Пт фев 27, 2015 12:00:53
Откуда: Рязанская область

Re: часы ардуино ds3231 max7219 ds18b20

Сообщение Serzh2000 »

BRIGHT = BRIGHT * coef + new_bright * (1 - coef);// я не понял
как не считал, вот не получается яркость на максимум вывести
Изображение
на минимуме все в порядке
Изображение

https://rutube.ru/shorts/103bbbdebc49bc ... f4d5308022

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

     if (millis() - bright_timer > 100) {//Проверка и изменение яркости каждые 100 мс
     bright_timer = millis();            // сбросить таймер
     int ledLevel = analogRead(BRIGHT_PIN);
     new_bright = map(ledLevel, 200, 950, LIGHT_MAX, LIGHT_MIN );// 200- смотрим на ledLevel при максимальной яркости.  950- смотрим на ledLevel при минимальной яркости
     new_bright = constrain(new_bright, LIGHT_MIN, LIGHT_MAX);
     BRIGHT = BRIGHT * coef + new_bright * (1 - coef);// я не понял 
     //if (BRIGHT > new_bright)BRIGHT=BRIGHT-1;//каждые 300 мс уменьшаем яркость на 1
     //if (BRIGHT < new_bright)BRIGHT=BRIGHT+1;//каждые 300 мс увеличиваем яркость на 1
     sendCmdAll(CMD_INTENSITY, BRIGHT);      // посылаем команду на изменение яркости
изменения стр-ка 92-98 и стр-ка 308-325
Вложения
chasy_matrica_temp_otricatelnaay_s_kuku__BRIGHT_28.09.25.rar
(184.67 КБ) 156 скачиваний
Аватара пользователя
Serzh2000
Опытный кот
Сообщения: 867
Зарегистрирован: Пт фев 27, 2015 12:00:53
Откуда: Рязанская область

Re: часы ардуино ds3231 max7219 ds18b20

Сообщение Serzh2000 »

вот я ... :facepalm:

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

int  BRIGHT=10;                 // яркость
конечно же

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

float  BRIGHT=10;                 // яркость
и все отлично!!! :beer:

Изображение Изображение
Вложения
chasy_matrica_temp_otricatelnaay_s_kuku__BRIGHT_29.09.25.rar
(185.02 КБ) 151 скачивание
Shehov62
Родился
Сообщения: 13
Зарегистрирован: Чт окт 23, 2025 11:06:30
Откуда: Рязанская область

Re: часы ардуино ds3231 max7219 ds18b20

Сообщение Shehov62 »

Всем доброго времени суток!
Отличный проект. Повторил его уже 3 раза, с матрицами разного цвета ( красная, синяя и зелёная). Зелёный на мой взгляд лучший вариант, красная и синяя даже на минимуме очень яркая.
Анимация на высшем уровне!!
Изменил немного скетч под себя...
Так же изменил анимацию цифр в 5 и 6 режимах (режимов как и прежде 8, только начинаются не с 0, а с 1), теперь секунды (а также часы и минуты)при смене цифры прокручиваются сверху вниз, как в 1 ом режиме.
Но есть нюанс.. хотелось бы его решить..
При смене цифры если десятки часов больше 1, анимация происходит два раза подряд. То есть десяток часов пролистывается с 1 на 2, и сразу же ещё раз 2.
Вложения
Clock_matrica_new.rar
(216.95 КБ) 142 скачивания
Последний раз редактировалось Shehov62 Чт окт 23, 2025 16:59:28, всего редактировалось 2 раза.
Аватара пользователя
Serzh2000
Опытный кот
Сообщения: 867
Зарегистрирован: Пт фев 27, 2015 12:00:53
Откуда: Рязанская область

Re: часы ардуино ds3231 max7219 ds18b20

Сообщение Serzh2000 »

При смене цифры если десятки часов больше 1, анимация происходит два раза подряд. То есть десяток часов прописывается с 1 на 2, и сразу же ещё раз 2.
нужно видео посмотреть, так что-то не ясно.
Shehov62
Родился
Сообщения: 13
Зарегистрирован: Чт окт 23, 2025 11:06:30
Откуда: Рязанская область

Re: часы ардуино ds3231 max7219 ds18b20

Сообщение Shehov62 »

Видео чуть позже выложу. Ошибка как мне кажется, где то здесь... Обозначил знаками ???


//----------------------------------------------------------------------- ВЫВОД ПОЛНЫХ ЧАСОВ (5 и 6 режим)
void showClock(){ //

if (dots) setCol(10, 0x24); // двоеточие выводится когда dots отличен от "0"


if (s0 != lasts0){showDigit( s0 * 12 + shag, 28, dig3x7ss);} // s0 * 12 + q - номер строки в масиве dig3x7ss (смотрим вкладку "fonts.h")
else showDigit(s0, 28, dig3x7s); // s0 - номер строки в масиве dig3x7s (смотрим вкладку "fonts.h")

if (s1 != lasts1) showDigit( s1 * 12 + shag, 24, dig3x7ds); // dig3x7ds - указатель на масив данных (смотрим вкладку "fonts.h")
else showDigit(s1, 24, dig3x7s); // 24- позиция экрана с которой начинать печать

if (m0 != lastm0) showDigit( m0 * 12 + shag, 17, dig4x8chm); // dig4x8chm - указатель на масив данных (смотрим вкладку "fonts.h")
else showDigit(m0, 17, dig4x8); // dig4x8 - указатель на масив данных (смотрим вкладку "fonts.h")

if (m1 != lastm1) showDigit( m1 * 12 + shag, 12, dig4x8mm); // (m1 != lastm1)- проверяем изменилась цифра или нет
else showDigit(m1, 12, dig4x8);

if (h0 != lasth0) showDigit( h0 * 12 + shag, 5, dig4x8chm); // dig4x8chm - указатель на масив данных (смотрим вкладку "fonts.h")
else showDigit(h0, 5, dig4x8);

if (h1>0){

if (h1 != lasth1){
if(h1==1)showDigit( h1 * 12 + shag, 1, dig4x8chm); // ??? не смог разобраться почему если десятки часов больше еденицы, то при смене
if(h1==2)showDigit( h1 * 12 + shag, 0, dig4x8ch); // ??? цифры на следующий час происходит пролистывание цифры два раза
}

else showDigit(h1, h1 == 2 ? 0 : 1, dig4x8);
}
refreshAll(); // обновляем экран после каждой строки

unsigned long nov = millis();
if (nov - oldMillis >= 75) {
shag++;
oldMillis = nov;
}
if (shag >= 12) { shag=0; lasth1 = h1; lasth0 = h0; lastm1 = m1; lastm0 = m0; lasts1 = s1; lasts0 = s0;}
}

Добавлено after 3 minutes 6 seconds:
[uquote="Serzh2000",url="/forum/viewtopic.php?p=4757043#p4757043"]
При смене цифры если десятки часов больше 1, анимация происходит два раза подряд. То есть десяток часов прописывается с 1 на 2, и сразу же ещё раз 2.
нужно видео посмотреть, так что-то не ясно.[/uquote]
Немного ошибся...
С 0 часов до 7 происходит нормальная анимация. А вот при смене 6 часов на 7 происходит двойная анимация цифры...
и все последующие часы так же..
не получается видеофайл скинуть...
https://disk.yandex.ru/i/Ovdp1ZBbvICulw
https://disk.yandex.ru/i/fcxPxkTvNkRKbg
https://disk.yandex.ru/i/-TwgPXjv7KrDTw
Аватара пользователя
Serzh2000
Опытный кот
Сообщения: 867
Зарегистрирован: Пт фев 27, 2015 12:00:53
Откуда: Рязанская область

Re: часы ардуино ds3231 max7219 ds18b20

Сообщение Serzh2000 »

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

if (h1>0){

if (h1 != lasth1){
if(h1==1)showDigit( h1 * 12 + shag, 1, dig4x8chch); // dig4x8chch
if(h1==2)showDigit( h1 * 12 + shag, 0, dig4x8chch); // dig4x8chch
}

else showDigit(h1, h1 == 2 ? 0 : 1, dig4x8);
}
попробуй так.
Shehov62
Родился
Сообщения: 13
Зарегистрирован: Чт окт 23, 2025 11:06:30
Откуда: Рязанская область

Re: часы ардуино ds3231 max7219 ds18b20

Сообщение Shehov62 »

массив dig4x8chch там всего три цифры от 0 до 2.
сейчас гляну что получится...

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

Re: часы ардуино ds3231 max7219 ds18b20

Сообщение Serzh2000 »

а может он просто не успевает сделать это

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

if (shag >= 12) { shag=0; lasth1 = h1; lasth0 = h0; lastm1 = m1; lastm0 = m0; lasts1 = s1; lasts0 = s0;}

попробуй побыстрее отрисовывать цыфры

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

if (nov - oldMillis >= 75) {
скажем так

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

if (nov - oldMillis >= 55) {
Ответить

Вернуться в «АвтоМотоВело»