Заработал календарь, не знаю, вроде знаки зодиака верно определяются:
#include <SPI.h>
#include "epd4in2_V2.h"
#include "imagedata.h"
#include <DS3231.h>
#include <Wire.h>
DS3231 myRTC;
bool century = false;
const struct {
const unsigned char *bitmap;
}
arhiv_znaki[12]={znak_1,znak_2,znak_3,znak_4,znak_5,znak_6,znak_7,znak_8,znak_9,znak_10,znak_11,znak_12};//размер значка 96Х96 пикселей
const struct {
const unsigned char *bitmap;
}
arhiv_mes[12]={mes_1,mes_2,mes_3,mes_4,mes_5,mes_6,mes_7,mes_8,mes_9,mes_10,mes_11,mes_12};//размер шильда 56Х248 пикселей
const struct {
const unsigned char *bitmap;
}
arhiv_ned[7]={ned_1,ned_2,ned_3,ned_4,ned_5,ned_6,ned_7};//размер шильда 32Х200 пикселей
const struct {
const unsigned char *bitmap;
}
arhiv_chis[10]={chis_0,chis_1,chis_2,chis_3,chis_4,chis_5,chis_6,chis_7,chis_8,chis_9,};//размер шильда 144X72 пикселей
byte CH=3;byte M=9;byte N=2;byte Z=8;//числа данных календаря - число, месяц, день недели, текущий знак гороскопа
void setup() {
Wire.begin();
Epd epd;
epd.Init();
epd.Clear();
/////////////////////
/*
for(int i=0;i<12;i++){
epd.Display_Partial_Not_refresh(arhiv_znaki[i].bitmap, 0+(i%4)*96, 0+(i/4)*96, 96+(i%4)*96, 96+(i/4)*96);
if(i==11){epd.Display_Partial(arhiv_znaki[i].bitmap,0+(i%4)*96, 0+(i/4)*96, 96+(i%4)*96, 96+(i/4)*96);}
}
*/
//получение данных о времени с модуля часов
CH=myRTC.getDate();
M=myRTC.getMonth(century);
N=myRTC.getDoW();
//вычисление знака зодиака
if((M==1&&CH>=20)||(M==2&&CH<=19)){Z=1;}
if((M==2&&CH>=20)||(M==3&&CH<=20)){Z=2;}
if((M==3&&CH>=21)||(M==4&&CH<=19)){Z=3;}
if((M==4&&CH>=20)||(M==5&&CH<=20)){Z=4;}
if((M==5&&CH>=21)||(M==6&&CH<=20)){Z=5;}
if((M==6&&CH>=21)||(M==7&&CH<=22)){Z=6;}
if((M==7&&CH>=23)||(M==8&&CH<=22)){Z=7;}
if((M==8&&CH>=23)||(M==9&&CH<=22)){Z=8;}
if((M==9&&CH>=23)||(M==10&&CH<=23)){Z=9;}
if((M==10&&CH>=24)||(M==11&&CH<=22)){Z=10;}
if((M==11&&CH>=23)||(M==12&&CH<=21)){Z=11;}
if((M==12&&CH>=21)||(M==1&&CH<=19)){Z=12;}
//отрисовка листка календаря
epd.Display_Partial_Not_refresh(fon_, 0, 0, 400, 300);
if(CH>9){epd.Display_Partial_Not_refresh(arhiv_chis[CH/10].bitmap, 220, 80, 220+144, 80+72);epd.Display_Partial_Not_refresh(arhiv_chis[CH%10].bitmap, 220, 80+72, 220+144, 80+72+72);}
else{epd.Display_Partial_Not_refresh(arhiv_chis[CH].bitmap, 220, 116, 220+144, 116+72);}
epd.Display_Partial_Not_refresh(arhiv_mes[M-1].bitmap, 180, 26, 180+56, 26+248);
epd.Display_Partial_Not_refresh(arhiv_ned[N-1].bitmap, 140, 40, 140+32, 40+200);
epd.Display_Partial(arhiv_znaki[Z-1].bitmap,40, 100, 96+40, 96+100);
epd.Sleep();
}
void loop() {
// put your main code here, to run repeatedly:
}
Таблица соединений:
| Esp32 |
3,3V |
GND |
IO23 |
IO18 |
IO16 |
IO27 |
IO14 |
IO17 |
SDA |
SCL |
| E paper |
VCC |
GND |
DIN |
CLK |
CS |
DC |
RST |
BUSY |
|
|
| Ds3231 |
VCC |
GND |
|
|
|
|
|
|
SDA |
SCL |