Переход с УНО на ESP32

Не :slight_smile:
Такой модуль я так и не запустил и штырьки - пайка на обороте.

Когда-то для малинок часовые модули продавались - совсем мелкие.

Они и сейчас продаются, но на двусторонний скотч их не приклеить ))

ds3231 for pi

неудобный модуль часов, большой и нет выхода типа будильника.
Ну и спешат у меня уже на 9 минут, где-то месяца полтора-два.

PCF8563 выглядит красиво, и небольшой. Имхо самый удобный.
Правда программил я только ds1302.

какая-то была у него заморочка, типа делаешь всё как надо а оно не играет )) Вот это у меня работает, если что.

#include <Arduino.h>
#include <Ds1302.h>


// DS1302 RTC instance
Ds1302 rtc(7,8,A3);//(PIN_ENA, PIN_CLK, PIN_DAT);

void WatchInit()
{
    rtc.init();
}

  boolean KPlus;
  int Pos;


void ShowClock()
{
  //------------------------------
  // WatchInit();

// SetWatch();

  oled.init(); oled.clear();  oled.setScale(1); oled.home();         

  for(;;)
  {
    oled.home();        // курсор в 0,0 
    PrnWatch();

    if(0==digitalRead(Key4) ) {Pos++;delay(200);} if(Pos>5)Pos=0;
    if(0==digitalRead(Key1) ) {KPlus=1; SetTime(); }
    if(0==digitalRead(Key2) ) {KPlus=0; SetTime(); }
    // delay(100);
    if(0==digitalRead(Key3) ){oled.clear();oled.home();oled.print("Время:");return;}
  }
//____________________________
}




void PrnWatch()
{
// get the current time
  // WatchInit();
  Ds1302::DateTime now;  rtc.getDateTime(&now);

  oled.setScale(2);
   if(0==Pos)oled.invertText(1);  oled.print("20"); oled.print(now.year);                                         oled.invertText(0);   // 00-99
  oled.print('-');  if(1==Pos)oled.invertText(1);  if (now.month < 10) oled.print('0');  oled.print(now.month);   oled.invertText(0);   // 01-12
  oled.print('-');  if(2==Pos)oled.invertText(1);  if (now.day < 10)   oled.print('0');  oled.print(now.day);     oled.invertText(0);     // 01-31
  oled.print(' ');
  // oled.print(WeekDays[now.dow - 1]); // 1-7
  oled.print("\n\r");if(3==Pos)oled.invertText(1);  if (now.hour < 10)    oled.print('0');  oled.print(now.hour); oled.invertText(0);     // 00-23
  oled.print(':');   if(4==Pos)oled.invertText(1);  if (now.minute < 10)  oled.print('0');  oled.print(now.minute); oled.invertText(0);  // 00-59                      oled.invertText(0); 
  oled.print(':');   if(5==Pos)oled.invertText(1);  if (now.second < 10)  oled.print('0');  oled.print(now.second); oled.invertText(0); // 00-59
  oled.println();
}




void SetTime()
{
  Ds1302::DateTime now; rtc.getDateTime(&now);

  switch(Pos)
  {
    case 0: if(KPlus) now.year++;else now.year--; break;
    case 1: if(KPlus) now.month++;else now.month--; break;
    case 2: if(KPlus) now.day++;else now.day--; break;
    case 3: if(KPlus) now.hour++;else now.hour--; break;
    case 4: if(KPlus) now.minute++;else now.minute--; break;
    case 5: if(KPlus) now.second++;else now.second=0; break;
  }

    // rtc.init();
    rtc.halt();
    // test if clock is halted and set a date-time (see example 2) to start it
      if (rtc.isHalted())
      {
// oled.println("RTC is halted. Setting time...");
// delay(1000);
        Ds1302::DateTime dt = {
        .year =  now.year,
        .month = now.month, //Ds1302::MONTH_OCT,
        .day = now.day,
        .hour = now.hour,
        .minute = now.minute,
        .second = now.second,
        .dow = Ds1302::DOW_TUE
        };
        rtc.setDateTime(&dt);
        rtc.start();
      }

delay(200);
}

Красиво. Так и не добрался до своей этой бумаги, думаю на ней внутренний типа метео на батарейке сделать. С измерением влажности мокрым-сухим термометрами с вентилятором.

Лилик, когда ссылку запостил, я тоже купил эту “бумагу”, теперь и не знаю куда ее применить))
Как бумагу не предлагать)(

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

4 лайка

Хорошая идея. Мне бы только темп. улицы хватило, на окне он всё равно лабуду показывает, холодно от окна.

Идеально было бы заюзать радиодатчики термометра, в Озоне брал за 1200руп, 2а радиодатчика на батарейках и блок. Отличная штука! повесил по разные стороны дома и меньшая температура практически точно с “официальной” температурой совпадает.
Но на блоке плохо видно, узкое поле зрения.

Вот и идея: заюзать сигналы от радиодатчиков и вывести меньшую температуру на весь бумажный диплей.



Да, по идее должно подойти под скотч, слегка сточить пайку выводов конденсатора и кварца.

используй такой и точить ничего не надо

или такой
https://aliexpress.ru/item/4001146157167.html?spm=a2g2w.detail.pers_rcmd.29.5c2849d6rHRmyg&mixer_rcmd_bucket_id=aerabtestalgoRecommendAbV2_controlRu3&pdp_trigger_item_id=0_1005006854397626&ru_algo_pv_id=0aeac2-476f2e-bd2a91-ae0d09-1729324800&scenario=pcDetailBottomMoreOtherSeller&sku_id=10000014889955741&traffic_source=recommendation&type_rcmd=core

1 лайк

Если не заморачиваться на цвет, то и этот сойдет (в строймагазине тоже есть):

Именно такой и купил за 100 р в строительном.

Если добавить модуль часов, можно графическую историю написать с чтением на год :slight_smile:

Прошу пардону, если уже спрашивали - всю тему не читал.

Фотки туда как загружаются?

практика показала, что проще не заклеивать торчащие места :slight_smile:

Вот до этого я не додумался :slight_smile:

С точки зрения ПО моя версия фоторамки - детский лепет :slight_smile:
Все фотки хранятся в памяти микросхемы модуля (покупал на 16 Мб, но продавец явно прислал на 4). Одна фотка - 30 Кб. Альбом впихнуть можно, но проблема с навигацией (одна кнопка - включение/выключение питания), т.к. смена фотки около 5-6 сек. плюс пауза 2-3 сек. на выбор и весь перебор больше 10 картинок утомителен уже.

А как одни фотки на другие поменять, например?

Альбом поменять на другой - перезагрузкой скетча. А перебор в альбоме автоматический, после нажатия и удержания кнопки ждём появление на экране нужного изображения и отпускаем кнопку.