Здравствуйте, а можно сделать такие часы но с большими цифрами на lcd 1602 и датчиком темп.влажности AHT10
Вот как в этой теме http://forum.rcl-radio.ru/viewtopic.php?id=66
А то они у меня то спешат, то отстают с ds3231 приходится прошивать каждый год
Вот ваш код, там было вначале время потом температура и потом влажность крупными цифрами
#include <Wire.h>
#include <Thinary_AHT10.h>
#include <LiquidCrystal.h>
#include <DS3231.h>
AHT10Class AHT10;
DS3231 clock;RTCDateTime DateTime;
LiquidCrystal lcd(12, 11, 5, 4, 3, 2); // Устанавливаем дисплей
byte v1[8] = {31,31,31,31,31,31,31,31};
byte v2[8] = {31,31,31, 0, 0, 0, 0, 0};
byte v3[8] = { 0, 0, 0, 0, 0,31,31,31};
byte v4[8] = {31,31, 0, 0, 0, 0,31,31};
byte v5[8] = { 0, 0, 0, 0, 0, 0, 0, 0};
byte v6[8] = { 0, 0,14,31,31,14, 0, 0}; //*
byte v7[8] = { 0, 0, 0, 0, 0, 0,31,31};
byte v8[8] = {14,17,17,17,14,0,0,0};
int a[4],digit,sek_old,w,w1,w2,h,t;
byte i,d1,d2,d3,d4,d5,d6,e1,e2,e3;
unsigned long times;
void setup(){ Wire.begin(); clock.begin(); Serial.begin(9600); AHT10.begin();
//clock.setDateTime(__DATE__, __TIME__); // Устанавливаем время --> Раскомментировать / Закомментировать
lcd.begin(16, 2);
pinMode(10,INPUT); // SQW часов на 10 ногу
lcd.createChar(1, v1);lcd.createChar(2, v2);lcd.createChar(3, v3);lcd.createChar(4, v4);lcd.createChar(5, v5);lcd.createChar(6, v6);lcd.createChar(7, v7);lcd.createChar(8, v8);
clock.setOutput(DS3231_1HZ);
}
void loop(){
//if(millis()-times>3000){
h = AHT10.GetHumidity();// влажность
t = AHT10.GetTemperature();// температура
//}
;DateTime=clock.getDateTime();
if(millis()-times<=5000){digit = DateTime.hour*100+DateTime.minute;
if(w1==1){lcd.clear();w1=0;}w=1;
if(digit>999){a[0]=digit/1000;}else{a[0]=11;}
a[1]=digit/100%10;
a[2]=digit/10%10;
a[3]=digit%10%10;
for(i=0;i<4;i++){
switch(i){
case 0: e1=0,e2=1,e3=2;break;
case 1: e1=4,e2=5,e3=6;break;
case 2: e1=9,e2=10,e3=11;break;
case 3: e1=13,e2=14,e3=15;break;}
switch(a[i]){
case 0: d1=1,d2=2,d3=1,d4=1,d5=3,d6=1;break;
case 1: d1=2,d2=1,d3=5,d4=7,d5=1,d6=7;break;
case 2: d1=2,d2=4,d3=1,d4=1,d5=3,d6=3;break;
case 3: d1=2,d2=4,d3=1,d4=3,d5=3,d6=1;break;
case 4: d1=1,d2=3,d3=1,d4=5,d5=5,d6=1;break;
case 5: d1=1,d2=4,d3=2,d4=3,d5=3,d6=1;break;
case 6: d1=1,d2=4,d3=2,d4=1,d5=3,d6=1;break;
case 7: d1=2,d2=2,d3=1,d4=5,d5=5,d6=1;break;
case 8: d1=1,d2=4,d3=1,d4=1,d5=3,d6=1;break;
case 9: d1=1,d2=4,d3=1,d4=3,d5=3,d6=1;break;
case 11: d1=5,d2=5,d3=5,d4=5,d5=5,d6=5;break;
}
lcd.setCursor(e1,0);lcd.write((uint8_t)d1);lcd.setCursor(e2,0);lcd.write((uint8_t)d2);lcd.setCursor(e3,0);lcd.write((uint8_t)d3);
lcd.setCursor(e1,1);lcd.write((uint8_t)d4);lcd.setCursor(e2,1);lcd.write((uint8_t)d5);lcd.setCursor(e3,1);lcd.write((uint8_t)d6);}
if(digitalRead(10) == HIGH){lcd.setCursor(7,0);lcd.write((uint8_t)6);}else{ lcd.setCursor(7,0);lcd.write((uint8_t)5);} // SQW часов на 10 ногу
if(digitalRead(10) == LOW){lcd.setCursor(8,0);lcd.write((uint8_t)6);}else{ lcd.setCursor(8,0);lcd.write((uint8_t)5);} // SQW часов на 10 ногу
// lcd.setCursor(8,0);lcd.write((uint8_t)8);
lcd.setCursor(7,1);if(DateTime.second<10){lcd.print("0");}lcd.print(DateTime.second);
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
if(millis()-times>5000&&millis()-times<6500){digit=t;
if(w==1){lcd.clear();w=0;}w2=1;
if(digit>=10){a[0]=digit/10;}else{a[0]=11;}
a[1]=digit%10;
for(i=0;i<2;i++){
switch(i){
case 0: e1=4,e2=5,e3=6;break;
case 1: e1=8,e2=9,e3=10;break;}
switch(a[i]){
case 0: d1=1,d2=2,d3=1,d4=1,d5=3,d6=1;break;
case 1: d1=2,d2=1,d3=5,d4=7,d5=1,d6=7;break;
case 2: d1=2,d2=4,d3=1,d4=1,d5=3,d6=3;break;
case 3: d1=2,d2=4,d3=1,d4=3,d5=3,d6=1;break;
case 4: d1=1,d2=3,d3=1,d4=5,d5=5,d6=1;break;
case 5: d1=1,d2=4,d3=2,d4=3,d5=3,d6=1;break;
case 6: d1=1,d2=4,d3=2,d4=1,d5=3,d6=1;break;
case 7: d1=2,d2=2,d3=1,d4=5,d5=5,d6=1;break;
case 8: d1=1,d2=4,d3=1,d4=1,d5=3,d6=1;break;
case 9: d1=1,d2=4,d3=1,d4=3,d5=3,d6=1;break;
case 11: d1=5,d2=5,d3=5,d4=5,d5=5,d6=5;break;
}
lcd.setCursor(e1,0);lcd.write((uint8_t)d1);lcd.setCursor(e2,0);lcd.write((uint8_t)d2);lcd.setCursor(e3,0);lcd.write((uint8_t)d3);
lcd.setCursor(e1,1);lcd.write((uint8_t)d4);lcd.setCursor(e2,1);lcd.write((uint8_t)d5);lcd.setCursor(e3,1);lcd.write((uint8_t)d6);}
lcd.setCursor(11,0);lcd.write((uint8_t)8);
}
///////////////////////////////////////////////////////////////////////////////////////
if(millis()-times>=6500&&millis()-times<8000){digit=h;
if(w2==1){lcd.clear();w2=0;}w1=1;
a[0]=digit/10;
a[1]=digit%10;
for(i=0;i<2;i++){
switch(i){
case 0: e1=4,e2=5,e3=6;break;
case 1: e1=8,e2=9,e3=10;break;}
switch(a[i]){
case 0: d1=1,d2=2,d3=1,d4=1,d5=3,d6=1;break;
case 1: d1=2,d2=1,d3=5,d4=7,d5=1,d6=7;break;
case 2: d1=2,d2=4,d3=1,d4=1,d5=3,d6=3;break;
case 3: d1=2,d2=4,d3=1,d4=3,d5=3,d6=1;break;
case 4: d1=1,d2=3,d3=1,d4=5,d5=5,d6=1;break;
case 5: d1=1,d2=4,d3=2,d4=3,d5=3,d6=1;break;
case 6: d1=1,d2=4,d3=2,d4=1,d5=3,d6=1;break;
case 7: d1=2,d2=2,d3=1,d4=5,d5=5,d6=1;break;
case 8: d1=1,d2=4,d3=1,d4=1,d5=3,d6=1;break;
case 9: d1=1,d2=4,d3=1,d4=3,d5=3,d6=1;break;
case 11: d1=5,d2=5,d3=5,d4=5,d5=5,d6=5;break;
}
lcd.setCursor(e1,0);lcd.write((uint8_t)d1);lcd.setCursor(e2,0);lcd.write((uint8_t)d2);lcd.setCursor(e3,0);lcd.write((uint8_t)d3);
lcd.setCursor(e1,1);lcd.write((uint8_t)d4);lcd.setCursor(e2,1);lcd.write((uint8_t)d5);lcd.setCursor(e3,1);lcd.write((uint8_t)d6);}
lcd.setCursor(11,0);lcd.print("%");
}
if(millis()-times>8000){times=millis();}
}// loop