Skip to content

Commit

Permalink
add
Browse files Browse the repository at this point in the history
  • Loading branch information
AlexGyver committed May 25, 2021
1 parent 3d6ef96 commit 8b5b508
Show file tree
Hide file tree
Showing 10 changed files with 671 additions and 0 deletions.
130 changes: 130 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,130 @@
![License: MIT](https://img.shields.io/badge/License-MIT-green.svg)
![author](https://img.shields.io/badge/author-AlexGyver-informational.svg)
# microDS3231
Лёгкая библиотека для работы с RTC DS3231 для Arduino
- Чтение и запись времени
- Вывод в char* и String
- Чтение температуры датчика

### Совместимость
Совместима со всеми Arduino платформами (используются Arduino-функции)

## Содержание
- [Установка](#install)
- [Инициализация](#init)
- [Использование](#usage)
- [Пример](#example)
- [Версии](#versions)
- [Баги и обратная связь](#feedback)

<a id="install"></a>
## Установка
- Библиотеку можно найти по названию **microDS3231** и установить через менеджер библиотек в:
- Arduino IDE
- Arduino IDE v2
- PlatformIO
- [Скачать библиотеку](https://github.com/GyverLibs/microDS3231/archive/refs/heads/main.zip) .zip архивом для ручной установки:
- Распаковать и положить в *C:\Program Files (x86)\Arduino\libraries* (Windows x64)
- Распаковать и положить в *C:\Program Files\Arduino\libraries* (Windows x32)
- Распаковать и положить в *Документы/Arduino/libraries/*
- (Arduino IDE) автоматическая установка из .zip: *Скетч/Подключить библиотеку/Добавить .ZIP библиотеку…* и указать скачанный архив
- Читай более подробную инструкцию по установке библиотек [здесь](https://alexgyver.ru/arduino-first/#%D0%A3%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0_%D0%B1%D0%B8%D0%B1%D0%BB%D0%B8%D0%BE%D1%82%D0%B5%D0%BA)

<a id="init"></a>
## Инициализация
```cpp
MicroDS3231 rtc;
```

<a id="usage"></a>
## Использование
```cpp
void setTime(int8_t seconds, int8_t minutes, int8_t hours, int8_t date, int8_t month, int16_t year); // установка времени
void setTime(uint8_t param); // установка времени == времени компиляции
void setTime(DateTime time); // установить из структуры DateTime
DateTime getTime(void); // получить в структуру DateTime
String getTimeString(); // получить время как строку вида 12:08:09
String getDateString(); // получить дату как строку вида 2021.04.08
void getTimeChar(char* array); // получить время как char array [8] вида 12:08:09
void getDateChar(char* array); // получить дату как char array [10] вида 2021.04.08
bool lostPower(void); // проверка на сброс питания
uint8_t getSeconds(void); // получить секунды
uint8_t getMinutes(void); // получить минуты
uint8_t getHours(void); // получить часы
uint8_t getDay(void); // получить день недели
uint8_t getDate(void); // получить число
uint16_t getYear(void); // получить год
uint8_t getMonth(void); // получить месяц
float getTemperatureFloat(void);// получить температуру float
int getTemperature(void); // получить температуру int
```
<a id="example"></a>
## Пример
Остальные примеры смотри в **examples**!
```cpp
// демо возможностей библиотеки
#include <microDS3231.h>
MicroDS3231 rtc;
void setup() {
Serial.begin(9600);
if (rtc.lostPower()) { // при потере питания
rtc.setTime(COMPILE_TIME); // установить время компиляции
}
//rtc.setTime(SEC, MIN, HOUR, DAY, MONTH, YEAR); // устанвока времени вручную
}
void loop() {
printTime();
delay(500);
}
void printTime() {
Serial.print(rtc.getHours());
Serial.print(":");
Serial.print(rtc.getMinutes());
Serial.print(":");
Serial.print(rtc.getSeconds());
Serial.print(" ");
Serial.print(rtc.getDay());
Serial.print(" ");
Serial.print(rtc.getDate());
Serial.print("/");
Serial.print(rtc.getMonth());
Serial.print("/");
Serial.println(rtc.getYear());
Serial.println(rtc.getTemperatureFloat());
//Serial.println(rtc.getTemperature());
Serial.println(rtc.getTimeString());
Serial.println(rtc.getDateString());
// работа с char
char time[8];
rtc.getTimeChar(time); // записать в массив time
Serial.println(time);
char date[10];
rtc.getDateChar(date);
Serial.println(date);
Serial.println();
}
```

<a id="versions"></a>
## Версии
- v1.2 - добавлены ограничения на вводимые в setTime числа. Также нельзя ввести 29 февраля увы =)
- v1.3 - пофикшено зависание, когда модуль отключен но опрашивается
- v1.4 - незначительный фикс
- v2.0 - новые возможности, оптимизация и облегчение
- v2.1 - добавил вывод температуры, вывод в String и char
- v2.2 - исправлены дни недели (пн-вс 1-7)

<a id="feedback"></a>
## Баги и обратная связь
При нахождении багов создавайте **Issue**, а лучше сразу пишите на почту [[email protected]](mailto:[email protected])
Библиотека открыта для доработки и ваших **Pull Request**'ов!
50 changes: 50 additions & 0 deletions examples/DS3231_demo/DS3231_demo.ino
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
// демо возможностей библиотеки
#include <microDS3231.h>
MicroDS3231 rtc;

void setup() {
Serial.begin(9600);

if (rtc.lostPower()) { // при потере питания
rtc.setTime(COMPILE_TIME); // установить время компиляции
}

//rtc.setTime(SEC, MIN, HOUR, DAY, MONTH, YEAR); // устанвока времени вручную
}

void loop() {
printTime();
delay(500);
}

void printTime() {
Serial.print(rtc.getHours());
Serial.print(":");
Serial.print(rtc.getMinutes());
Serial.print(":");
Serial.print(rtc.getSeconds());
Serial.print(" ");
Serial.print(rtc.getDay());
Serial.print(" ");
Serial.print(rtc.getDate());
Serial.print("/");
Serial.print(rtc.getMonth());
Serial.print("/");
Serial.println(rtc.getYear());

Serial.println(rtc.getTemperatureFloat());
//Serial.println(rtc.getTemperature());
Serial.println(rtc.getTimeString());
Serial.println(rtc.getDateString());

// работа с char
char time[8];
rtc.getTimeChar(time); // записать в массив time
Serial.println(time);

char date[10];
rtc.getDateChar(date);
Serial.println(date);

Serial.println();
}
46 changes: 46 additions & 0 deletions examples/DateTime/DateTime.ino
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
#include <microDS3231.h>
MicroDS3231 rtc;

void setup() {
Serial.begin(9600);

// получаем все данные в структуру
DateTime now = rtc.getTime();

// меняем любой параметр
now.year += 5;
// now.second;
// now.minute;
// now.hour;
// now.day;
// now.date;
// now.month;

// отправляем в rtc
rtc.setTime(now);
}

void loop() {
printTime();
delay(500);
}

void printTime() {
// получаем все данные в структуру и используем их
// этот способ быстрее и "легче" вызова отдельных get-функций
DateTime now = rtc.getTime();

Serial.print(now.hour);
Serial.print(":");
Serial.print(now.minute);
Serial.print(":");
Serial.print(now.second);
Serial.print(" ");
Serial.print(now.day);
Serial.print(" ");
Serial.print(now.date);
Serial.print("/");
Serial.print(now.month);
Serial.print("/");
Serial.println(now.year);
}
23 changes: 23 additions & 0 deletions examples/RTClib comparsion/testDS3231_RTClib/testDS3231_RTClib.ino
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
#include <Wire.h>
#include <RTClib.h>
RTC_DS3231 rtc;
void setup () {
uartBegin();
rtc.begin();

if (rtc.lostPower()) {
rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
}
DateTime now = rtc.now();
uartPrintln(now.hour());
uartPrintln(now.minute());
uartPrintln(now.second());
uartPrintln(now.year());
uartPrintln(now.month());
uartPrintln(now.day());
}

void loop () {
}
// 3364 (10%)
// 285 (13%)
21 changes: 21 additions & 0 deletions examples/RTClib comparsion/testDS3231micro/testDS3231micro.ino
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
#include <microDS3231.h>
MicroDS3231 rtc;

void setup() {
uartBegin();

if (rtc.lostPower()) { // при потере питания
rtc.setTime(COMPILE_TIME); // установить время компиляции
}
uartPrintln(rtc.getHours());
uartPrintln(rtc.getMinutes());
uartPrintln(rtc.getSeconds());
uartPrintln(rtc.getDate());
uartPrintln(rtc.getMonth());
uartPrintln(rtc.getYear());
}

void loop() {
}
// 2466 (8%)
// 75 (3%)
51 changes: 51 additions & 0 deletions keywords.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@

#######################################
# Syntax Coloring Map For microDS3231
#######################################

#######################################
# Datatypes (KEYWORD1)
#######################################

microDS3231 KEYWORD1
MicroDS3231 KEYWORD1
DateTime KEYWORD1

#######################################
# Methods and Functions (KEYWORD2)
#######################################
setTime KEYWORD2
getTime KEYWORD2s
lostPower KEYWORD2
getSeconds KEYWORD2
getMinutes KEYWORD2
getHours KEYWORD2
getDay KEYWORD2
getDate KEYWORD2
getYear KEYWORD2
getMonth KEYWORD2
getTemperatureFloat KEYWORD2
getTemperature KEYWORD2
getTimeString KEYWORD2
getDateString KEYWORD2
getTimeChar KEYWORD2
getDateChar KEYWORD2

second KEYWORD2
minute KEYWORD2
hour KEYWORD2
day KEYWORD2
date KEYWORD2
month KEYWORD2
year KEYWORD2

#######################################
# Constants (LITERAL1)
#######################################
COMPILE_TIME LITERAL1
BUILD_SEC LITERAL1
BUILD_MIN LITERAL1
BUILD_HOUR LITERAL1
BUILD_DAY LITERAL1
BUILD_MONTH LITERAL1
BUILD_YEAR LITERAL1
9 changes: 9 additions & 0 deletions library.properties
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
name=microDS3231
version=2.2
author=AlexGyver <[email protected]>
maintainer=AlexGyver <[email protected]>
sentence=Light library for DS3231 RTC module
paragraph=Light library for DS3231 RTC module
category=Device Control
url=https://github.com/GyverLibs/microDS3231
architectures=*
Loading

0 comments on commit 8b5b508

Please sign in to comment.