// Библиотеки
#include <Wire.h>
#include <SPI.h>
#include <Adafruit_GFX.h>
#include <U8g2lib.h>
//#include "Calibri10.h"
#include "F:\ESP32_sketch\DS3231_Display_Zap_4_RTC\Calibri10.h"
#include <RTClib.h>
#define LCD_1_SCL 18
#define LCD_1_SI 32
#define LCD_1_CS 19
#define LCD_1_A0 16
#define LCD_1_RES 17
#define LCD_1_BL 4 // Подсветка через резистор 220 Ом
#define LCD_2_SCL 18
#define LCD_2_SI 32
#define LCD_2_CS 33
#define LCD_2_A0 16
#define LCD_2_RES 13
#define LCD_2_BL 4 // Подсветка через резистор 220 Ом
#define LCD_3_SCL 18
#define LCD_3_SI 32
#define LCD_3_CS 27
#define LCD_3_A0 16
#define LCD_3_RES 26
#define LCD_3_BL 4 // Подсветка через резистор 220 Ом
/***************************************************************************
Подбор шрифтов
****************************************************************************/
#define FONT_10x20 u8g2_font_10x20_t_cyrillic
#define FONT_9x15 u8g2_font_9x15_t_cyrillic
#define FONT_6x13 u8g2_font_6x13B_tf // Секунды..... эти
#define FONT_7x13 u8g2_font_7x13_m_symbols // Секунды
#define FONT_8x13 u8g2_font_8x13_t_cyrillic // Секунды
#define FONT_9x15 u8g2_font_haxrcorp4089_t_cyrillic // Месяц и День Недели. не поместилось пол буквы - к
#define FONT_9x15 u8g2_font_logisoso16_tr // Год. оптимально.
#define FONT_9x15 u8g2_font_fur35_tr // Число! fub на пиксель толще, но цифры неаккуратные.
#define FONT_9x15 u8g2_font_fur30_tf // Число
#define FONT_6x12 u8g2_font_logisoso32_tf // Число для числа слишком узкий шрифт
#define FONT_6x12 u8g2_font_inr33_mn // Число Х
#define FONT_6x12 u8g2_font_inr33_t_cyrillic // Число Х
#define FONT_6x12 u8g2_font_inb33_mf // Число перечёркнутый НОЛЬ Х
#define FONT_9x19 u8g2_font_logisoso28_tr // Часы. по возможности найти такие же узкие, но немного длиннее.
#define FONT_6x12 u8g2_font_logisoso22_tf // Часы.
#define FONT_9x18 u8g2_font_font_logisoso38_tf
#define FONT_9x17 u8g2_font_lubB14_tf // Точки
#define FONT_8x5 u8g2_font_Calibri10 // Месяц и День Недели. Вставлен My Shrift_Calibri10 ( 8 x 5)
RTC_DS3231 rtc;
// Объекты дисплея
U8G2_ST7565_ERC12864_F_4W_SW_SPI u8g2_1(U8G2_R3, LCD_1_SCL, LCD_1_SI, LCD_1_CS, LCD_1_A0, LCD_1_RES);
U8G2_ST7565_ERC12864_F_4W_SW_SPI u8g2_2(U8G2_R0, LCD_2_SCL, LCD_2_SI, LCD_2_CS, LCD_2_A0, LCD_2_RES);
U8G2_ST7565_ERC12864_F_4W_SW_SPI u8g2_3(U8G2_R3, LCD_3_SCL, LCD_3_SI, LCD_3_CS, LCD_3_A0, LCD_3_RES);
void setup()
{
delay(1000); // ждём завершение переходных процессов связанных с подачей питания.
Wire.begin(); // инициируем работу с аппаратной шиной I2C.
u8g2_1.begin(); // старт дисплея 1
u8g2_2.begin(); // старт дисплея 2
u8g2_3.begin(); // старт дисплея 3
rtc.begin(&Wire); // старт датчика ds3231
//rtc.adjust(DateTime(F(__DATE__), F(__TIME__))); // установка времени и даты последней компиляции
//rtc.adjust(DateTime(2024, 8, 12, 17, 45, 0)); // Год, Месяц, Число, Час, Мин, Сек.
{
u8g2_1.setContrast(25); //Контрастность 1
u8g2_1.enableUTF8Print(); // Вывод текста 1
u8g2_2.setContrast(25); //Контрастность 2
u8g2_2.enableUTF8Print(); // Вывод текста 2
u8g2_3.setContrast(25); //Контрастность 3
u8g2_3.enableUTF8Print(); // Вывод текста 3
u8g2_1.clearBuffer(); // очистка буфера 1
u8g2_2.clearBuffer(); // очистка буфера 2
u8g2_3.clearBuffer(); // очистка буфера 3
/*
if (! rtc.begin()) // инициализация DS32331
u8g2_2.setFont(u8g2_font_8x13_t_cyrillic); // установка размера шрифта датчика
u8g2_2.setCursor(0, 45); // установка курсора
u8g2_2.print("RTC ошибка"); // проверка, подключен ли модуль
while (1);
*/
delay(3000); //Задержка для загрузки системы 3 сек
}
}
void loop()
{
{
u8g2_1.clearBuffer(); // очистка буфера 1
u8g2_1.setFont(u8g2.setFont(Calibri10); // установка размера шрифта датчика
u8g2_1.setCursor(0, 45); // установка курсора
u8g2_1.print("ПОНЕДЕЛЬНИК");
u8g2_1.sendBuffer(); // вывод на экран
}
} код не чищенный, много для простоты закомментированно. Но, работает.
Последний раз редактировалось
dankr Вт авг 13, 2024 16:36:28, всего редактировалось 2 раз(а).