51

Re: Часы+будильник на П543 (ИЛЦ5-4/7М)

кстати. я по прежнему. раскомментирую и закомментирую строки. как вы сказали.

Строка должна быть всегда закомментирована, раскомментировать нужно только один раз для установки времени

52

Re: Часы+будильник на П543 (ИЛЦ5-4/7М)

Насколько я знаю. все новые батареи CR2032 3.3 в.

Все равно что-о нужно делать с часами, если есть возможность то замените модуль часов на другой

53

Re: Часы+будильник на П543 (ИЛЦ5-4/7М)

Поменял модуль.  часы идут при отключении питания.

54

Re: Часы+будильник на П543 (ИЛЦ5-4/7М)

Заметил.  Яркость Двоеточие чуть ниже чем другие сегменты.

55

Re: Часы+будильник на П543 (ИЛЦ5-4/7М)

Да этот так нужно подобрать сопротивление резистора для выравнивания яркости

http://forum.rcl-radio.ru/uploads/images/2025/03/e858685134018df3a7ca2abf9222779d.png

56

Re: Часы+будильник на П543 (ИЛЦ5-4/7М)

на тест, часы оставлю включенными. Мерцаний нет. неактивные Соседние сегменты  не подсвечиваются. Это хорошо.

57

Re: Часы+будильник на П543 (ИЛЦ5-4/7М)

Вам нужно подумать как будет реализовано управление часами и будильником, будут 3 кнопки, есть дополнительные индикаторы. Для нормальной работы часов реального времени необходимо кнопками устанавливать не только часы и минуты, а так же дату, месяц и год. Плюс время будильника.

Я так же подумаю над этим вопросом и предложу свой вариант.

58

Re: Часы+будильник на П543 (ИЛЦ5-4/7М)

liman324 пишет:

Вам нужно подумать как будет реализовано управление часами и будильником, будут 3 кнопки, есть дополнительные индикаторы. Для нормальной работы часов реального времени необходимо кнопками устанавливать не только часы и минуты, а так же дату, месяц и год. Плюс время будильника.

Я так же подумаю над этим вопросом и предложу свой вариант.

Я Вам в письме написал как я вижу все это. Возможно мой вариант будет не лучший .
Еще конечно хотелось бы фоторезистор поставить, для понижения яркости индикатора ночью.

59

Re: Часы+будильник на П543 (ИЛЦ5-4/7М)

Хорошо, пока отложим управление на потом.

Добавим датчик влажности и температуры

Вот скетч, загрузите его и откройте монитор порта и опубликуйте содержимое монитора порта, мне надо знать в каком формате выводятся данные с датчика

#include <SHT21.h>  // http://rcl-radio.ru/wp-content/uploads/2025/03/SHT21-Arduino-Library-master.zip

SHT21 sht; 

float temp;   // variable to store temperature
float humidity; // variable to store hemidity

void setup() {
  Wire.begin();   // begin Wire(I2C)
  Serial.begin(9600); // begin Serial
}

void loop() {

  temp = sht.getTemperature();  // get temp from SHT 
  humidity = sht.getHumidity(); // get temp from SHT

  Serial.print("Temp: ");     // print readings
  Serial.print(temp);
  Serial.print("\t Humidity: ");
  Serial.println(humidity);

  delay(85);  // min delay for 14bit temp reading is 85ms
}

60

Re: Часы+будильник на П543 (ИЛЦ5-4/7М)

5 минут.

61

Re: Часы+будильник на П543 (ИЛЦ5-4/7М)

Temp: 24.24     Humidity: 56.37
Temp: 24.24     Humidity: 56.37
Temp: 24.24     Humidity: 56.37
Temp: 24.24     Humidity: 56.40
Temp: 24.24     Humidity: 56.40
Temp: 24.24     Humidity: 56.43
Temp: 24.24     Humidity: 56.43
Temp: 24.24     Humidity: 56.46
Temp: 24.25     Humidity: 56.46
Temp: 24.25     Humidity: 56.49
Temp: 24.25     Humidity: 56.49

62

Re: Часы+будильник на П543 (ИЛЦ5-4/7М)

http://forum.rcl-radio.ru/uploads/images/2025/03/3d16add7fe6e0975e9aea1f8c5df0fe2.png

Тестирование

С 0 по 5 секунду показывается температура, с 5 по 10 влажность

#define  C1_SET  0
#define  C2_SET  1
#define  C3_SET  2
#define  C4_SET  3
#define  C5_SET  4
#define  C6_SET  5

#define  A_SEG   6
#define  B_SEG   7
#define  C_SEG   8
#define  D_SEG   9
#define  E_SEG  10
#define  F_SEG  11
#define  G_SEG  12
#define  H_SEG  13

#include <MsTimer2.h>   // // http://rcl-radio.ru/wp-content/uploads/2018/11/MsTimer2.zip  
#include <Wire.h>
#include <DS3231.h> //https://github.com/jarzebski/Arduino-DS3231/archive/master.zip
#include <SHT21.h>  // http://rcl-radio.ru/wp-content/uploads/2025/03/SHT21-Arduino-Library-master.zip
DS3231 clock;
RTCDateTime DateTime;
SHT21 sht; 

int i,segm,c,segm_dn, ss,mm,hh,dd,mon,gg,wesk,times;
int a[4],s_tic, bud,kolorol, prog, timers;
int fff;
unsigned long times_0, times_1, times_2;
int temp,humidity;


void setup(){
MsTimer2::set(4, to_Timer);MsTimer2::start(); // timer2 period 4 ms
pinMode(C1_SET,OUTPUT); pinMode(C2_SET,OUTPUT);pinMode(C3_SET,OUTPUT);
pinMode(C4_SET,OUTPUT);pinMode(C5_SET,OUTPUT);pinMode(C6_SET,OUTPUT);
pinMode(A_SEG,OUTPUT); pinMode(B_SEG,OUTPUT);pinMode(C_SEG,OUTPUT);
pinMode(D_SEG,OUTPUT);pinMode(E_SEG,OUTPUT);pinMode(F_SEG,OUTPUT);
pinMode(G_SEG,OUTPUT);pinMode(H_SEG,OUTPUT);
Wire.begin();clock.begin();
// clock.setDateTime(__DATE__, __TIME__); // Устанавливаем время на часах, основываясь на времени компиляции скетча
  }

void loop(){
  if(millis()-times_1>=1000){ times_1=millis(); // считываем время с ds3231 каждые 1000 мс
  DateTime=clock.getDateTime();// опрос времени
  ss = DateTime.second;        // секунды
  mm = DateTime.minute;        // минуты
  hh = DateTime.hour;          // часы
  dd = DateTime.day;           // дата
  mon = DateTime.month;        // месяц
  gg = DateTime.year;          // Год
  wesk = DateTime.dayOfWeek;   // День недели (1 - воскресенье, 7 - суббота)

  temp = sht.getTemperature();  // Температура
  humidity = sht.getHumidity(); // Влажность
  }

  // мигание двоеточия
  if(ss>10){
  if(millis()-times_0<=500){s_tic = 0;}
  if(millis()-times_0>500){s_tic = 1;}
  if(millis()-times_0>1000){times_0=millis();}
  }else{s_tic = 1;}

  

  bud = 1;     // значок будильника
  kolorol = 1; // значок колокольчик
  prog = 1;    // надпись ПРОГ
  timers = 1;  // значок таймер

  if(ss < 5){ a[0]=temp/10;a[1]=temp%10;a[2]=13;a[3]=14; }
  if(ss >= 5 && ss <=10){ a[0]=10;a[1]=11;a[2]=humidity/10;a[3]=humidity%10; }

if(ss > 10){
  times = hh*100+mm;
  a[0]=times/1000;
  a[1]=times/100%10;
  a[2]=times/10%10;
  a[3]=times%10;
}

  delay(100);
  } 


void to_Timer(){ 
    switch(i){
    case 0:  segm_dn=wesk; c=5;  setka();dn(bud); break;
    case 1:  segm=a[0];    c=4;  setka();segment(1); break;
    case 2:  segm=a[1];    c=3;  setka();segment(kolorol); break;
    case 3:  segm=s_tic;   c=2;  setka();tic(); break;
    case 4:  segm=a[2];    c=1;  setka();segment(prog); break;
    case 5:  segm=a[3];    c=0;  setka();segment(timers); break;
  }i++;if(i>5){i=0;}}

