Добавить в корзинуПозвонить
Найти в Дзене
Darknesses

Код к Статье 16.02.21(про часы на Ардуино)

Перед include и define стоит Решётка

include <iarduino_RTC.h>

include <Wire.h>

include <Adafruit_GFX.h>

include <Adafruit_SSD1306.h>

define SCREEN_WIDTH 128 // OLED display width, in pixels

define SCREEN_HEIGHT 64 // OLED display height, in pixels

iarduino_RTC watch(RTC_DS1302, 8,6,7);

const char* strM="JanFebMarAprMayJunJulAugSepOctNovDec"; // Определяем массив всех вариантов текстового представления текущего месяца.

const char* sysT=__TIME__; // Получаем время компиляции скетча в формате "SS:MM:HH".

const char* sysD=__DATE__; // Получаем дату компиляции скетча в формате "MMM:DD:YYYY", где МММ - текстовое представление текущего месяца, например: Jul.

// Парсим полученные значения sysT и sysD в массив i: // Определяем массив «i» из 6 элементов типа int, содержащий следующие значения: секунды, минуты, часы, день, месяц и год компиляции скетча.

const int i[6] {(sysT[6]-48)*10+(sysT[7]-48), (sysT[3]-48)*10+(sysT[4]-48), (sysT[0]-48)*10+(sysT[1]-48), (sysD[4]-48)*10+(sysD[5]-48), ((int)memmem(strM,36,sysD,3)+3-(int)&strM[0])/3, (sysD[9]-48)*10+(sysD[10]-48)};

Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);

void setup() {

Serial.begin(9600);

watch.begin();

watch.settime(i[0],i[1],i[2],i[3],i[4],i[5], 2);

if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) { // Address 0x3D for 128x64

Serial.println(F("SSD1306 allocation failed"));

for(;;);

}

delay(2000);

display.clearDisplay();

display.setTextSize(4);

display.setTextColor(WHITE);

display.setCursor(40, 0);

display.println("Hello");

display.display();

delay(100);

}

void loop() {

display.clearDisplay();

display.setCursor(0, 0);

display.setTextSize(2);

display.println(watch.gettime("d-m-Y H:i:s D"));

display.display();

delay(1000);

}