Наши контакты: +380958663605

inhelp@i.ua

OLED часы на arduino с отображением температуры

11 Май 2015

Комментарии:

21
 Май 11, 2015
 21
OLED часы

Сегодня я расскажу как сделать красивые OLED часы на arduino с отображением времени, текущей даты и дня недели на OLED дисплее и c отображением текущей температуры.

OLED часы (список компонентов с ссылками на продавцов)

OLED часы (список библиотек)

OLED часы (схема подключения)

Схема подключения OLED часов

OLED часы — Схема подключения компонентов

OLED часы (программирование)

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

После загрузки у нас на дисплее должно отобразится время и день недели с текущей датой

OLED часы

Как видим все отображается правильно, но что бы добавить русские названия дней недели нам потребуется инициализировать русские шрифты  добавив строку в скетч

закомментировать строки что бы при повторной загрузке скетча не устанавливать заново время

и еще добавить строки которые помогут нам определить порядковый номер дня недели и отобразить название дня на русском языке.

После этого день недели на нашем дисплее отобразится на русском языке

Отображение дня недели на русском языке

Отображение дня недели на русском языке

Ну а теперь что бы наши OLED часы отображали название месяца на русском языке добавим в наш скетч несколько строчек кода

которые сделают наши OLED часы более информативными

Полное отображение времени на русском языке

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

Ну а теперь, еще более усовершенствуем наши OLED часы и добавим к ним отображение температуры, которую мы будем считывать с датчика температуры DS18B20.

Для отображения рисунка с градусником на OLED дисплее и значка градуса выберем картинку с рисунком градусника и с помощью графического редактора сохраним ее в формате GIF с именем term.gif, и тоже самое проделаем с картинкой с значком градуса. (grad.gif).

картинки должны быть двухцветными (белый и черный)

Например картинка term.bmp будет иметь размеры 19×40 пикселей, а картинка grad.bmp 13×12 пикселей. Потом нам потребуется конвертировать две картинки с помощью онлайн-сервиса www.rinkydinkelectronics.com .

online converter

Онлайн конвертер изоборажений (моно)

выбираем наше изображение и жмем Make File

online converter

Страница загрузки конвертированного изображения

Жмем на Click here to download your file и сохраняем файл grad.c в папку с нашим скетчем, тоже самое проделываем с другим изображением. Закрываем наш скетч и снова открываем для отображения наших файлов как на картинке.

Отображение файлов изображений в скетче

Отображение конвертированных изображений grad.c и term.c в окне скетча

После этого добавим две строки в скетч, которые инициализируют наши файлы изображений

а потом отобразим наши изображения на экране OLED дисплея, добавив строки

где первые две цифры, это координаты отображения изображения, а последние две цифры — размеры изображения.

После чего добавим в наш скетч на два цикла. В первом цикле у нас будет отображаться время — назовем его void watch(); Второй цикл будет считывать и отображать температуру void temp();

А в основном цикле  void loop(); пропишем для ротации циклов несколько строчек кода

В цикле void temp(); пропишем кусочек кода для считывания и отображения температуры

В цикле void watch(); пропишем наш код, который отвечает за отображение времени

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

OLED часы

OLED часы (скетч)

Обсуждение статьи доступно в нашей группе vk.com

Полный скетч можно загрузить по ссылке OLED_watch_temp.rar

 

21 responses on “OLED часы на arduino с отображением температуры

  1. Jeyson:

    Не понимаю нахрена использовать эти все библиотеки из мусорника. Сделали вам радио конструктор радуйтесь, нет же надо взять базовую библиотеку и вывернуть ее через левую подмышку и засунуть в пятку!!! Вот почему ардуинщиков парафинят профпрограмисты. Ибо хрень делаете.

  2. Vovan:

    Падите НИЦ ардунасты! Ибо это — ГЛАС труПРОГРАМЕРА и КуЛ_ХацКера!

  3. Супер! Все работает!

  4. Виктор:

    как настроить часы?

    • igorturan:

      Сам впервые вчера взял в руки Ардуину. Настройка времени производится путём или первоночального изменения времени, или же в готовом скетче убираем коменты и меняем данные времени и даты в строках:

      //rtc.setDOW(WEDNESDAY);
      //rtc.setTime(21, 24, 0);
      //rtc.setDate(29, 4, 2015);
      Во всяком случае у мну получилось. Прикольные часики в машину.

  5. igorturan:

    Может, есть желающие помочь полному чайнику в проблеме? Суть такова: всё сделал по инструкции(купил-спаял-залил). При подключённом питании — работает без проблем. Пропало питание — соответственно всё выключилось. При повторном включении — отсчёт идёт с данных при заливке скетча(то есть часы не идут). НО! При подключённых часах к источнику тока вставляю батарейку в RTC показания — 00:00. Достаю батарейку — всё нормально. Вставляю батарейку и отключаю питание, через какое-то время включаю — опять 00:00. Но, батарейку вытащил — время продолжает нормальный ход, то есть не обнулились, хоть и показывали 00. Есть у кого идеи? Иль проще выкинуть этот конструктор на помойку? Или глюк в RTC?

  6. dimon722:

    убрал коменты, залил. Опять поставь коменты и залей и будет тебе счастье.

  7. dimon722:

    Батарейка только вставлена должна быть

    • igorturan:

      Таки при вставленной табарейке цифры 00:00. Время не меняется, двоеточие мигает. Выкинуть RTC?
      Пы.Сы, Пробовал заливать и с батареей, и без. Эффект, прямо скажем — нулевой.

  8. dimon722:

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

    • igorturan:

      Спасибо. Помогло. Только предварительно кулаком со злости шандарахнул по модулю часов. И при подключении батареки показания не изменились.

  9. Алексей:

    A под SPI дисплей ее нельзя переписать?

  10. Аркадий:

    Поддержу Алексея, так как имеется OLED с SPI. Подскажите как переделать скетч.

  11. Юрий:

    У меня есть модуль 128х32 OLED 0.91 SPI v1.1. какой то он странный, у него всего пять выводов. Питание, земля, DIN, CLK и DC. Как такой модуль подключить в этой схеме, и как переделать скетч?

  12. Сергей:

    постоянно ошибка компиляции для ардуино наны.что делать

  13. Artur_LI:

    см. обзор и комменты внимательно- нужно немного править библиотеку
    https://www.youtube.com/watch?v=niA3aPu3-dQ

  14. Алексей:

    Ребята а подскажите как подправить скетч чтобы темометр показывал отрицательную температуру и сделать шрифт по проще?

  15. dimon722:

    extern uint8_t BigNumbers[];
    вот это вставь в 4-ю строчку скетча

    myOLED.update();
    delay(450);
    myOLED.setFont(BigNumbers);
    myOLED.print(«-«, 51, 12);
    myOLED.update();
    delay(450);

    вот этим замени аналогичный блок

  16. dimon722:

    ошибся
    вот этот блок замени
    myOLED.clrScr();
    myOLED.setFont(SmallFont);
    myOLED.print(stringOne.substring(0, 5), 98, 0);
    myOLED.print(rtc.getDateStr(), 0, 0);
    myOLED.setFont(RusFont);
    myOLED.print(«NTVGTHFNEHF», CENTER, 57);
    myOLED.drawBitmap(4, 12, term, 19, 40);
    myOLED.setFont(BigNumbers);
    myOLED.print(String(Temp), CENTER, 12);
    myOLED.drawBitmap(92, 12, grad, 13, 12);
    myOLED.update();
    myOLED.clrScr();

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

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

семь + три =