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

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

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

Сообщение Serzh2000 »

Скажите пожалуйста, что Вы использовали на фальшпанель? Какой светофильтр или тонировку?
из коробки от CD дисков вырезал и затонировал авто тонировкой (у ребят из автосервиса взял обрезки).

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

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

Сообщение SeGAD »

Хм, у меня много пьезоизлучателей разных видов, все пикают очень тихо.

Добавлено after 36 seconds:
[uquote="Serzh2000",url="/forum/viewtopic.php?p=4334979#p4334979"]
Скажите пожалуйста, что Вы использовали на фальшпанель? Какой светофильтр или тонировку?
из коробки от CD дисков вырезал и затонировал авто тонировкой (у ребят из автосервиса взял обрезки).

"Детская игровая кухня своими руками" супер!!! :beer:[/uquote]

Ооо, спасибо за отзыв и за совет =)

Добавлено after 13 minutes 26 seconds:
Всё, нашёл регулировку громкости

int dutyH = 500; // 10 to silent, 500-regular в файле audio.h

Подключил без резистора, так как с ним появляется дребезжание, без него чисто и громко как надо.

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

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

Сообщение Serzh2000 »

И было бы неплохо реализовать программное включение-отключение почасового звука в настройках.

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

   //=============== Бить куранты (chime) каждый час=======================
   //  if(hour>=CHIME_START&&hour<CHIME_END&&minute==0&&second==0&&secFr==0) playChime(); showString(32, " ghbdtn Dfy.if ");
уберите // и будет каждый час ... :)))


если в настройках вкл/выкл
добавить переменную скажем "kuku"

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

//------------------------------------------------ Инициализируем переменные-------------------------------------------------------------------------------
OneWire oneWire(ONE_WIRE_PIN);
bool alarme=false;                                 // флаг включенного будильника Нужен для отображения разного стиля точек на бигклоке)))
int dx=0;                                          // начальные координаты на светодиодной матрице
int dy=0;                                          // --//--
int alarmCnt=0;                                    // 0 - не воспроизводим мелодию звонка. если больше "0" - то это количество проиграшей мелодии
int h1,h0,m1,m0,s1,s0,secFr,lastSec=1,lastMin=0;   // h1 - десятки часов, h0 - еденицы часов и так далее, secFr- минутный цикл,
int d1, d0, mn1, mn0, y1, y0, dw, lastDay=-1;      // d1 - десятки дней, d0 - еденицы дней и так далее...
int lasth1, lasth0 ,lastm1, lastm0 ,lasts1 , lasts0 ; 
int mode, prevMode;                                // моде - режим вывода на экран, превмоде - предыдущий режим
int stx=1, sty=1;                                  // напавление смещения для скачущего дисплея
int st=1;                                          // направление смещения экранов -1 или +1
int disp, prevDisp;                                // номер текущего дисплея и предыдущего дисплея

int kuku                          // для пиканья каждый час

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

void eeprom () {
  if (EEPROM.read(INIT_ADDR) != INIT_KEY) {              // первый запуск
    EEPROM.write(INIT_ADDR, INIT_KEY);                   // записали ключ
    int brightSet = 16;                                  // яркость экрана 0-15, 16-автоматическая рег., 17-день/ночь
    int mode = 0;                                        // моде - режим вывода на экран
    int kuku=0;                                          // кукушка каждый час =0 выключена
    EEPROM.update(0, brightSet);                         // записали по адресу 0
    EEPROM.update(1, mode);                              // записали по адресу 1
    EEPROM.update(2, kuku);                              // записали по адресу 2
  }
и написать if (kuku != 0){кукуем каждый час} //сзесь сами думайте пикнуть раз или три раза или музычку сыграть
а в настройках добавит еще пункт к примеру так

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

switch(setMode){                                                      // Выводим на экран надпись в соответствии с режимом
        case 1: showString(1, "Dhtvz"); break;                            // Печатаем "Время";
        case 2: showString(1, "Lfnf"); break;                             // Печатаем "Дата";
        case 3: showString(0, "Ytltkz"); break;                           // Печатаем "Неделя";
        case 4: showString(0, "<elbkmybr"); break;                        // Печатаем "Будильник";
        case 5: showString(0, "Zhrjcnm"); break;                          // Печатаем "Яркость";
        case 6: showString(0, "rereirf"); break;                          // Печатаем "кукушка";


добавляем

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

if(key == 3) {                                                        //
      playSound(AUDIO_PIN,1500,60);                                       //
      switch(setMode){                                                    //
        case 1: setUpTime(); break;                                       //
        case 2: setUpData(); break;                                       //
        case 3: setUpDoW(); break;                                        //
        case 4: setUpAlarm(); break;                                      //
        case 5:brightDisp() ; break;                                     //
        default:setkuku() ; break;
      }  
и собственно описываем что делать

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

void setkuku(){                                                        //
  int i;                                                                  //
  now=millis();                                                           // сбарсываем переменную счета таймера в (миллис)
  while(millis()-now<timerMenu){                                          // запускаем таймер
    clrAll();                                                             //
    i=((millis()-now)/350%2);                                             // создаем переменную которая меняет значение с периодом 3 Гц.
    klav();                                                               // Опрашиваем клавиши 0- не нажаты, 1-3 клавиши нажаты
    if(key==1){                                                           //
      playExit(); return;                                                 //выход
    }                                                                     //
    if(key==2){                                                           // вкл куку
      kuku=1;                                       //
    }                                                                     //
    if(key==3){                                                           // выкл куку
     kuku=0;                                       //
    }                                                                     //
       if(kuku==0){                                                    //
      showString(0, "dsrk re");                                              // выводим "выкл ку"
    }  
       if(kuku > 0){                                                    //
      showString(0, "drk re");                                              // выводим "вкл ку"
      
    EEPROM.update(3, kuku);
    refreshAll();                                                         //
  }   
  playExit();                                                             //
}    

как-то так может че напутал :wink:
Последний раз редактировалось Serzh2000 Вс дек 11, 2022 19:48:50, всего редактировалось 3 раза.
Аватара пользователя
SeGAD
Открыл глаза
Сообщения: 70
Зарегистрирован: Ср дек 07, 2022 21:01:11

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

Сообщение SeGAD »

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

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

Сообщение Serzh2000 »

Ммм, а не подскажите, где примерно можно смотреть скорость анимации на больших часах, чтобы цифры немного быстрее скользили?
если я правильно понял вы про эту скорость

if (m0 != lastm0)
for (int shag = 0; shag < 10; shag++ ) { // для того чтобы отрисовать цифру состаящую из 12 точек (или шагов как правильно?)
showDigit( m0 * 10 + shag, 25, dig6x8m); // dig6x8m - указатель на масив данных (смотрим вкладку "fonts.h")
showDigit(lastm1, 18, dig6x8);
showDigit(lasth0, 8, dig6x8);
if (lasth1 > 0) showDigit(lasth1, lasth1 == 2 ? 1 : 2, dig6x8);
refreshAll();
delay(90); // скорость смены цифры
}
Аватара пользователя
SeGAD
Открыл глаза
Сообщения: 70
Зарегистрирован: Ср дек 07, 2022 21:01:11

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

Сообщение SeGAD »

[uquote="Serzh2000",url="/forum/viewtopic.php?p=4335118#p4335118"]
Ммм, а не подскажите, где примерно можно смотреть скорость анимации на больших часах, чтобы цифры немного быстрее скользили?
если я правильно понял вы про эту скорость

if (m0 != lastm0)
for (int shag = 0; shag < 10; shag++ ) { // для того чтобы отрисовать цифру состаящую из 12 точек (или шагов как правильно?)
showDigit( m0 * 10 + shag, 25, dig6x8m); // dig6x8m - указатель на масив данных (смотрим вкладку "fonts.h")
showDigit(lastm1, 18, dig6x8);
showDigit(lasth0, 8, dig6x8);
if (lasth1 > 0) showDigit(lasth1, lasth1 == 2 ? 1 : 2, dig6x8);
refreshAll();
delay(90); // скорость смены цифры
}
[/uquote]

О, ДА! Это именно то, стало намного комфортней. СПАСИБО!

Добавлено after 2 minutes 22 seconds:
По поводу вкл-откл почасового сигнала, вроде все работает, только пока не могу добиться постоянного свечения в настройках ВКЛ и ВЫКЛ, они появляются и пропадают во время нажатия кнопок

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

void setkuku(){                                                        //
  int i;                                                                  //
  now=millis();                                                           // сбарсываем переменную счета таймера в (миллис)
  while(millis()-now<timerMenu){                                          // запускаем таймер
    clrAll();                                                             //
    i=((millis()-now)/350%2);                                             // создаем переменную которая меняет значение с периодом 3 Гц.
    klav();                                                               // Опрашиваем клавиши 0- не нажаты, 1-3 клавиши нажаты
    if(key==1){                                                           //
      playExit(); return;                                                 //выход
    }                                                                     //
    if(key==2){                                                           // 
      kuku=1;                                                              //
      showString(8, "Drk");                                     // ВКЛ
    }                                                                     //
    if(key==3){                                                           // 
     kuku=0;                                       //
     showString(8, "Dsrk");                                   // ВЫКЛ
    }                                                                     //
                                                                     //
    EEPROM.update(3, kuku);
    refreshAll();                                                         //
  }   
  playExit();                                                             //
}
Аватара пользователя
Serzh2000
Опытный кот
Сообщения: 867
Зарегистрирован: Пт фев 27, 2015 12:00:53
Откуда: Рязанская область

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

Сообщение Serzh2000 »

попробуй refreshAll();(очистка экрана) вынести за действие счетчика нахождения в меню

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

   EEPROM.update(3, kuku);                                                          //
  }   
  playExit(); 
  refreshAll();                                                            //
}
Аватара пользователя
SeGAD
Открыл глаза
Сообщения: 70
Зарегистрирован: Ср дек 07, 2022 21:01:11

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

Сообщение SeGAD »

[uquote="Serzh2000",url="/forum/viewtopic.php?p=4335164#p4335164"]попробуй refreshAll();(очистка экрана) вынести за действие счетчика нахождения в меню

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

   EEPROM.update(3, kuku);                                                          //
  }   
  playExit(); 
  refreshAll();                                                            //
}
[/uquote]

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

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

