Статьи » Разработки
Добавить статью

Часы с использованием LCD дисплея 128x64 и Arduino

2020-01-05 в 12:07 (последнее изменение 2021-04-12 в 23:39)

Собрал у себя стильные часы на большом LCD дисплее 128x64 на контроллере ST7920. Корпус распечатал на 3D принтере Anycubic I3 MEGA. Модель такого корпуса можно взять на нашем Хабе. Внутри по отверстиям отлично подходит плата Arduino UNO и сам дисплей. Так же для часиков понадобится модуль часов реального времени DS1307.

Похожие статьи по использованию дисплеев на контроллере ST7920:
1. Вывод различных данных на дисплей LCD 128x64
2. Индикатор уровня аудио сигнала
3. Вывод картинки на дисплей 128x64
4. Перевод значения AnalogRead в проценты
5. Регулировка яркости дисплеев на примере LCD 128x64

Схема устройства

часы на arduino 128x64

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

Компоненты

Для создания таких часиков нам понадобится следующее:
1. LCD дисплей 128x64
2. Часы реального времени DS1307
3. Arduino UNO
4. Корпус для часов
5. 3d принтер Anycubic I3 MEGA для создания крутых самоделок

3d печать корпуса часов

Как далее видно, что не зря столько пришлось повозиться при работе над моделью корпуса. Все закладные отверстия под платы идеально подошли, не пришлось что либо клеить. Платы отлично держаться на винтах. Отверстие под USB разъем так же идеально подошло.

устройство часов

часы arduino lcd 12864

Код программы

Библиотека U8glib - скачать
Библиотека RTClib - скачать

В коде используется программная настройка яркости дисплея. За это отвечает следующая строка в Setup. Выставляя значение от 1 до 1024 позволит выставить яркость требуемого уровня. Можно с этой функцией баловаться как угодно. Строить зависимости яркости от времени суток. Добавить фоторезистор, и в зависимости от внешнего уровня освещенности настраивать необходимый уровень яркости подсветки.

Код
analogWrite(BLpin, 80);

Полный код программы

Код

#include "U8glib.h" //библиотека для работы с LCD дисплеемры
#include <Wire.h>   //библиотека для работы с I2C интерфесом
#include "RTClib.h" //библиотека для работы с модулем часов реального времени (RTC - Real_time_clock)
int BLpin = 3;      //порт регулировки подсветки дисплея

RTC_DS1307 rtc;

U8GLIB_ST7920_128X64_1X u8g( 13, 11, 10);  // Создаём объект u8g для работы с дисплеем, указывая номер вывода CS для аппаратной шины SPI

void setup() {

  analogWrite(BLpin, 80);

  if (! rtc.begin()) {
    while (1);
  }

  if (! rtc.isrunning()) {
  }

}

void loop () {
  DateTime now = rtc.now();

  u8g.firstPage();  // Всё что выводится на дисплей указывается в цикле: u8g.firstPage(); do{ ... команды ... }while(u8g.nextPage());
  do {
    u8g.setColorIndex(1);
    u8g.setFont(u8g_font_fub35n);

    u8g.setPrintPos( 0, 60); u8g.print(now.hour() / 10);
    u8g.setPrintPos( 28, 60); u8g.print(now.hour() % 10);
    u8g.setPrintPos( 53, 54); u8g.print(":");
    u8g.setPrintPos( 70, 60); u8g.print(now.minute() / 10);
    u8g.setPrintPos( 98, 60); u8g.print(now.minute() % 10);
 
  }    while (u8g.nextPage());
}


Не пропустите обновления! Подписывайтесь на нашу группу Вконтакте.
Так же у нас есть Telegram канал.
Вам понравился наш материал? Поделитесь с коллегами!

Просмотров: 7682. Оценка статьи: 5.0 из 5. Уже оценило 2 читателя

Об авторе - Администратор

More by Администратор

Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]