Тогда ищите, где она у вас установлена, и смотрите в папке examples
Подсказка: в папке со скетчами есть папка libraries, вот в нее все библиотеки и устанавливаются
Тогда ищите, где она у вас установлена, и смотрите в папке examples
Подсказка: в папке со скетчами есть папка libraries, вот в нее все библиотеки и устанавливаются
Нашёл, но открыть не могу 01 и 02
каким то чудом, в консоле появилось правильное время: 25-12-15 23:53:39
Но как теперь его считать и вывести на дисплей и чтобы оно обновлялось каждую секунду?
Надо его каждую секунду считывать и выводить на дисплей
Я итак понимаю это
Стал быть берете библиотеку для своего экрана, открываете примеры к нему и смотрите, как там организован вывод. В соответствие с этим делаете вывод времени у себя
опять нули в консоле пошли:
0-0-0 0:0:0
0-0-0 0:0:0
0-0-0 0:0:0
0-0-0 0:0:0
0-0-0 0:0:0
0-0-0 0:0:0
0-0-0 0:0:0
вот код:
#include <Ds1302.h>
// Определение пинов для подключения DS1302
const int RST_PIN = 29; // Пин для управления
const int DAT_PIN = 28; // Пин для передачи данных
const int CLK_PIN = 27; // Пин для синхронизации тактов
// Создаем экземпляр класса для работы с модулем DS1302
Ds1302 rtc(RST_PIN, CLK_PIN, DAT_PIN);
// Функция для вывода времени в формате "YYYY-MM-DD HH:MM:SS"
void printTime(Ds1302::DateTime dateTime) {
Serial.print(dateTime.year); // Год (00-99)
Serial.print('-');
if (dateTime.month < 10); // Добавление нуля перед однозначным числом месяца
Serial.print(dateTime.month); // Месяц (01-12)
Serial.print('-');
if (dateTime.day < 10); // Добавление нуля перед однозначным числом дня
Serial.print(dateTime.day); // День (01-31)
Serial.print(' ');
if (dateTime.hour < 10); // Добавление нуля перед однозначным часом
Serial.print(dateTime.hour); // Час (00-23)
Serial.print(':');
if (dateTime.minute < 10); // Добавление нуля перед однозначной минутой
Serial.print(dateTime.minute); // Минута (00-59)
Serial.print(':');
if (dateTime.second < 10); // Добавление нуля перед однозначной секундой
Serial.println(dateTime.second); // Секунда (00-59)
}
void setup() {
Serial.begin(9600); // Инициализация последовательного порта с частотой 9600 бод
// Инициализация RTC
rtc.init();
// Установка началного времени и даты
if (rtc.isHalted()) {
Serial.println("RTC не настроен. Установка времени...");
rtc.start();
// Создание структуры DateTime с заданными значениями
// !Установите актуальную дату и время на момент загрузки кода!
Ds1302::DateTime dt = {
.year = 25,
.month = Ds1302::MONTH_DEC,
.day = 16,
.hour = 13,
.minute = 12,
.second = 0,
.dow = Ds1302::DOW_TUE
};
// Установка заданного времени и даты
rtc.setDateTime(&dt);
}
}
void loop() {
// Получение текущего времени из RTC
Ds1302::DateTime now;
rtc.getDateTime(&now);
// Вывод времени в формате "YYYY-MM-DD HH:MM:SS"
printTime(now);
delay(1000); // Задержка на 1 секунду между выводами времени
}
Судя по переписке на сайте, у Вольтика какая-то не очень надежная библиотека. попробуйте другую
Ну не может быть “вдруг”. Или не контакт где-то или плохой контакт. Ищи, причина на 99.999999999% в этом!!!
Кстати да.
@Cosmo , можете показать хорошее фото вашего подключения? - чтобы видно было и Ардуино, и модуль, и провода
кажется автор батарейку в часы не вставил, и соответственно время возвращается к заводским, после того как питание отключает))) или показалось ?
Батарейка стоит в часах
Они иногда показывают правильное время, но в основном выводит нули.
Ну и? 2 + 2 сложить не можешь? Показывай фото монтажа, да по качественнее (чтобы всё можно было разглядеть).
Не мудрено, что в этом “паучьем раю” периодически (или постоянно?) что-то не контачит!!! Сделай с использованием пайки и проблема уйдёт!
ЗЫ: А еще прозвони тестером все эти соединительные провода (при этом изламывая их). У меня было такое, что четыре провода были вообще в обрыве, а пятый периодически “то контачил, то нет”.
Заменил провода, заменил пины. И всё вроде бы работает. Спасибо!
Ещё один вопрос:
Какой шрифт нужен для дисплея (U8G2_SH1107_128X128_F_HW_I2C display(U8G2_R0, /* reset=*/ U8X8_PIN_NONE);), чтобы выводить русские буквы, а то у меня всё на английском выводится?
Он так и называется *_cyrillic
void setup(void) {
u8g2.begin();
u8g2.enableUTF8Print(); // enable UTF8 support for the Arduino print() function
}
void loop(void) {
u8g2.setFont(u8g2_font_cu12_t_cyrillic); // <-- выбор кириллического шрифта
u8g2.firstPage();
do {
u8g2.setCursor(0, 40);
u8g2.print("Привет мир");
} while ( u8g2.nextPage() );
}