Сообщение Serzh2000 »

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

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

Сообщение SeGAD »

[uquote="Serzh2000",url="/forum/viewtopic.php?p=4335519#p4335519"]
Увы, нет, уже пробовал
получилось?[/uquote]
нет, пока никак
Аватара пользователя
Serzh2000
Опытный кот
Сообщения: 867
Зарегистрирован: Пт фев 27, 2015 12:00:53
Откуда: Рязанская область

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

Сообщение Serzh2000 »

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

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

Сообщение SeGAD »

Вот скетч, спасибо
Вложения
simple-clock.zip
(29.41 КБ) 105 скачиваний
Аватара пользователя
Serzh2000
Опытный кот
Сообщения: 867
Зарегистрирован: Пт фев 27, 2015 12:00:53
Откуда: Рязанская область

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

Сообщение Serzh2000 »

попробуй

Добавлено after 6 minutes 57 seconds:

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

 //=============== Корректировка времени RTC модуля - в полночь на  -5 secs============
  if(hour==23&&minute==0&&second==0&&lastDay!=day){                     // Если наступил новый день, то
    lastDay=day;                                                        // сбрасываем переменную ластдей что бы больше проверка в этот день не выполнялась
    second=1;                                                           // корректируем секунды на +1 секунд 
    setRTCTime();                                                       // записываем новое время в RTC модуль
  }
