Ви не увійшли.
Thanks.
Документація велика сила !!!
Я там свого часу полазив, а зараз не зрозумів...
У вас взагалі на лініях I²C є pull-up резистори?
На цих модулях годинника підтяжка є.
Дякую всім за участь. За порадою dimich годинник пішов, поки без збоїв.
Але вирішив перестрахуватися)))
Запустив wifi (вперше з ним зіткнувся) і тепер раз на годину оновлюю час на годиннику з NTP.
У мене ESP32 WROOM 32D. Так, при підключенні wifi GPIO25 (у мене на ньому сенсорна кнопка) не хотів працювати. Пошуки в інтернеті ні до чого не привели (даташит не подужаю))). Довелося перекинути на 33.
Другий день без нарікань))))
requestFrom() = 19
0h: 85
1h: 40
2h: 0
3h: 1
4h: 1
5h: 1
6h: 0
7h: 0
8h: 0
9h: 0
Ah: 0
Bh: 0
Ch: 0
Dh: 0
Eh: 28
Fh: 136
10h: 0
11h: 21
12h: 128
всі 19 регістрів:
requestFrom() = 19
0h: 37
1h: 38
2h: 0
3h: 1
4h: 1
5h: 1
6h: 0
7h: 0
8h: 0
9h: 0
Ah: 0
Bh: 0
Ch: 0
Dh: 0
Eh: 28
Fh: 136
10h: 0
11h: 21
12h: 192
vvr пише:На дисплей виводиться 2000+year)))
Відʼєднайте зовнішнє живлення та батарейку. На пару секунд закоротіть контакти гнізда куди вона підключається, щоб розрядити ємності. Вставте батарейку назад.
тепер час не зупиняється))))
vvr пише:Теж саме - при вимкненні живлення годинник зупиняється (((((
А ви часом ніде не записали одиницю в біт EOSC?
Здампте вміст всіх регістрів та подивіться вже, що там робиться.
Я навіть не знаю, як з ними працювати, ніколи не стикався.
Нічого тада не записував
Цікаво, як цей код може видавати "2165 рік", коли
byte ... year; ... Serial.print(year);
Або це не той код, або щось недоговорюєте.
На дисплей виводиться 2000+year)))
Вже дивлюся у бік синхронізації часу за NTP)))
static byte prevSecond = 0;
if (millis() - prevSecond >= 1000)
{
getDateDs3231(&second, &minute, &hour, &dayOfWeek, &dayOfMonth, &month, &year);
prevSecond = millis();
}
Теж саме - при вимкненні живлення годинник зупиняється (((((
Наразі немає підзарядки батарейки.
Батарейка нова, 3.1 вольта.
Спробую раз на секунду зчитувати час.
А тепер нові фокуси - при вимкненні живлення і повторному включенні годинник показує час відключення))))
На якомусь російському форумі вчора зустрів таку проблему.
Писали про запуск та зупинку осциллятора.
#include <Wire.h>
#define DS3231_I2C_ADDRESS 0x68
/////////// годинник //////////
byte second, minute, hour, dayOfWeek, dayOfMonth, month, year;
byte decToBcd(byte val)
{
return ((val / 10 * 16) + (val % 10));
}
byte bcdToDec(byte val)
{
return ((val / 16 * 10) + (val % 16));
}
void setDateDs3231(byte second, // 0-59
byte minute, // 0-59
byte hour, // 1-23
byte dayOfWeek, // 1-7
byte dayOfMonth, // 1-28/29/30/31
byte month, // 1-12
byte year) // 0-99
{
Wire.beginTransmission(DS3231_I2C_ADDRESS);
Wire.write(0);
Wire.write(decToBcd(second));
Wire.write(decToBcd(minute));
Wire.write(decToBcd(hour));
Wire.write(decToBcd(dayOfWeek));
Wire.write(decToBcd(dayOfMonth));
Wire.write(decToBcd(month));
Wire.write(decToBcd(year));
Wire.endTransmission();
}
void getDateDs3231(byte *second,
byte *minute,
byte *hour,
byte *dayOfWeek,
byte *dayOfMonth,
byte *month,
byte *year)
{
Wire.beginTransmission(DS3231_I2C_ADDRESS);
Wire.write(0);
Wire.endTransmission();
Wire.requestFrom(DS3231_I2C_ADDRESS, 7);
*second = bcdToDec(Wire.read() & 0x7f);
*minute = bcdToDec(Wire.read());
*hour = bcdToDec(Wire.read() & 0x3f);
*dayOfWeek = bcdToDec(Wire.read());
*dayOfMonth = bcdToDec(Wire.read());
*month = bcdToDec(Wire.read());
*year = bcdToDec(Wire.read());
}
void setup()
{
Serial.begin(115200);
Wire.begin();
}
void loop()
{
getDateDs3231(&second, &minute, &hour, &dayOfWeek, &dayOfMonth, &month, &year);
Serial.print(year);
Serial.print("-");
Serial.print(hour);
Serial.print(':');
Serial.print(minute);
Serial.print(':');
Serial.println(second);
}
Така поведінка тільки після переходу на esp32 (півроку як почав з нею грати)))
У ванній блок управління світлом і витяжкою та блок управління шторою на балконі працюють на дуньках вже по 8 років без нарікань.
Годинник підключений за тим же принципом, час коригується.
Ось з ESP32 щось не ладиться.
Саме годинник ds3231.
зараз на них 2165 рік, 25 годин, 104 місяць))))
Давно зробив собі погодну станцію на нано, bme та датчику со2 та світлодіодної матриці. Працює 5 років чудово. Вирішив додати плюшок з рядком, що біжить, але пам'яті в нано не вистачає. Переробив на esp32. Датчики та годинник ds3231 запитані від 3.3 вольта. І тут почалися проблеми - годинник через кілька годин починає показувати не коректний час.
Типо 45 годин 87 хвилин 2189 рік.
У цьому датчики працюють нормально.
Замінив модуль годинника, поставив нову батарейку, випаяв резистор у ланцюгу підзарядки батарейки (вичитав, що з літій краще не заряджати) – жодних змін. З годинником працюю з бібліотекою WIRE, щоби була можливість коригувати час.
Чи уст які міркування, може хто стикався?
делал когда то такое https://youtu.be/3pGm3lp6Lrk
ваша задача похожа.
в связи с тем, что много работы с механикой, дешево такой проект стоить не будет.
7808543@gmail.com
Не реальна ідея.
Це як замість двигуна в авто впендюрити чайник...
Разробка та випуск свого продукту в Україні буде в
рази дорожче за китайський.
Це має сенс тільки в разі унікальних розробок, які не мають
аналогів
7808543@gmail.com
Звичайний джойстік з потенціометрами та кнопкою.
Профі заробляють великі гроші та сюди не заходют .
Якщо ви задаєте такі питання, то ви не зможете реалізувати цей проект.
https://doc.arduino.ua/ru/prog/Delay
У сеті цих проєктів туева куча...