void segment(bool hhh){
  switch(segm){                                                                 
    case 0: ch(A_SEG,0);ch(B_SEG,0);ch(C_SEG,0);ch(D_SEG,0);ch(E_SEG,0);ch(F_SEG,0);ch(G_SEG,1);ch(H_SEG,hhh);break;// 0
    case 1: ch(A_SEG,1);ch(B_SEG,0);ch(C_SEG,0);ch(D_SEG,1);ch(E_SEG,1);ch(F_SEG,1);ch(G_SEG,1);ch(H_SEG,hhh);break;// 1
    case 2: ch(A_SEG,0);ch(B_SEG,0);ch(C_SEG,1);ch(D_SEG,0);ch(E_SEG,0);ch(F_SEG,1);ch(G_SEG,0);ch(H_SEG,hhh);break;// 2
    case 3: ch(A_SEG,0);ch(B_SEG,0);ch(C_SEG,0);ch(D_SEG,0);ch(E_SEG,1);ch(F_SEG,1);ch(G_SEG,0);ch(H_SEG,hhh);break;// 3
    case 4: ch(A_SEG,1);ch(B_SEG,0);ch(C_SEG,0);ch(D_SEG,1);ch(E_SEG,1);ch(F_SEG,0);ch(G_SEG,0);ch(H_SEG,hhh);break;// 4
    case 5: ch(A_SEG,0);ch(B_SEG,1);ch(C_SEG,0);ch(D_SEG,0);ch(E_SEG,1);ch(F_SEG,0);ch(G_SEG,0);ch(H_SEG,hhh);break;// 5   
    case 6: ch(A_SEG,0);ch(B_SEG,1);ch(C_SEG,0);ch(D_SEG,0);ch(E_SEG,0);ch(F_SEG,0);ch(G_SEG,0);ch(H_SEG,hhh);break;// 6 
    case 7: ch(A_SEG,0);ch(B_SEG,0);ch(C_SEG,0);ch(D_SEG,1);ch(E_SEG,1);ch(F_SEG,1);ch(G_SEG,1);ch(H_SEG,hhh);break;// 7 
    case 8: ch(A_SEG,0);ch(B_SEG,0);ch(C_SEG,0);ch(D_SEG,0);ch(E_SEG,0);ch(F_SEG,0);ch(G_SEG,0);ch(H_SEG,hhh);break;// 8
    case 9: ch(A_SEG,0);ch(B_SEG,0);ch(C_SEG,0);ch(D_SEG,0);ch(E_SEG,1);ch(F_SEG,0);ch(G_SEG,0);ch(H_SEG,hhh);break;// 9
    case 10: ch(A_SEG,1);ch(B_SEG,0);ch(C_SEG,0);ch(D_SEG,1);ch(E_SEG,0);ch(F_SEG,0);ch(G_SEG,0);ch(H_SEG,hhh);break;// Н
    case 11: ch(A_SEG,1);ch(B_SEG,1);ch(C_SEG,1);ch(D_SEG,1);ch(E_SEG,1);ch(F_SEG,1);ch(G_SEG,0);ch(H_SEG,hhh);break;// -
    case 12: ch(A_SEG,1);ch(B_SEG,1);ch(C_SEG,1);ch(D_SEG,1);ch(E_SEG,1);ch(F_SEG,1);ch(G_SEG,1);ch(H_SEG,hhh);break;// пусто
    case 13: ch(A_SEG,0);ch(B_SEG,0);ch(C_SEG,1);ch(D_SEG,1);ch(E_SEG,1);ch(F_SEG,0);ch(G_SEG,0);ch(H_SEG,hhh);break;// * градус
    case 14: ch(A_SEG,0);ch(B_SEG,1);ch(C_SEG,1);ch(D_SEG,0);ch(E_SEG,0);ch(F_SEG,0);ch(G_SEG,1);ch(H_SEG,hhh);break;// C
  }} 

void dn(bool ind_bud){
  switch(segm_dn){
    // День недели (0 - воскресенье, 6 - суббота)                                                                 
    case 0: ch(A_SEG,1);ch(B_SEG,1);ch(C_SEG,1);ch(D_SEG,0);ch(E_SEG,ind_bud);ch(F_SEG,1);ch(G_SEG,1);ch(H_SEG,1);break;// ВС
    case 1: ch(A_SEG,0);ch(B_SEG,1);ch(C_SEG,1);ch(D_SEG,1);ch(E_SEG,ind_bud);ch(F_SEG,1);ch(G_SEG,1);ch(H_SEG,1);break;// ПН
    case 2: ch(A_SEG,1);ch(B_SEG,1);ch(C_SEG,1);ch(D_SEG,1);ch(E_SEG,ind_bud);ch(F_SEG,1);ch(G_SEG,1);ch(H_SEG,0);break;// ВТ
    case 3: ch(A_SEG,1);ch(B_SEG,1);ch(C_SEG,1);ch(D_SEG,1);ch(E_SEG,ind_bud);ch(F_SEG,0);ch(G_SEG,1);ch(H_SEG,1);break;// СР
    case 4: ch(A_SEG,1);ch(B_SEG,0);ch(C_SEG,1);ch(D_SEG,1);ch(E_SEG,ind_bud);ch(F_SEG,1);ch(G_SEG,1);ch(H_SEG,1);break;// ЧТ   
    case 5: ch(A_SEG,1);ch(B_SEG,1);ch(C_SEG,0);ch(D_SEG,1);ch(E_SEG,ind_bud);ch(F_SEG,1);ch(G_SEG,1);ch(H_SEG,1);break;// ПТ 
    case 6: ch(A_SEG,1);ch(B_SEG,1);ch(C_SEG,1);ch(D_SEG,1);ch(E_SEG,ind_bud);ch(F_SEG,1);ch(G_SEG,0);ch(H_SEG,1);break;// СБ 
  }}

void tic(){
  switch(s_tic){                                                             
    case 0: ch(A_SEG,1);ch(B_SEG,1);ch(C_SEG,1);ch(D_SEG,1);ch(E_SEG,1);ch(F_SEG,1);ch(G_SEG,1);ch(H_SEG,1);break;// _
    case 1: ch(A_SEG,1);ch(B_SEG,1);ch(C_SEG,1);ch(D_SEG,1);ch(E_SEG,1);ch(F_SEG,1);ch(G_SEG,1);ch(H_SEG,0);break;// :
  }}     

void setka(){
  switch(c){                                                             
    case 0:ch(C1_SET,0);ch(C2_SET,1);ch(C3_SET,1);ch(C4_SET,1);ch(C5_SET,1);ch(C6_SET,1);break; 
    case 1:ch(C1_SET,1);ch(C2_SET,0);ch(C3_SET,1);ch(C4_SET,1);ch(C5_SET,1);ch(C6_SET,1);break; 
    case 2:ch(C1_SET,1);ch(C2_SET,1);ch(C3_SET,0);ch(C4_SET,1);ch(C5_SET,1);ch(C6_SET,1);break; 
    case 3:ch(C1_SET,1);ch(C2_SET,1);ch(C3_SET,1);ch(C4_SET,0);ch(C5_SET,1);ch(C6_SET,1);break; 
    case 4:ch(C1_SET,1);ch(C2_SET,1);ch(C3_SET,1);ch(C4_SET,1);ch(C5_SET,0);ch(C6_SET,1);break; 
    case 5:ch(C1_SET,1);ch(C2_SET,1);ch(C3_SET,1);ch(C4_SET,1);ch(C5_SET,1);ch(C6_SET,0);break; 
  }} 

void ch(int pin, int logic){digitalWrite(pin,logic);}

63

Re: Часы+будильник на П543 (ИЛЦ5-4/7М)

Тоже самое но при показе температуры или влажности дни недели не горят, двоеточие не должно гореть

#define  C1_SET  0
#define  C2_SET  1
#define  C3_SET  2
#define  C4_SET  3
#define  C5_SET  4
#define  C6_SET  5

#define  A_SEG   6
#define  B_SEG   7
#define  C_SEG   8
#define  D_SEG   9
#define  E_SEG  10
#define  F_SEG  11
#define  G_SEG  12
#define  H_SEG  13

#include <MsTimer2.h>   // // http://rcl-radio.ru/wp-content/uploads/2018/11/MsTimer2.zip  
#include <Wire.h>
#include <DS3231.h> //https://github.com/jarzebski/Arduino-DS3231/archive/master.zip
#include <SHT21.h>  // http://rcl-radio.ru/wp-content/uploads/2025/03/SHT21-Arduino-Library-master.zip
DS3231 clock;
RTCDateTime DateTime;
SHT21 sht; 

int i,segm,c,segm_dn, ss,mm,hh,dd,mon,gg,wesk,times;
int a[4],s_tic, bud,kolorol, prog, timers;
int fff;
unsigned long times_0, times_1, times_2;
int temp,humidity;


void setup(){
MsTimer2::set(4, to_Timer);MsTimer2::start(); // timer2 period 4 ms
pinMode(C1_SET,OUTPUT); pinMode(C2_SET,OUTPUT);pinMode(C3_SET,OUTPUT);
pinMode(C4_SET,OUTPUT);pinMode(C5_SET,OUTPUT);pinMode(C6_SET,OUTPUT);
pinMode(A_SEG,OUTPUT); pinMode(B_SEG,OUTPUT);pinMode(C_SEG,OUTPUT);
pinMode(D_SEG,OUTPUT);pinMode(E_SEG,OUTPUT);pinMode(F_SEG,OUTPUT);
pinMode(G_SEG,OUTPUT);pinMode(H_SEG,OUTPUT);
Wire.begin();clock.begin();
// clock.setDateTime(__DATE__, __TIME__); // Устанавливаем время на часах, основываясь на времени компиляции скетча
  }

void loop(){
  if(millis()-times_1>=1000){ times_1=millis(); // считываем время с ds3231 каждые 1000 мс
  DateTime=clock.getDateTime();// опрос времени
  ss = DateTime.second;        // секунды
  mm = DateTime.minute;        // минуты
  hh = DateTime.hour;          // часы
  dd = DateTime.day;           // дата
  mon = DateTime.month;        // месяц
  gg = DateTime.year;          // Год
  wesk = DateTime.dayOfWeek;   // День недели (1 - воскресенье, 7 - суббота)

  temp = sht.getTemperature();  // Температура
  humidity = sht.getHumidity(); // Влажность
  }

  // мигание двоеточия
  if(ss>10){
  if(millis()-times_0<=500){s_tic = 0;}
  if(millis()-times_0>500){s_tic = 1;}
  if(millis()-times_0>1000){times_0=millis();}
  }else{s_tic = 0;}

  

  bud = 1;     // значок будильника
  kolorol = 1; // значок колокольчик
  prog = 1;    // надпись ПРОГ
  timers = 1;  // значок таймер

  if(ss < 5){ a[0]=temp/10;a[1]=temp%10;a[2]=13;a[3]=14; wesk = 12;}
  if(ss >= 5 && ss <=10){ a[0]=10;a[1]=11;a[2]=humidity/10;a[3]=humidity%10;wesk = 12;}

if(ss > 10){
  times = hh*100+mm;
  a[0]=times/1000;
  a[1]=times/100%10;
  a[2]=times/10%10;
  a[3]=times%10;
}

  delay(100);
  } 


void to_Timer(){ 
    switch(i){
    case 0:  segm_dn=wesk; c=5;  setka();dn(bud); break;
    case 1:  segm=a[0];    c=4;  setka();segment(1); break;
    case 2:  segm=a[1];    c=3;  setka();segment(kolorol); break;
    case 3:  segm=s_tic;   c=2;  setka();tic(); break;
    case 4:  segm=a[2];    c=1;  setka();segment(prog); break;
    case 5:  segm=a[3];    c=0;  setka();segment(timers); break;
  }i++;if(i>5){i=0;}}

void segment(bool hhh){
  switch(segm){                                                                 
    case 0: ch(A_SEG,0);ch(B_SEG,0);ch(C_SEG,0);ch(D_SEG,0);ch(E_SEG,0);ch(F_SEG,0);ch(G_SEG,1);ch(H_SEG,hhh);break;// 0
    case 1: ch(A_SEG,1);ch(B_SEG,0);ch(C_SEG,0);ch(D_SEG,1);ch(E_SEG,1);ch(F_SEG,1);ch(G_SEG,1);ch(H_SEG,hhh);break;// 1
    case 2: ch(A_SEG,0);ch(B_SEG,0);ch(C_SEG,1);ch(D_SEG,0);ch(E_SEG,0);ch(F_SEG,1);ch(G_SEG,0);ch(H_SEG,hhh);break;// 2
    case 3: ch(A_SEG,0);ch(B_SEG,0);ch(C_SEG,0);ch(D_SEG,0);ch(E_SEG,1);ch(F_SEG,1);ch(G_SEG,0);ch(H_SEG,hhh);break;// 3
    case 4: ch(A_SEG,1);ch(B_SEG,0);ch(C_SEG,0);ch(D_SEG,1);ch(E_SEG,1);ch(F_SEG,0);ch(G_SEG,0);ch(H_SEG,hhh);break;// 4
    case 5: ch(A_SEG,0);ch(B_SEG,1);ch(C_SEG,0);ch(D_SEG,0);ch(E_SEG,1);ch(F_SEG,0);ch(G_SEG,0);ch(H_SEG,hhh);break;// 5   
    case 6: ch(A_SEG,0);ch(B_SEG,1);ch(C_SEG,0);ch(D_SEG,0);ch(E_SEG,0);ch(F_SEG,0);ch(G_SEG,0);ch(H_SEG,hhh);break;// 6 
    case 7: ch(A_SEG,0);ch(B_SEG,0);ch(C_SEG,0);ch(D_SEG,1);ch(E_SEG,1);ch(F_SEG,1);ch(G_SEG,1);ch(H_SEG,hhh);break;// 7 
    case 8: ch(A_SEG,0);ch(B_SEG,0);ch(C_SEG,0);ch(D_SEG,0);ch(E_SEG,0);ch(F_SEG,0);ch(G_SEG,0);ch(H_SEG,hhh);break;// 8
    case 9: ch(A_SEG,0);ch(B_SEG,0);ch(C_SEG,0);ch(D_SEG,0);ch(E_SEG,1);ch(F_SEG,0);ch(G_SEG,0);ch(H_SEG,hhh);break;// 9
    case 10: ch(A_SEG,1);ch(B_SEG,0);ch(C_SEG,0);ch(D_SEG,1);ch(E_SEG,0);ch(F_SEG,0);ch(G_SEG,0);ch(H_SEG,hhh);break;// Н
    case 11: ch(A_SEG,1);ch(B_SEG,1);ch(C_SEG,1);ch(D_SEG,1);ch(E_SEG,1);ch(F_SEG,1);ch(G_SEG,0);ch(H_SEG,hhh);break;// -
    case 12: ch(A_SEG,1);ch(B_SEG,1);ch(C_SEG,1);ch(D_SEG,1);ch(E_SEG,1);ch(F_SEG,1);ch(G_SEG,1);ch(H_SEG,hhh);break;// пусто
    case 13: ch(A_SEG,0);ch(B_SEG,0);ch(C_SEG,1);ch(D_SEG,1);ch(E_SEG,1);ch(F_SEG,0);ch(G_SEG,0);ch(H_SEG,hhh);break;// * градус
    case 14: ch(A_SEG,0);ch(B_SEG,1);ch(C_SEG,1);ch(D_SEG,0);ch(E_SEG,0);ch(F_SEG,0);ch(G_SEG,1);ch(H_SEG,hhh);break;// C
  }} 

void dn(bool ind_bud){
  switch(segm_dn){
    // День недели (0 - воскресенье, 6 - суббота)                                                                 
    case 0: ch(A_SEG,1);ch(B_SEG,1);ch(C_SEG,1);ch(D_SEG,0);ch(E_SEG,ind_bud);ch(F_SEG,1);ch(G_SEG,1);ch(H_SEG,1);break;// ВС
    case 1: ch(A_SEG,0);ch(B_SEG,1);ch(C_SEG,1);ch(D_SEG,1);ch(E_SEG,ind_bud);ch(F_SEG,1);ch(G_SEG,1);ch(H_SEG,1);break;// ПН
    case 2: ch(A_SEG,1);ch(B_SEG,1);ch(C_SEG,1);ch(D_SEG,1);ch(E_SEG,ind_bud);ch(F_SEG,1);ch(G_SEG,1);ch(H_SEG,0);break;// ВТ
    case 3: ch(A_SEG,1);ch(B_SEG,1);ch(C_SEG,1);ch(D_SEG,1);ch(E_SEG,ind_bud);ch(F_SEG,0);ch(G_SEG,1);ch(H_SEG,1);break;// СР
    case 4: ch(A_SEG,1);ch(B_SEG,0);ch(C_SEG,1);ch(D_SEG,1);ch(E_SEG,ind_bud);ch(F_SEG,1);ch(G_SEG,1);ch(H_SEG,1);break;// ЧТ   
    case 5: ch(A_SEG,1);ch(B_SEG,1);ch(C_SEG,0);ch(D_SEG,1);ch(E_SEG,ind_bud);ch(F_SEG,1);ch(G_SEG,1);ch(H_SEG,1);break;// ПТ 
    case 6: ch(A_SEG,1);ch(B_SEG,1);ch(C_SEG,1);ch(D_SEG,1);ch(E_SEG,ind_bud);ch(F_SEG,1);ch(G_SEG,0);ch(H_SEG,1);break;// СБ 
    case 12: ch(A_SEG,1);ch(B_SEG,1);ch(C_SEG,1);ch(D_SEG,1);ch(E_SEG,ind_bud);ch(F_SEG,1);ch(G_SEG,1);ch(H_SEG,1);break;// пусто
  }}

void tic(){
  switch(s_tic){                                                             
    case 0: ch(A_SEG,1);ch(B_SEG,1);ch(C_SEG,1);ch(D_SEG,1);ch(E_SEG,1);ch(F_SEG,1);ch(G_SEG,1);ch(H_SEG,1);break;// _
    case 1: ch(A_SEG,1);ch(B_SEG,1);ch(C_SEG,1);ch(D_SEG,1);ch(E_SEG,1);ch(F_SEG,1);ch(G_SEG,1);ch(H_SEG,0);break;// :
  }}     

void setka(){
  switch(c){                                                             
    case 0:ch(C1_SET,0);ch(C2_SET,1);ch(C3_SET,1);ch(C4_SET,1);ch(C5_SET,1);ch(C6_SET,1);break; 
    case 1:ch(C1_SET,1);ch(C2_SET,0);ch(C3_SET,1);ch(C4_SET,1);ch(C5_SET,1);ch(C6_SET,1);break; 
    case 2:ch(C1_SET,1);ch(C2_SET,1);ch(C3_SET,0);ch(C4_SET,1);ch(C5_SET,1);ch(C6_SET,1);break; 
    case 3:ch(C1_SET,1);ch(C2_SET,1);ch(C3_SET,1);ch(C4_SET,0);ch(C5_SET,1);ch(C6_SET,1);break; 
    case 4:ch(C1_SET,1);ch(C2_SET,1);ch(C3_SET,1);ch(C4_SET,1);ch(C5_SET,0);ch(C6_SET,1);break; 
    case 5:ch(C1_SET,1);ch(C2_SET,1);ch(C3_SET,1);ch(C4_SET,1);ch(C5_SET,1);ch(C6_SET,0);break; 
  }} 

void ch(int pin, int logic){digitalWrite(pin,logic);}

64 (2025-03-29 08:36:39 отредактировано AnArAmo)

Re: Часы+будильник на П543 (ИЛЦ5-4/7М)

liman324 пишет:

Тоже самое но при показе температуры или влажности дни недели не горят, двоеточие не должно гореть

#define  C1_SET  0
#define  C2_SET  1
#define  C3_SET  2
#define  C4_SET  3
#define  C5_SET  4
#define  C6_SET  5

#define  A_SEG   6
#define  B_SEG   7
#define  C_SEG   8
#define  D_SEG   9
#define  E_SEG  10
#define  F_SEG  11
#define  G_SEG  12
#define  H_SEG  13

#include <MsTimer2.h>   // // http://rcl-radio.ru/wp-content/uploads/2018/11/MsTimer2.zip  
#include <Wire.h>
#include <DS3231.h> //https://github.com/jarzebski/Arduino-DS3231/archive/master.zip
#include <SHT21.h>  // http://rcl-radio.ru/wp-content/uploads/2025/03/SHT21-Arduino-Library-master.zip
DS3231 clock;
RTCDateTime DateTime;
SHT21 sht; 

int i,segm,c,segm_dn, ss,mm,hh,dd,mon,gg,wesk,times;
int a[4],s_tic, bud,kolorol, prog, timers;
int fff;
unsigned long times_0, times_1, times_2;
int temp,humidity;


void setup(){
MsTimer2::set(4, to_Timer);MsTimer2::start(); // timer2 period 4 ms
pinMode(C1_SET,OUTPUT); pinMode(C2_SET,OUTPUT);pinMode(C3_SET,OUTPUT);
pinMode(C4_SET,OUTPUT);pinMode(C5_SET,OUTPUT);pinMode(C6_SET,OUTPUT);
pinMode(A_SEG,OUTPUT); pinMode(B_SEG,OUTPUT);pinMode(C_SEG,OUTPUT);
pinMode(D_SEG,OUTPUT);pinMode(E_SEG,OUTPUT);pinMode(F_SEG,OUTPUT);
pinMode(G_SEG,OUTPUT);pinMode(H_SEG,OUTPUT);
Wire.begin();clock.begin();
// clock.setDateTime(__DATE__, __TIME__); // Устанавливаем время на часах, основываясь на времени компиляции скетча
  }

void loop(){
  if(millis()-times_1>=1000){ times_1=millis(); // считываем время с ds3231 каждые 1000 мс
  DateTime=clock.getDateTime();// опрос времени
  ss = DateTime.second;        // секунды
  mm = DateTime.minute;        // минуты
  hh = DateTime.hour;          // часы
  dd = DateTime.day;           // дата
  mon = DateTime.month;        // месяц
  gg = DateTime.year;          // Год
  wesk = DateTime.dayOfWeek;   // День недели (1 - воскресенье, 7 - суббота)

  temp = sht.getTemperature();  // Температура
  humidity = sht.getHumidity(); // Влажность
  }

  // мигание двоеточия
  if(ss>10){
  if(millis()-times_0<=500){s_tic = 0;}
  if(millis()-times_0>500){s_tic = 1;}
  if(millis()-times_0>1000){times_0=millis();}
  }else{s_tic = 0;}

  

  bud = 1;     // значок будильника
  kolorol = 1; // значок колокольчик
  prog = 1;    // надпись ПРОГ
  timers = 1;  // значок таймер

  if(ss < 5){ a[0]=temp/10;a[1]=temp%10;a[2]=13;a[3]=14; wesk = 12;}
  if(ss >= 5 && ss <=10){ a[0]=10;a[1]=11;a[2]=humidity/10;a[3]=humidity%10;wesk = 12;}

if(ss > 10){
  times = hh*100+mm;
  a[0]=times/1000;
  a[1]=times/100%10;
  a[2]=times/10%10;
  a[3]=times%10;
}

  delay(100);
  } 


void to_Timer(){ 
    switch(i){
    case 0:  segm_dn=wesk; c=5;  setka();dn(bud); break;
    case 1:  segm=a[0];    c=4;  setka();segment(1); break;
    case 2:  segm=a[1];    c=3;  setka();segment(kolorol); break;
    case 3:  segm=s_tic;   c=2;  setka();tic(); break;
    case 4:  segm=a[2];    c=1;  setka();segment(prog); break;
    case 5:  segm=a[3];    c=0;  setka();segment(timers); break;
  }i++;if(i>5){i=0;}}

void segment(bool hhh){
  switch(segm){                                                                 
    case 0: ch(A_SEG,0);ch(B_SEG,0);ch(C_SEG,0);ch(D_SEG,0);ch(E_SEG,0);ch(F_SEG,0);ch(G_SEG,1);ch(H_SEG,hhh);break;// 0
    case 1: ch(A_SEG,1);ch(B_SEG,0);ch(C_SEG,0);ch(D_SEG,1);ch(E_SEG,1);ch(F_SEG,1);ch(G_SEG,1);ch(H_SEG,hhh);break;// 1
    case 2: ch(A_SEG,0);ch(B_SEG,0);ch(C_SEG,1);ch(D_SEG,0);ch(E_SEG,0);ch(F_SEG,1);ch(G_SEG,0);ch(H_SEG,hhh);break;// 2
    case 3: ch(A_SEG,0);ch(B_SEG,0);ch(C_SEG,0);ch(D_SEG,0);ch(E_SEG,1);ch(F_SEG,1);ch(G_SEG,0);ch(H_SEG,hhh);break;// 3
    case 4: ch(A_SEG,1);ch(B_SEG,0);ch(C_SEG,0);ch(D_SEG,1);ch(E_SEG,1);ch(F_SEG,0);ch(G_SEG,0);ch(H_SEG,hhh);break;// 4
    case 5: ch(A_SEG,0);ch(B_SEG,1);ch(C_SEG,0);ch(D_SEG,0);ch(E_SEG,1);ch(F_SEG,0);ch(G_SEG,0);ch(H_SEG,hhh);break;// 5   
    case 6: ch(A_SEG,0);ch(B_SEG,1);ch(C_SEG,0);ch(D_SEG,0);ch(E_SEG,0);ch(F_SEG,0);ch(G_SEG,0);ch(H_SEG,hhh);break;// 6 
    case 7: ch(A_SEG,0);ch(B_SEG,0);ch(C_SEG,0);ch(D_SEG,1);ch(E_SEG,1);ch(F_SEG,1);ch(G_SEG,1);ch(H_SEG,hhh);break;// 7 
    case 8: ch(A_SEG,0);ch(B_SEG,0);ch(C_SEG,0);ch(D_SEG,0);ch(E_SEG,0);ch(F_SEG,0);ch(G_SEG,0);ch(H_SEG,hhh);break;// 8
    case 9: ch(A_SEG,0);ch(B_SEG,0);ch(C_SEG,0);ch(D_SEG,0);ch(E_SEG,1);ch(F_SEG,0);ch(G_SEG,0);ch(H_SEG,hhh);break;// 9
    case 10: ch(A_SEG,1);ch(B_SEG,0);ch(C_SEG,0);ch(D_SEG,1);ch(E_SEG,0);ch(F_SEG,0);ch(G_SEG,0);ch(H_SEG,hhh);break;// Н
    case 11: ch(A_SEG,1);ch(B_SEG,1);ch(C_SEG,1);ch(D_SEG,1);ch(E_SEG,1);ch(F_SEG,1);ch(G_SEG,0);ch(H_SEG,hhh);break;// -
    case 12: ch(A_SEG,1);ch(B_SEG,1);ch(C_SEG,1);ch(D_SEG,1);ch(E_SEG,1);ch(F_SEG,1);ch(G_SEG,1);ch(H_SEG,hhh);break;// пусто
    case 13: ch(A_SEG,0);ch(B_SEG,0);ch(C_SEG,1);ch(D_SEG,1);ch(E_SEG,1);ch(F_SEG,0);ch(G_SEG,0);ch(H_SEG,hhh);break;// * градус
    case 14: ch(A_SEG,0);ch(B_SEG,1);ch(C_SEG,1);ch(D_SEG,0);ch(E_SEG,0);ch(F_SEG,0);ch(G_SEG,1);ch(H_SEG,hhh);break;// C
  }} 

void dn(bool ind_bud){
  switch(segm_dn){
    // День недели (0 - воскресенье, 6 - суббота)                                                                 
    case 0: ch(A_SEG,1);ch(B_SEG,1);ch(C_SEG,1);ch(D_SEG,0);ch(E_SEG,ind_bud);ch(F_SEG,1);ch(G_SEG,1);ch(H_SEG,1);break;// ВС
    case 1: ch(A_SEG,0);ch(B_SEG,1);ch(C_SEG,1);ch(D_SEG,1);ch(E_SEG,ind_bud);ch(F_SEG,1);ch(G_SEG,1);ch(H_SEG,1);break;// ПН
    case 2: ch(A_SEG,1);ch(B_SEG,1);ch(C_SEG,1);ch(D_SEG,1);ch(E_SEG,ind_bud);ch(F_SEG,1);ch(G_SEG,1);ch(H_SEG,0);break;// ВТ
    case 3: ch(A_SEG,1);ch(B_SEG,1);ch(C_SEG,1);ch(D_SEG,1);ch(E_SEG,ind_bud);ch(F_SEG,0);ch(G_SEG,1);ch(H_SEG,1);break;// СР
    case 4: ch(A_SEG,1);ch(B_SEG,0);ch(C_SEG,1);ch(D_SEG,1);ch(E_SEG,ind_bud);ch(F_SEG,1);ch(G_SEG,1);ch(H_SEG,1);break;// ЧТ   
    case 5: ch(A_SEG,1);ch(B_SEG,1);ch(C_SEG,0);ch(D_SEG,1);ch(E_SEG,ind_bud);ch(F_SEG,1);ch(G_SEG,1);ch(H_SEG,1);break;// ПТ 
    case 6: ch(A_SEG,1);ch(B_SEG,1);ch(C_SEG,1);ch(D_SEG,1);ch(E_SEG,ind_bud);ch(F_SEG,1);ch(G_SEG,0);ch(H_SEG,1);break;// СБ 
    case 12: ch(A_SEG,1);ch(B_SEG,1);ch(C_SEG,1);ch(D_SEG,1);ch(E_SEG,ind_bud);ch(F_SEG,1);ch(G_SEG,1);ch(H_SEG,1);break;// пусто
  }}

void tic(){
  switch(s_tic){                                                             
    case 0: ch(A_SEG,1);ch(B_SEG,1);ch(C_SEG,1);ch(D_SEG,1);ch(E_SEG,1);ch(F_SEG,1);ch(G_SEG,1);ch(H_SEG,1);break;// _
    case 1: ch(A_SEG,1);ch(B_SEG,1);ch(C_SEG,1);ch(D_SEG,1);ch(E_SEG,1);ch(F_SEG,1);ch(G_SEG,1);ch(H_SEG,0);break;// :
  }}     

void setka(){
  switch(c){                                                             
    case 0:ch(C1_SET,0);ch(C2_SET,1);ch(C3_SET,1);ch(C4_SET,1);ch(C5_SET,1);ch(C6_SET,1);break; 
    case 1:ch(C1_SET,1);ch(C2_SET,0);ch(C3_SET,1);ch(C4_SET,1);ch(C5_SET,1);ch(C6_SET,1);break; 
    case 2:ch(C1_SET,1);ch(C2_SET,1);ch(C3_SET,0);ch(C4_SET,1);ch(C5_SET,1);ch(C6_SET,1);break; 
    case 3:ch(C1_SET,1);ch(C2_SET,1);ch(C3_SET,1);ch(C4_SET,0);ch(C5_SET,1);ch(C6_SET,1);break; 
    case 4:ch(C1_SET,1);ch(C2_SET,1);ch(C3_SET,1);ch(C4_SET,1);ch(C5_SET,0);ch(C6_SET,1);break; 
    case 5:ch(C1_SET,1);ch(C2_SET,1);ch(C3_SET,1);ch(C4_SET,1);ch(C5_SET,1);ch(C6_SET,0);break; 
  }} 

void ch(int pin, int logic){digitalWrite(pin,logic);}

Влажность показывает и температуру.и Часы .   Понедельник мигает.  После все параметров сенсора переходит на часы.

65

Re: Часы+будильник на П543 (ИЛЦ5-4/7М)

#define  C1_SET  0
#define  C2_SET  1
#define  C3_SET  2
#define  C4_SET  3
#define  C5_SET  4
#define  C6_SET  5

#define  A_SEG   6
#define  B_SEG   7
#define  C_SEG   8
#define  D_SEG   9
#define  E_SEG  10
#define  F_SEG  11
#define  G_SEG  12
#define  H_SEG  13

#include <MsTimer2.h>   // // http://rcl-radio.ru/wp-content/uploads/2018/11/MsTimer2.zip  
#include <Wire.h>
#include <DS3231.h> //https://github.com/jarzebski/Arduino-DS3231/archive/master.zip
#include <SHT21.h>  // http://rcl-radio.ru/wp-content/uploads/2025/03/SHT21-Arduino-Library-master.zip
DS3231 clock;
RTCDateTime DateTime;
SHT21 sht; 

int i,segm,c,segm_dn, ss,mm,hh,dd,mon,gg,wesk,times;
int a[4],s_tic, bud,kolorol, prog, timers;
int fff;
unsigned long times_0, times_1, times_2;
int temp,humidity;


void setup(){
MsTimer2::set(4, to_Timer);MsTimer2::start(); // timer2 period 4 ms
pinMode(C1_SET,OUTPUT); pinMode(C2_SET,OUTPUT);pinMode(C3_SET,OUTPUT);
pinMode(C4_SET,OUTPUT);pinMode(C5_SET,OUTPUT);pinMode(C6_SET,OUTPUT);
pinMode(A_SEG,OUTPUT); pinMode(B_SEG,OUTPUT);pinMode(C_SEG,OUTPUT);
pinMode(D_SEG,OUTPUT);pinMode(E_SEG,OUTPUT);pinMode(F_SEG,OUTPUT);
pinMode(G_SEG,OUTPUT);pinMode(H_SEG,OUTPUT);
Wire.begin();clock.begin();
// clock.setDateTime(__DATE__, __TIME__); // Устанавливаем время на часах, основываясь на времени компиляции скетча
  }

void loop(){
  if(millis()-times_1>=1000){ times_1=millis(); // считываем время с ds3231 каждые 1000 мс
  DateTime=clock.getDateTime();// опрос времени
  ss = DateTime.second;        // секунды
  mm = DateTime.minute;        // минуты
  hh = DateTime.hour;          // часы
  dd = DateTime.day;           // дата
  mon = DateTime.month;        // месяц
  gg = DateTime.year;          // Год
  if(ss<=10){wesk = 12;}
   else{wesk = DateTime.dayOfWeek;}   // День недели (1 - воскресенье, 7 - суббота)

  temp = sht.getTemperature();  // Температура
  humidity = sht.getHumidity(); // Влажность
  }

  // мигание двоеточия
  if(ss>10){
  if(millis()-times_0<=500){s_tic = 0;}
  if(millis()-times_0>500){s_tic = 1;}
  if(millis()-times_0>1000){times_0=millis();}
  }else{s_tic = 0;}

  

  bud = 1;     // значок будильника
  kolorol = 1; // значок колокольчик
  prog = 1;    // надпись ПРОГ
  timers = 1;  // значок таймер

  if(ss < 5){ a[0]=temp/10;a[1]=temp%10;a[2]=13;a[3]=14;}
  if(ss >= 5 && ss <=10){ a[0]=10;a[1]=11;a[2]=humidity/10;a[3]=humidity%10;}

if(ss > 10){
  times = hh*100+mm;
  a[0]=times/1000;
  a[1]=times/100%10;
  a[2]=times/10%10;
  a[3]=times%10;
}

  delay(100);
  } 


void to_Timer(){ 
    switch(i){
    case 0:  segm_dn=wesk; c=5;  setka();dn(bud); break;
    case 1:  segm=a[0];    c=4;  setka();segment(1); break;
    case 2:  segm=a[1];    c=3;  setka();segment(kolorol); break;
    case 3:  segm=s_tic;   c=2;  setka();tic(); break;
    case 4:  segm=a[2];    c=1;  setka();segment(prog); break;
    case 5:  segm=a[3];    c=0;  setka();segment(timers); break;
  }i++;if(i>5){i=0;}}

void segment(bool hhh){
  switch(segm){                                                                 
    case 0: ch(A_SEG,0);ch(B_SEG,0);ch(C_SEG,0);ch(D_SEG,0);ch(E_SEG,0);ch(F_SEG,0);ch(G_SEG,1);ch(H_SEG,hhh);break;// 0
    case 1: ch(A_SEG,1);ch(B_SEG,0);ch(C_SEG,0);ch(D_SEG,1);ch(E_SEG,1);ch(F_SEG,1);ch(G_SEG,1);ch(H_SEG,hhh);break;// 1
    case 2: ch(A_SEG,0);ch(B_SEG,0);ch(C_SEG,1);ch(D_SEG,0);ch(E_SEG,0);ch(F_SEG,1);ch(G_SEG,0);ch(H_SEG,hhh);break;// 2
    case 3: ch(A_SEG,0);ch(B_SEG,0);ch(C_SEG,0);ch(D_SEG,0);ch(E_SEG,1);ch(F_SEG,1);ch(G_SEG,0);ch(H_SEG,hhh);break;// 3
    case 4: ch(A_SEG,1);ch(B_SEG,0);ch(C_SEG,0);ch(D_SEG,1);ch(E_SEG,1);ch(F_SEG,0);ch(G_SEG,0);ch(H_SEG,hhh);break;// 4
    case 5: ch(A_SEG,0);ch(B_SEG,1);ch(C_SEG,0);ch(D_SEG,0);ch(E_SEG,1);ch(F_SEG,0);ch(G_SEG,0);ch(H_SEG,hhh);break;// 5   
    case 6: ch(A_SEG,0);ch(B_SEG,1);ch(C_SEG,0);ch(D_SEG,0);ch(E_SEG,0);ch(F_SEG,0);ch(G_SEG,0);ch(H_SEG,hhh);break;// 6 
    case 7: ch(A_SEG,0);ch(B_SEG,0);ch(C_SEG,0);ch(D_SEG,1);ch(E_SEG,1);ch(F_SEG,1);ch(G_SEG,1);ch(H_SEG,hhh);break;// 7 
    case 8: ch(A_SEG,0);ch(B_SEG,0);ch(C_SEG,0);ch(D_SEG,0);ch(E_SEG,0);ch(F_SEG,0);ch(G_SEG,0);ch(H_SEG,hhh);break;// 8
    case 9: ch(A_SEG,0);ch(B_SEG,0);ch(C_SEG,0);ch(D_SEG,0);ch(E_SEG,1);ch(F_SEG,0);ch(G_SEG,0);ch(H_SEG,hhh);break;// 9
    case 10: ch(A_SEG,1);ch(B_SEG,0);ch(C_SEG,0);ch(D_SEG,1);ch(E_SEG,0);ch(F_SEG,0);ch(G_SEG,0);ch(H_SEG,hhh);break;// Н
    case 11: ch(A_SEG,1);ch(B_SEG,1);ch(C_SEG,1);ch(D_SEG,1);ch(E_SEG,1);ch(F_SEG,1);ch(G_SEG,0);ch(H_SEG,hhh);break;// -
    case 12: ch(A_SEG,1);ch(B_SEG,1);ch(C_SEG,1);ch(D_SEG,1);ch(E_SEG,1);ch(F_SEG,1);ch(G_SEG,1);ch(H_SEG,hhh);break;// пусто
    case 13: ch(A_SEG,0);ch(B_SEG,0);ch(C_SEG,1);ch(D_SEG,1);ch(E_SEG,1);ch(F_SEG,0);ch(G_SEG,0);ch(H_SEG,hhh);break;// * градус
    case 14: ch(A_SEG,0);ch(B_SEG,1);ch(C_SEG,1);ch(D_SEG,0);ch(E_SEG,0);ch(F_SEG,0);ch(G_SEG,1);ch(H_SEG,hhh);break;// C
  }} 

void dn(bool ind_bud){
  switch(segm_dn){
    // День недели (0 - воскресенье, 6 - суббота)                                                                 
    case 0: ch(A_SEG,1);ch(B_SEG,1);ch(C_SEG,1);ch(D_SEG,0);ch(E_SEG,ind_bud);ch(F_SEG,1);ch(G_SEG,1);ch(H_SEG,1);break;// ВС
    case 1: ch(A_SEG,0);ch(B_SEG,1);ch(C_SEG,1);ch(D_SEG,1);ch(E_SEG,ind_bud);ch(F_SEG,1);ch(G_SEG,1);ch(H_SEG,1);break;// ПН
    case 2: ch(A_SEG,1);ch(B_SEG,1);ch(C_SEG,1);ch(D_SEG,1);ch(E_SEG,ind_bud);ch(F_SEG,1);ch(G_SEG,1);ch(H_SEG,0);break;// ВТ
    case 3: ch(A_SEG,1);ch(B_SEG,1);ch(C_SEG,1);ch(D_SEG,1);ch(E_SEG,ind_bud);ch(F_SEG,0);ch(G_SEG,1);ch(H_SEG,1);break;// СР
    case 4: ch(A_SEG,1);ch(B_SEG,0);ch(C_SEG,1);ch(D_SEG,1);ch(E_SEG,ind_bud);ch(F_SEG,1);ch(G_SEG,1);ch(H_SEG,1);break;// ЧТ   
    case 5: ch(A_SEG,1);ch(B_SEG,1);ch(C_SEG,0);ch(D_SEG,1);ch(E_SEG,ind_bud);ch(F_SEG,1);ch(G_SEG,1);ch(H_SEG,1);break;// ПТ 
    case 6: ch(A_SEG,1);ch(B_SEG,1);ch(C_SEG,1);ch(D_SEG,1);ch(E_SEG,ind_bud);ch(F_SEG,1);ch(G_SEG,0);ch(H_SEG,1);break;// СБ 
    case 12: ch(A_SEG,1);ch(B_SEG,1);ch(C_SEG,1);ch(D_SEG,1);ch(E_SEG,ind_bud);ch(F_SEG,1);ch(G_SEG,1);ch(H_SEG,1);break;// пусто
  }}

void tic(){
  switch(s_tic){                                                             
    case 0: ch(A_SEG,1);ch(B_SEG,1);ch(C_SEG,1);ch(D_SEG,1);ch(E_SEG,1);ch(F_SEG,1);ch(G_SEG,1);ch(H_SEG,1);break;// _
    case 1: ch(A_SEG,1);ch(B_SEG,1);ch(C_SEG,1);ch(D_SEG,1);ch(E_SEG,1);ch(F_SEG,1);ch(G_SEG,1);ch(H_SEG,0);break;// :
  }}     

void setka(){
  switch(c){                                                             
    case 0:ch(C1_SET,0);ch(C2_SET,1);ch(C3_SET,1);ch(C4_SET,1);ch(C5_SET,1);ch(C6_SET,1);break; 
    case 1:ch(C1_SET,1);ch(C2_SET,0);ch(C3_SET,1);ch(C4_SET,1);ch(C5_SET,1);ch(C6_SET,1);break; 
    case 2:ch(C1_SET,1);ch(C2_SET,1);ch(C3_SET,0);ch(C4_SET,1);ch(C5_SET,1);ch(C6_SET,1);break; 
    case 3:ch(C1_SET,1);ch(C2_SET,1);ch(C3_SET,1);ch(C4_SET,0);ch(C5_SET,1);ch(C6_SET,1);break; 
    case 4:ch(C1_SET,1);ch(C2_SET,1);ch(C3_SET,1);ch(C4_SET,1);ch(C5_SET,0);ch(C6_SET,1);break; 
    case 5:ch(C1_SET,1);ch(C2_SET,1);ch(C3_SET,1);ch(C4_SET,1);ch(C5_SET,1);ch(C6_SET,0);break; 
  }} 

void ch(int pin, int logic){digitalWrite(pin,logic);}

66

Re: Часы+будильник на П543 (ИЛЦ5-4/7М)

При первом включении на 1 секунду  появляются  часы. далее темп,влаж. потом часы. постоянно работают.

67

Re: Часы+будильник на П543 (ИЛЦ5-4/7М)

а спустя я думаю несколько минут показывает темп,влаж. потом часы.

68

Re: Часы+будильник на П543 (ИЛЦ5-4/7М)

Каждую минуту переходит с данных сенсора на часы.

69

Re: Часы+будильник на П543 (ИЛЦ5-4/7М)

Заметил.
В последнем разряде. слева направа. подсвечиваются сегменты. http://forum.rcl-radio.ru/uploads/images/2025/03/a5d2541b3dc7ca8c25f7e5c0e3856fa3.jpeg

70

Re: Часы+будильник на П543 (ИЛЦ5-4/7М)

В последнем разряде. слева направа. подсвечиваются сегменты.

Можно попробовать устранить этот эффект программно

#define  C1_SET  0
#define  C2_SET  1
#define  C3_SET  2
#define  C4_SET  3
#define  C5_SET  4
#define  C6_SET  5

#define  A_SEG   6
#define  B_SEG   7
#define  C_SEG   8
#define  D_SEG   9
#define  E_SEG  10
#define  F_SEG  11
#define  G_SEG  12
#define  H_SEG  13

#include <MsTimer2.h>   // // http://rcl-radio.ru/wp-content/uploads/2018/11/MsTimer2.zip  
#include <Wire.h>
#include <DS3231.h> //https://github.com/jarzebski/Arduino-DS3231/archive/master.zip
#include <SHT21.h>  // http://rcl-radio.ru/wp-content/uploads/2025/03/SHT21-Arduino-Library-master.zip
DS3231 clock;
RTCDateTime DateTime;
SHT21 sht; 

int i,segm,c,segm_dn, ss,mm,hh,dd,mon,gg,wesk,times;
int a[4],s_tic, bud,kolorol, prog, timers;
int fff;
unsigned long times_0, times_1, times_2;
int temp,humidity;


void setup(){
MsTimer2::set(4, to_Timer);MsTimer2::start(); // timer2 period 4 ms
pinMode(C1_SET,OUTPUT); pinMode(C2_SET,OUTPUT);pinMode(C3_SET,OUTPUT);
pinMode(C4_SET,OUTPUT);pinMode(C5_SET,OUTPUT);pinMode(C6_SET,OUTPUT);
pinMode(A_SEG,OUTPUT); pinMode(B_SEG,OUTPUT);pinMode(C_SEG,OUTPUT);
pinMode(D_SEG,OUTPUT);pinMode(E_SEG,OUTPUT);pinMode(F_SEG,OUTPUT);
pinMode(G_SEG,OUTPUT);pinMode(H_SEG,OUTPUT);
Wire.begin();clock.begin();
// clock.setDateTime(__DATE__, __TIME__); // Устанавливаем время на часах, основываясь на времени компиляции скетча
  }

void loop(){
  if(millis()-times_1>=1000){ times_1=millis(); // считываем время с ds3231 каждые 1000 мс
  DateTime=clock.getDateTime();// опрос времени
  ss = DateTime.second;        // секунды
  mm = DateTime.minute;        // минуты
  hh = DateTime.hour;          // часы
  dd = DateTime.day;           // дата
  mon = DateTime.month;        // месяц
  gg = DateTime.year;          // Год
  if(ss<=10){wesk = 12;}
   else{wesk = DateTime.dayOfWeek;}   // День недели (1 - воскресенье, 7 - суббота)

  temp = sht.getTemperature();  // Температура
  humidity = sht.getHumidity(); // Влажность
  }

  // мигание двоеточия
  if(ss>10){
  if(millis()-times_0<=500){s_tic = 0;}
  if(millis()-times_0>500){s_tic = 1;}
  if(millis()-times_0>1000){times_0=millis();}
  }else{s_tic = 0;}

  

  bud = 1;     // значок будильника
  kolorol = 1; // значок колокольчик
  prog = 1;    // надпись ПРОГ
  timers = 1;  // значок таймер

  if(ss < 5){ a[0]=temp/10;a[1]=temp%10;a[2]=13;a[3]=14;}
  if(ss >= 5 && ss <=10){ a[0]=10;a[1]=11;a[2]=humidity/10;a[3]=humidity%10;}

if(ss > 10){
  times = hh*100+mm;
  a[0]=times/1000;
  a[1]=times/100%10;
  a[2]=times/10%10;
  a[3]=times%10;
}

  delay(100);
  } 


void to_Timer(){ 
    switch(i){
    case 0:  segm=12; setka();segment(1); delayMicroseconds(500); segm_dn=wesk; c=5;  setka();dn(bud); break;
    case 1:  segm=12; setka();segment(1); delayMicroseconds(500); segm=a[0];    c=4;  setka();segment(1); break;
    case 2:  segm=12; setka();segment(1); delayMicroseconds(500); segm=a[1];    c=3;  setka();segment(kolorol); break;
    case 3:  segm=12; setka();segment(1); delayMicroseconds(500); segm=s_tic;   c=2;  setka();tic(); break;
    case 4:  segm=12; setka();segment(1); delayMicroseconds(500); segm=a[2];    c=1;  setka();segment(prog); break;
    case 5:  segm=12; setka();segment(1); delayMicroseconds(500); segm=a[3];    c=0;  setka();segment(timers); break;
  }i++;if(i>5){i=0;}}

void segment(bool hhh){
  switch(segm){                                                                 
    case 0: ch(A_SEG,0);ch(B_SEG,0);ch(C_SEG,0);ch(D_SEG,0);ch(E_SEG,0);ch(F_SEG,0);ch(G_SEG,1);ch(H_SEG,hhh);break;// 0
    case 1: ch(A_SEG,1);ch(B_SEG,0);ch(C_SEG,0);ch(D_SEG,1);ch(E_SEG,1);ch(F_SEG,1);ch(G_SEG,1);ch(H_SEG,hhh);break;// 1
    case 2: ch(A_SEG,0);ch(B_SEG,0);ch(C_SEG,1);ch(D_SEG,0);ch(E_SEG,0);ch(F_SEG,1);ch(G_SEG,0);ch(H_SEG,hhh);break;// 2
    case 3: ch(A_SEG,0);ch(B_SEG,0);ch(C_SEG,0);ch(D_SEG,0);ch(E_SEG,1);ch(F_SEG,1);ch(G_SEG,0);ch(H_SEG,hhh);break;// 3
    case 4: ch(A_SEG,1);ch(B_SEG,0);ch(C_SEG,0);ch(D_SEG,1);ch(E_SEG,1);ch(F_SEG,0);ch(G_SEG,0);ch(H_SEG,hhh);break;// 4
    case 5: ch(A_SEG,0);ch(B_SEG,1);ch(C_SEG,0);ch(D_SEG,0);ch(E_SEG,1);ch(F_SEG,0);ch(G_SEG,0);ch(H_SEG,hhh);break;// 5   
    case 6: ch(A_SEG,0);ch(B_SEG,1);ch(C_SEG,0);ch(D_SEG,0);ch(E_SEG,0);ch(F_SEG,0);ch(G_SEG,0);ch(H_SEG,hhh);break;// 6 
    case 7: ch(A_SEG,0);ch(B_SEG,0);ch(C_SEG,0);ch(D_SEG,1);ch(E_SEG,1);ch(F_SEG,1);ch(G_SEG,1);ch(H_SEG,hhh);break;// 7 
    case 8: ch(A_SEG,0);ch(B_SEG,0);ch(C_SEG,0);ch(D_SEG,0);ch(E_SEG,0);ch(F_SEG,0);ch(G_SEG,0);ch(H_SEG,hhh);break;// 8
    case 9: ch(A_SEG,0);ch(B_SEG,0);ch(C_SEG,0);ch(D_SEG,0);ch(E_SEG,1);ch(F_SEG,0);ch(G_SEG,0);ch(H_SEG,hhh);break;// 9
    case 10: ch(A_SEG,1);ch(B_SEG,0);ch(C_SEG,0);ch(D_SEG,1);ch(E_SEG,0);ch(F_SEG,0);ch(G_SEG,0);ch(H_SEG,hhh);break;// Н
    case 11: ch(A_SEG,1);ch(B_SEG,1);ch(C_SEG,1);ch(D_SEG,1);ch(E_SEG,1);ch(F_SEG,1);ch(G_SEG,0);ch(H_SEG,hhh);break;// -
    case 12: ch(A_SEG,1);ch(B_SEG,1);ch(C_SEG,1);ch(D_SEG,1);ch(E_SEG,1);ch(F_SEG,1);ch(G_SEG,1);ch(H_SEG,hhh);break;// пусто
    case 13: ch(A_SEG,0);ch(B_SEG,0);ch(C_SEG,1);ch(D_SEG,1);ch(E_SEG,1);ch(F_SEG,0);ch(G_SEG,0);ch(H_SEG,hhh);break;// * градус
    case 14: ch(A_SEG,0);ch(B_SEG,1);ch(C_SEG,1);ch(D_SEG,0);ch(E_SEG,0);ch(F_SEG,0);ch(G_SEG,1);ch(H_SEG,hhh);break;// C
  }} 

void dn(bool ind_bud){
  switch(segm_dn){
    // День недели (0 - воскресенье, 6 - суббота)                                                                 
    case 0: ch(A_SEG,1);ch(B_SEG,1);ch(C_SEG,1);ch(D_SEG,0);ch(E_SEG,ind_bud);ch(F_SEG,1);ch(G_SEG,1);ch(H_SEG,1);break;// ВС
    case 1: ch(A_SEG,0);ch(B_SEG,1);ch(C_SEG,1);ch(D_SEG,1);ch(E_SEG,ind_bud);ch(F_SEG,1);ch(G_SEG,1);ch(H_SEG,1);break;// ПН
    case 2: ch(A_SEG,1);ch(B_SEG,1);ch(C_SEG,1);ch(D_SEG,1);ch(E_SEG,ind_bud);ch(F_SEG,1);ch(G_SEG,1);ch(H_SEG,0);break;// ВТ
    case 3: ch(A_SEG,1);ch(B_SEG,1);ch(C_SEG,1);ch(D_SEG,1);ch(E_SEG,ind_bud);ch(F_SEG,0);ch(G_SEG,1);ch(H_SEG,1);break;// СР
    case 4: ch(A_SEG,1);ch(B_SEG,0);ch(C_SEG,1);ch(D_SEG,1);ch(E_SEG,ind_bud);ch(F_SEG,1);ch(G_SEG,1);ch(H_SEG,1);break;// ЧТ   
    case 5: ch(A_SEG,1);ch(B_SEG,1);ch(C_SEG,0);ch(D_SEG,1);ch(E_SEG,ind_bud);ch(F_SEG,1);ch(G_SEG,1);ch(H_SEG,1);break;// ПТ 
    case 6: ch(A_SEG,1);ch(B_SEG,1);ch(C_SEG,1);ch(D_SEG,1);ch(E_SEG,ind_bud);ch(F_SEG,1);ch(G_SEG,0);ch(H_SEG,1);break;// СБ 
    case 12: ch(A_SEG,1);ch(B_SEG,1);ch(C_SEG,1);ch(D_SEG,1);ch(E_SEG,ind_bud);ch(F_SEG,1);ch(G_SEG,1);ch(H_SEG,1);break;// пусто
  }}

void tic(){
  switch(s_tic){                                                             
    case 0: ch(A_SEG,1);ch(B_SEG,1);ch(C_SEG,1);ch(D_SEG,1);ch(E_SEG,1);ch(F_SEG,1);ch(G_SEG,1);ch(H_SEG,1);break;// _
    case 1: ch(A_SEG,1);ch(B_SEG,1);ch(C_SEG,1);ch(D_SEG,1);ch(E_SEG,1);ch(F_SEG,1);ch(G_SEG,1);ch(H_SEG,0);break;// :
  }}     

void setka(){
  switch(c){                                                             
    case 0:ch(C1_SET,0);ch(C2_SET,1);ch(C3_SET,1);ch(C4_SET,1);ch(C5_SET,1);ch(C6_SET,1);break; 
    case 1:ch(C1_SET,1);ch(C2_SET,0);ch(C3_SET,1);ch(C4_SET,1);ch(C5_SET,1);ch(C6_SET,1);break; 
    case 2:ch(C1_SET,1);ch(C2_SET,1);ch(C3_SET,0);ch(C4_SET,1);ch(C5_SET,1);ch(C6_SET,1);break; 
    case 3:ch(C1_SET,1);ch(C2_SET,1);ch(C3_SET,1);ch(C4_SET,0);ch(C5_SET,1);ch(C6_SET,1);break; 
    case 4:ch(C1_SET,1);ch(C2_SET,1);ch(C3_SET,1);ch(C4_SET,1);ch(C5_SET,0);ch(C6_SET,1);break; 
    case 5:ch(C1_SET,1);ch(C2_SET,1);ch(C3_SET,1);ch(C4_SET,1);ch(C5_SET,1);ch(C6_SET,0);break; 
  }} 

void ch(int pin, int logic){digitalWrite(pin,logic);}

71

Re: Часы+будильник на П543 (ИЛЦ5-4/7М)

Каждую минуту переходит с данных сенсора на часы.

Оставить так или необходимо изменить порядок и время вывода показания сенсора на индикатор?

72

Re: Часы+будильник на П543 (ИЛЦ5-4/7М)

liman324 пишет:

Каждую минуту переходит с данных сенсора на часы.

Оставить так или необходимо изменить порядок и время вывода показания сенсора на индикатор?

Проверил. Засветка в последнем разряде  сегмента G осталась немного. Давайте пока оставим как есть. Я соберу другой блок питания. С переменным напряжением накала. Возможно что то изменится.

переход часы- данные сенсора оставим как есть. каждую минуту. и между темп- влаж 10 секунд. Но это все, как было задумано в режиме авто. который будет меняться кнопкой.

73

Re: Часы+будильник на П543 (ИЛЦ5-4/7М)

Хорошо бы иметь возможность менять в скетче параметры часы-сенсор.

74

Re: Часы+будильник на П543 (ИЛЦ5-4/7М)

В 00:00 день недели не перешел с субботы на воскресенье. На данный момент ничего не  светиться .

75

Re: Часы+будильник на П543 (ИЛЦ5-4/7М)

Тестирование.
Режим авто
переменная int avto = 1; вывод показаний сенсора
переменная int avto = 0; вывод показаний только часов

Устранение подсветки, переменная brig = 500; увеличить значение до до исчезновения подсветки. В дальнейшем эту переменную можно использовать как регулятор яркости подсветки

Проверка работы индикаторов

bud = 1;     // значок будильника
  kolorol = 1; // значок колокольчик
  prog = 1;    // надпись ПРОГ
  timers = 1;  // значок таймер

будильник колокольчик ПРОГ и значок таймер не горят

bud = 0;     // значок будильника
  kolorol = 0; // значок колокольчик
  prog = 0;    // надпись ПРОГ
  timers = 0;  // значок таймер

все значки горят

#define  C1_SET  0
#define  C2_SET  1
#define  C3_SET  2
#define  C4_SET  3
#define  C5_SET  4
#define  C6_SET  5

#define  A_SEG   6
#define  B_SEG   7
#define  C_SEG   8
#define  D_SEG   9
#define  E_SEG  10
#define  F_SEG  11
#define  G_SEG  12
#define  H_SEG  13

#include <MsTimer2.h>   // // http://rcl-radio.ru/wp-content/uploads/2018/11/MsTimer2.zip  
#include <Wire.h>
#include <DS3231.h> //https://github.com/jarzebski/Arduino-DS3231/archive/master.zip
#include <SHT21.h>  // http://rcl-radio.ru/wp-content/uploads/2025/03/SHT21-Arduino-Library-master.zip
DS3231 clock;
RTCDateTime DateTime;
SHT21 sht; 

int i,segm,c,segm_dn, ss,mm,hh,dd,mon,gg,wesk,times;
int a[4],s_tic, bud,kolorol, prog, timers;
int fff;
unsigned long times_0, times_1, times_2;
int temp,humidity;
bool avto=1;
int brig = 500;


void setup(){
MsTimer2::set(4, to_Timer);MsTimer2::start(); // timer2 period 4 ms
pinMode(C1_SET,OUTPUT); pinMode(C2_SET,OUTPUT);pinMode(C3_SET,OUTPUT);
pinMode(C4_SET,OUTPUT);pinMode(C5_SET,OUTPUT);pinMode(C6_SET,OUTPUT);
pinMode(A_SEG,OUTPUT); pinMode(B_SEG,OUTPUT);pinMode(C_SEG,OUTPUT);
pinMode(D_SEG,OUTPUT);pinMode(E_SEG,OUTPUT);pinMode(F_SEG,OUTPUT);
pinMode(G_SEG,OUTPUT);pinMode(H_SEG,OUTPUT);
Wire.begin();clock.begin();
// clock.setDateTime(__DATE__, __TIME__); // Устанавливаем время на часах, основываясь на времени компиляции скетча
  }

void loop(){
  if(millis()-times_1>=1000){ times_1=millis(); // считываем время с ds3231 каждые 1000 мс
  DateTime=clock.getDateTime();// опрос времени
  ss = DateTime.second;        // секунды
  mm = DateTime.minute;        // минуты
  hh = DateTime.hour;          // часы
  dd = DateTime.day;           // дата
  mon = DateTime.month;        // месяц
  gg = DateTime.year;          // Год
  if(ss<=10 && avto==1){wesk = 12;}
   else{wesk = DateTime.dayOfWeek;}   // День недели (1 - воскресенье, 7 - суббота)

  temp = sht.getTemperature();  // Температура
  humidity = sht.getHumidity(); // Влажность
  }

  // мигание двоеточия
  if(avto==1){if(ss>10){mig_dv();}else{s_tic = 0;}} else{mig_dv();}


  bud = 1;     // значок будильника
  kolorol = 1; // значок колокольчик
  prog = 1;    // надпись ПРОГ
  timers = 1;  // значок таймер

  if(avto==1){
  if(ss < 5){ a[0]=temp/10;a[1]=temp%10;a[2]=13;a[3]=14;} // вывод темпер.
  if(ss >= 5 && ss <=10){ a[0]=10;a[1]=11;a[2]=humidity/10;a[3]=humidity%10;} // вывод влажн.
  if(ss > 10){timm();} // вывод время
  }else{timm();} // если авто = 0, то выводить только время

  delay(100);
  } 


void to_Timer(){ 
    switch(i){
    case 0:  segm=12; setka();segment(1); delayMicroseconds(brig); segm_dn=wesk; c=5;  setka();dn(bud); break;
    case 1:  segm=12; setka();segment(1); delayMicroseconds(brig); segm=a[0];    c=4;  setka();segment(1); break;
    case 2:  segm=12; setka();segment(1); delayMicroseconds(brig); segm=a[1];    c=3;  setka();segment(kolorol); break;
    case 3:  segm=12; setka();segment(1); delayMicroseconds(brig); segm=s_tic;   c=2;  setka();tic(); break;
    case 4:  segm=12; setka();segment(1); delayMicroseconds(brig); segm=a[2];    c=1;  setka();segment(prog); break;
    case 5:  segm=12; setka();segment(1); delayMicroseconds(brig); segm=a[3];    c=0;  setka();segment(timers); break;
  }i++;if(i>5){i=0;}}

void segment(bool hhh){
  switch(segm){                                                                 
    case 0: ch(A_SEG,0);ch(B_SEG,0);ch(C_SEG,0);ch(D_SEG,0);ch(E_SEG,0);ch(F_SEG,0);ch(G_SEG,1);ch(H_SEG,hhh);break;// 0
    case 1: ch(A_SEG,1);ch(B_SEG,0);ch(C_SEG,0);ch(D_SEG,1);ch(E_SEG,1);ch(F_SEG,1);ch(G_SEG,1);ch(H_SEG,hhh);break;// 1
    case 2: ch(A_SEG,0);ch(B_SEG,0);ch(C_SEG,1);ch(D_SEG,0);ch(E_SEG,0);ch(F_SEG,1);ch(G_SEG,0);ch(H_SEG,hhh);break;// 2
    case 3: ch(A_SEG,0);ch(B_SEG,0);ch(C_SEG,0);ch(D_SEG,0);ch(E_SEG,1);ch(F_SEG,1);ch(G_SEG,0);ch(H_SEG,hhh);break;// 3
    case 4: ch(A_SEG,1);ch(B_SEG,0);ch(C_SEG,0);ch(D_SEG,1);ch(E_SEG,1);ch(F_SEG,0);ch(G_SEG,0);ch(H_SEG,hhh);break;// 4
    case 5: ch(A_SEG,0);ch(B_SEG,1);ch(C_SEG,0);ch(D_SEG,0);ch(E_SEG,1);ch(F_SEG,0);ch(G_SEG,0);ch(H_SEG,hhh);break;// 5   
    case 6: ch(A_SEG,0);ch(B_SEG,1);ch(C_SEG,0);ch(D_SEG,0);ch(E_SEG,0);ch(F_SEG,0);ch(G_SEG,0);ch(H_SEG,hhh);break;// 6 
    case 7: ch(A_SEG,0);ch(B_SEG,0);ch(C_SEG,0);ch(D_SEG,1);ch(E_SEG,1);ch(F_SEG,1);ch(G_SEG,1);ch(H_SEG,hhh);break;// 7 
    case 8: ch(A_SEG,0);ch(B_SEG,0);ch(C_SEG,0);ch(D_SEG,0);ch(E_SEG,0);ch(F_SEG,0);ch(G_SEG,0);ch(H_SEG,hhh);break;// 8
    case 9: ch(A_SEG,0);ch(B_SEG,0);ch(C_SEG,0);ch(D_SEG,0);ch(E_SEG,1);ch(F_SEG,0);ch(G_SEG,0);ch(H_SEG,hhh);break;// 9
    case 10: ch(A_SEG,1);ch(B_SEG,0);ch(C_SEG,0);ch(D_SEG,1);ch(E_SEG,0);ch(F_SEG,0);ch(G_SEG,0);ch(H_SEG,hhh);break;// Н
    case 11: ch(A_SEG,1);ch(B_SEG,1);ch(C_SEG,1);ch(D_SEG,1);ch(E_SEG,1);ch(F_SEG,1);ch(G_SEG,0);ch(H_SEG,hhh);break;// -
    case 12: ch(A_SEG,1);ch(B_SEG,1);ch(C_SEG,1);ch(D_SEG,1);ch(E_SEG,1);ch(F_SEG,1);ch(G_SEG,1);ch(H_SEG,hhh);break;// пусто
    case 13: ch(A_SEG,0);ch(B_SEG,0);ch(C_SEG,1);ch(D_SEG,1);ch(E_SEG,1);ch(F_SEG,0);ch(G_SEG,0);ch(H_SEG,hhh);break;// * градус
    case 14: ch(A_SEG,0);ch(B_SEG,1);ch(C_SEG,1);ch(D_SEG,0);ch(E_SEG,0);ch(F_SEG,0);ch(G_SEG,1);ch(H_SEG,hhh);break;// C
  }} 

void dn(bool ind_bud){
  switch(segm_dn){
    // День недели (0 - воскресенье, 6 - суббота)                                                                 
    case 1: ch(A_SEG,1);ch(B_SEG,1);ch(C_SEG,1);ch(D_SEG,0);ch(E_SEG,ind_bud);ch(F_SEG,1);ch(G_SEG,1);ch(H_SEG,1);break;// ВС
    case 2: ch(A_SEG,0);ch(B_SEG,1);ch(C_SEG,1);ch(D_SEG,1);ch(E_SEG,ind_bud);ch(F_SEG,1);ch(G_SEG,1);ch(H_SEG,1);break;// ПН
    case 3: ch(A_SEG,1);ch(B_SEG,1);ch(C_SEG,1);ch(D_SEG,1);ch(E_SEG,ind_bud);ch(F_SEG,1);ch(G_SEG,1);ch(H_SEG,0);break;// ВТ
    case 4: ch(A_SEG,1);ch(B_SEG,1);ch(C_SEG,1);ch(D_SEG,1);ch(E_SEG,ind_bud);ch(F_SEG,0);ch(G_SEG,1);ch(H_SEG,1);break;// СР
    case 5: ch(A_SEG,1);ch(B_SEG,0);ch(C_SEG,1);ch(D_SEG,1);ch(E_SEG,ind_bud);ch(F_SEG,1);ch(G_SEG,1);ch(H_SEG,1);break;// ЧТ   
    case 6: ch(A_SEG,1);ch(B_SEG,1);ch(C_SEG,0);ch(D_SEG,1);ch(E_SEG,ind_bud);ch(F_SEG,1);ch(G_SEG,1);ch(H_SEG,1);break;// ПТ 
    case 7: ch(A_SEG,1);ch(B_SEG,1);ch(C_SEG,1);ch(D_SEG,1);ch(E_SEG,ind_bud);ch(F_SEG,1);ch(G_SEG,0);ch(H_SEG,1);break;// СБ 
    case 12: ch(A_SEG,1);ch(B_SEG,1);ch(C_SEG,1);ch(D_SEG,1);ch(E_SEG,ind_bud);ch(F_SEG,1);ch(G_SEG,1);ch(H_SEG,1);break;// пусто
  }}

void tic(){
  switch(s_tic){                                                             
    case 0: ch(A_SEG,1);ch(B_SEG,1);ch(C_SEG,1);ch(D_SEG,1);ch(E_SEG,1);ch(F_SEG,1);ch(G_SEG,1);ch(H_SEG,1);break;// _
    case 1: ch(A_SEG,1);ch(B_SEG,1);ch(C_SEG,1);ch(D_SEG,1);ch(E_SEG,1);ch(F_SEG,1);ch(G_SEG,1);ch(H_SEG,0);break;// :
  }}     

void setka(){
  switch(c){                                                             
    case 0:ch(C1_SET,0);ch(C2_SET,1);ch(C3_SET,1);ch(C4_SET,1);ch(C5_SET,1);ch(C6_SET,1);break; 
    case 1:ch(C1_SET,1);ch(C2_SET,0);ch(C3_SET,1);ch(C4_SET,1);ch(C5_SET,1);ch(C6_SET,1);break; 
    case 2:ch(C1_SET,1);ch(C2_SET,1);ch(C3_SET,0);ch(C4_SET,1);ch(C5_SET,1);ch(C6_SET,1);break; 
    case 3:ch(C1_SET,1);ch(C2_SET,1);ch(C3_SET,1);ch(C4_SET,0);ch(C5_SET,1);ch(C6_SET,1);break; 
    case 4:ch(C1_SET,1);ch(C2_SET,1);ch(C3_SET,1);ch(C4_SET,1);ch(C5_SET,0);ch(C6_SET,1);break; 
    case 5:ch(C1_SET,1);ch(C2_SET,1);ch(C3_SET,1);ch(C4_SET,1);ch(C5_SET,1);ch(C6_SET,0);break; 
  }} 

void ch(int pin, int logic){digitalWrite(pin,logic);}

void mig_dv(){if(millis()-times_0<=500){s_tic = 0;}if(millis()-times_0>500){s_tic = 1;}if(millis()-times_0>1000){times_0=millis();}}
void timm(){times = hh*100+mm;a[0]=times/1000;a[1]=times/100%10;a[2]=times/10%10;a[3]=times%10;}