у вас в скетче стоит коррекция прибавлять каждый день секунду. это вам надо? у вас часы отстают?
Вложения
simple-clock.zip
(50.55 КБ) 100 скачиваний
Аватара пользователя
SeGAD
Открыл глаза
Сообщения: 70
Зарегистрирован: Ср дек 07, 2022 21:01:11

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

Сообщение SeGAD »

[uquote="Serzh2000",url="/forum/viewtopic.php?p=4335672#p4335672"]попробуй

Добавлено after 6 minutes 57 seconds:

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

 //=============== Корректировка времени RTC модуля - в полночь на  -5 secs============
  if(hour==23&&minute==0&&second==0&&lastDay!=day){                     // Если наступил новый день, то
    lastDay=day;                                                        // сбрасываем переменную ластдей что бы больше проверка в этот день не выполнялась
    second=1;                                                           // корректируем секунды на +1 секунд 
    setRTCTime();                                                       // записываем новое время в RTC модуль
  }
у вас в скетче стоит коррекция прибавлять каждый день секунду. это вам надо? у вас часы отстают?[/uquote]

Пока не знаю, включил чтобы понаблюдать за поведением =)

Сейчас попробую, спасибо =)

Добавлено after 3 minutes 54 seconds:
Попробовал, вроде отлично работает, за исключением одного момента, когда вхожу в Установки -> Сигнал, то табло пустое, но при нажатии кнопок Вкл и Выкл начинают работать как надо, надо загрузить настройку из eeprom и высветить ее, если я правильно понимаю

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

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

Сообщение Serzh2000 »

надо загрузить настройку из eeprom и высветить ее, если я правильно понимаю

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

 // --------------------------- загрузить данные из eeprom ----------------------------------

     brightSet = EEPROM.read(0);      // прочитали яркость
     mode = EEPROM.read(1);           // прочитали режим
    kuku = EEPROM.read(2);           // прочитали куку
 }      

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

   if(brightSet==17){                                                    //
      showString(12, "L|Y");                                              // выводим "Д/Н"
      sendCmdAll(CMD_INTENSITY, 10);                                      //
    }                                                                     //
    EEPROM.update(0, brightSet);
    refreshAll();                                                         //
  }   
  playExit();  
нет не надо это я ошибся в одну и туже ячейку записал и куку и яркость
исправил.
Вложения
simple-clock.zip
(70.89 КБ) 120 скачиваний
Аватара пользователя
SeGAD
Открыл глаза
Сообщения: 70
Зарегистрирован: Ср дек 07, 2022 21:01:11

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

Сообщение SeGAD »

Наистрашнейшая благодарность =)))

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

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

Сообщение SeGAD »

Ничего не понимаю, перестал работать почасовой сигнал, вроде всё проверил, не хочет.

Вот так, без условия работает:

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

      //if (kuku != 0){  
        if(hour>=CHIME_START&&hour<CHIME_END&&minute==0&&second==0&&secFr==0) playChime();
      //} 
Аватара пользователя
Serzh2000
Опытный кот
Сообщения: 867
Зарегистрирован: Пт фев 27, 2015 12:00:53
Откуда: Рязанская область

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

Сообщение Serzh2000 »

Serial.print(kuku);
вставьте эти строки в скетч и посмотрите в мониторе порта чему равно куку, может нулю потому и нет сигнала.
Аватара пользователя
SeGAD
Открыл глаза
Сообщения: 70
Зарегистрирован: Ср дек 07, 2022 21:01:11

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

Сообщение SeGAD »

[uquote="Serzh2000",url="/forum/viewtopic.php?p=4336342#p4336342"]Serial.print(kuku);
вставьте эти строки в скетч и посмотрите в мониторе порта чему равно куку, может нулю потому и нет сигнала.[/uquote]

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

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

Сообщение Serzh2000 »

??? странно
Ответить

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