OLED часы (термометр) на arduino и DS3231
OLED часы (термометр) на arduino и DS3231

В этой статье расскажу как собрать домашние часы и термометр (все в одном) на платформе Arduino c отображением времени (часы, день, неделя, месяц и год) и температуры. В качестве дисплея используем OLED матрицу (о данной матрице говорил в предыдущей статье), данные о температуре и времени считываем с часов реального времени RCT DS3231.

OLED часы (термометр) на arduino и DS3231

Необходимые детали:
► Arduino UNO R3 x 1 шт.
► OLED-дисплей 0.96, 128х64 x 1 шт.
► Провод DuPont, 2,54 мм, 20 см, F-M (Female — Male) x 1 шт.
► Кабель USB 2.0 A-B x 1 шт.
► Часы реального времени на DS3231 x 1 шт.
► Макетная плата MB-102 (Breadboard) x 1 шт.

Подключение:
Для вывода времени и температуры на OLED дисплей с модуля RCT DS3231, будем использовать плату Arduino UNO. Сразу оговорюсь, что данные о температуры обновляются примерно раз в минуты, так что не ждите быстрой реакции на изменении температуры. Теперь, собираем схему, которая показана ниже, для удобства дополнительно нарисовал таблицу подключения.
Так же, на модуль DS3231 уже предварительно настроено время (настройка времени на DS3231).

OLED часы (термометр) на arduino и DS3231

Таблица подключение

OLED часы (термометр) на arduino и DS3231

В примере используется две дополнительных библиотеки DS3231 и OLED_I2C, необходимо скачать их и установить, без них скетч не заработает. Далее, запускаем среду разработки IDE и копируем скетч (для удобства, добавлю файл для скачивания), если все правильно сделали, на OLED дисплее отобразится время.

 Скачать скетч

Описание программы:
Немного расскажу о самом скетче, он разделен на два цикла «clock» и «temp», выбор цикла осуществляется с помощью переменной «x». При первом запуске, в переменной «x» находится число «0» с помощью оператора «if» выполняется ее сравнение, если значение меньше «10», выполняется цикл времени «clock», как только «x» становить больше «10», выполняется цел «temp». Как только прошел цикл «temp» в переменную «x» записываем «0» заново повторяется.

Просто говорят, контроллер выполняет цикл «clock» десять раз, а цикл «temp» один Для каждой команды, добавлено описание и дополнительно объяснять не вижу смысла, будет время опишу добавление русского языка.

Ссылки
  Библиотека DS3231
  Библиотека OLED_I2C

Купить на Aliexpress
  Контроллер Arduino UNO R3 на CH340G
  Контроллер Arduino UNO R3 на Atmega16U2
  Провода DuPont, 2,54 мм, 20 см
  Часы реального времени RTC DS3231
  OLED-дисплей 0.96,128х64, белый, DC 3.3-5B, SPI, IIC

Купить в Самаре и области
  Контроллер Arduino UNO R3 на CH340G
  Контроллер Arduino UNO R3 на Atmega16U2
  Провода DuPont, 2,54 мм, 20 см
  Часы реального времени RTC DS3231
 OLED-дисплей 0.96,128х64, 3.3-5B, SPI, IIC, белый

17 комментариев для “OLED часы (термометр) на arduino и DS3231”
  1. здравствуйте. вопрос такой, можно ли вместо дисплея 0.96 использовать дисплей 0.91? и вместо DS3231 использовать DS1302?

    1. Добрый день, дисплей можно заменить, только придется поправить скетч так-как разрешение другое. По поводу DS1302, не подскажу, так как не работал с ними.

      1. Исправьте ошибку, глаза режет. У дисплея есть характеристика РАЗРЕШЕНИЕ. Понимаю что многие путают, однако для специалиста это недопустимо.

  2. Добрый день После загрузки скетча сразу не отображает день недели, отображать начал после нуля часов но не правильно , подскажите в чем может быть причина?

    1. Есть подозрение, что день недели надо вносить в чип при установке времени — он не умеет вычислять его автоматически.

  3. Здравствуйте Вопрос: можно ли заменить температурный датчик на датчик определения веса?

    1. Здравствуйте, да кончено можно. что за датчик определения веса используете?

  4. Здравствуйте.
    почему-то Ваш скетч не проходит верификацию
    строка DS3231 rtc(SDA, SCL); останавливается на этой строчке.
    no matching function for call to ‘DS3231::DS3231(const uint8_t&, const uint8_t&)’
    Помогите пожалуйста. Заранее спасибо.

    1. Здравствуйте,
      Библиотеку DS3231 использовали со статьи? У меня при проверки ошибки не возникает.

  5. Здраствуйте, сделал все как на схеме(ПРЯМ ТОЧ В ТОЧ, НИЧЕГО НЕ МЕНЯЛ И НЕ ДОБАВЛЯЛ), ток вот что выдаёт при проверке скетча :
    H:\библтотеки\oled-chasy-termometr-na-arduino-i-ds3231\oled-chasy-termometr-na-arduino-i-ds3231.ino: In function ‘void clock()’:

    H:\библтотеки\oled-chasy-termometr-na-arduino-i-ds3231\oled-chasy-termometr-na-arduino-i-ds3231.ino:41:27: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]

    H:\библтотеки\oled-chasy-termometr-na-arduino-i-ds3231\oled-chasy-termometr-na-arduino-i-ds3231.ino:48:27: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]

    H:\библтотеки\oled-chasy-termometr-na-arduino-i-ds3231\oled-chasy-termometr-na-arduino-i-ds3231.ino: In function ‘void temp()’:

    H:\библтотеки\oled-chasy-termometr-na-arduino-i-ds3231\oled-chasy-termometr-na-arduino-i-ds3231.ino:59:41: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]

    Скетч использует 11488 байт (35%) памяти устройства. Всего доступно 32256 байт.
    Глобальные переменные используют 1174 байт (57%) динамической памяти, оставляя 874 байт для локальных переменных. Максимум: 2048 байт.
    Помогите пожалуйста!

  6. У меня возникает вот такая ошибка. Что сделать ?
    char *monthLong[] = {«January», «February», «March», «April», «May», «June», «July», «August», «September», «October», «November», «December»};

  7. И ещё, как запрограммировать будильник и как его услышать (назначить Пин звука)

    1. Здравствуйте, надо менять библиотеку и выбрать шрифт с кириллицей.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *