Страницы Назад 1 2 3 4 5 6 7 Далее
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
forum.rcl-radio.ru → Тестирование скетчей → Часы+будильник на П543 (ИЛЦ5-4/7М)
Последний скеч. Засветка видна совсем немного.
переменная int avto = 1; вывод показаний сенсора
переменная int avto = 0; вывод показаний только часов
скажите этими параметрами можно изменять продолжительность, сколко времени будет на индикаторе темп-влаж-часы?
переменная int avto = 1; вывод показаний сенсора
переменная int avto = 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){
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 7: 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 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;}
Дни недели тест/ когда будут кнопки, смогу проверить переход дней недели.
Кнопки
Предлагаю свою версию управления
1. Кнопка ПРОГ - короткое нажатие переключает режим авто, при этом если выводится только время горит значок
2. Кнопка ПРОГ удерживаем и нажимаем кнопку ПЛЮС, на индикаторе загорается значок будильника, вместо времени выводится время будильника, при этом кнопкой ПРОГ можно переходить с часов на минуты, а кнопками ПЛЮС МИНУС менять время часов и минут будильника. В режиме коррекции времени будильника изменяемый параметр часы или минуты будут мигать.
Для выхода из режима будильника просто подождать 10 секунд не нажимая ни на одну кнопку.
3. Кнопка ПРОГ удерживаем и нажимаем кнопку МИНУС, на индикаторе загорается значок ПРГ.
Далее нажимаем кнопку ПРОГ для перехода в меню установки параметров часов, вот несколько параметров и их отображение на индикаторе:
Р1:00 - установка минут
Р2:00 - установка часов
Р3:00 - установка дата
Р4:00 - установка месяц
Р5:00 - установка год
tt:05 - время показаний температуры
HH:05 - время показаний влажности
dd:05 - время показаний дата месяц (если 0 то не выводить)
Для выхода из меню так же ждем 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
// Кнопки
#define PROG A0 // ПРОГ
#define UP A1 // ПЛЮС
#define DW A2 // МИНУС
#include <MsTimer2.h> // // http://rcl-radio.ru/wp-content/uploads/2018/11/MsTimer2.zip
#include <Wire.h>
#include <EEPROM.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;
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);
pinMode(PROG,INPUT_PULLUP);pinMode(UP,INPUT_PULLUP);pinMode(DW,INPUT_PULLUP);
Wire.begin();clock.begin();
if(EEPROM.read(100)!=0){for(int i=0;i<101;i++){EEPROM.update(i,0);}}// очистка памяти при первом включении
avto = EEPROM.read(0);
// clock.setDateTime(__DATE__, __TIME__); // Устанавливаем время на часах, основываясь на времени компиляции скетча
}
void loop(){
if(digitalRead(PROG)==LOW && digitalRead(UP)==HIGH && digitalRead(DW)==HIGH && avto==0){avto=1;timers=1;EEPROM.update(0,avto);delay(200);}
if(digitalRead(PROG)==LOW && digitalRead(UP)==HIGH && digitalRead(DW)==HIGH && avto==1){avto=0;timers=0;EEPROM.update(0,avto);delay(200);}
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; // надпись ПРОГ
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){
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 7: 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 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;}
При включении уже горит знакчок прог. но очень тускло. при нажатии коротко - прог гаснет выводится темп-влаж.каждую минуту.
Вот этот значок горит тускло
Вот этот значок горит тускло
да
Может дело в индикаторе , этот значок и раньше горел тускло
Может дело в индикаторе , этот значок и раньше горел тускло
Не думаю.
Этот код постоянно будет засвечивать этот значок, посмотрите яркость, та же или нет
// Подключение сетки
#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
// Кнопки
#define PROG A0 // ПРОГ
#define UP A1 // ПЛЮС
#define DW A2 // МИНУС
#include <MsTimer2.h> // // http://rcl-radio.ru/wp-content/uploads/2018/11/MsTimer2.zip
#include <Wire.h>
#include <EEPROM.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;
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);
pinMode(PROG,INPUT_PULLUP);pinMode(UP,INPUT_PULLUP);pinMode(DW,INPUT_PULLUP);
Wire.begin();clock.begin();
if(EEPROM.read(100)!=0){for(int i=0;i<101;i++){EEPROM.update(i,0);}}// очистка памяти при первом включении
avto = EEPROM.read(0);
// clock.setDateTime(__DATE__, __TIME__); // Устанавливаем время на часах, основываясь на времени компиляции скетча
}
void loop(){
if(digitalRead(PROG)==LOW && digitalRead(UP)==HIGH && digitalRead(DW)==HIGH && avto==0){avto=1;timers=1;EEPROM.update(0,avto);delay(200);}
if(digitalRead(PROG)==LOW && digitalRead(UP)==HIGH && digitalRead(DW)==HIGH && avto==1){avto=0;timers=0;EEPROM.update(0,avto);delay(200);}
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 = 0;
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){
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 7: 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 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;}
Освещение в комнате было отключено.
Как то так.
Та же яркость
Та же яркость
при освещении в комнате вообще не видно значка ... и еще. можете скинуть скетч, чтобы вторник загорелся. что то я вообще не видел его включенным..
это мои реальные часы электроника 7 .21. 01. индикатор немного другой (ИЛЦ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
// Кнопки
#define PROG A0 // ПРОГ
#define UP A1 // ПЛЮС
#define DW A2 // МИНУС
#include <MsTimer2.h> // // http://rcl-radio.ru/wp-content/uploads/2018/11/MsTimer2.zip
#include <Wire.h>
#include <EEPROM.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;
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);
pinMode(PROG,INPUT_PULLUP);pinMode(UP,INPUT_PULLUP);pinMode(DW,INPUT_PULLUP);
Wire.begin();clock.begin();
if(EEPROM.read(100)!=0){for(int i=0;i<101;i++){EEPROM.update(i,0);}}// очистка памяти при первом включении
avto = EEPROM.read(0);
// clock.setDateTime(__DATE__, __TIME__); // Устанавливаем время на часах, основываясь на времени компиляции скетча
}
void loop(){
if(digitalRead(PROG)==LOW && digitalRead(UP)==HIGH && digitalRead(DW)==HIGH && avto==0){avto=1;timers=1;EEPROM.update(0,avto);delay(200);}
if(digitalRead(PROG)==LOW && digitalRead(UP)==HIGH && digitalRead(DW)==HIGH && avto==1){avto=0;timers=0;EEPROM.update(0,avto);delay(200);}
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(); // Влажность
}
wesk = 2;
// мигание двоеточия
if(avto==1){if(ss>10){mig_dv();}else{s_tic = 0;}} else{mig_dv();}
bud = 1; // значок будильника
kolorol = 1; // значок колокольчик
prog = 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){
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 7: 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 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;}
Спасибо Вам. ВТ работает. ) Даже не знаю что делать с круглым значком. С Уважением.
А перемычка стоит на сегменте Н
Перемычка есть.
Так ярче
// Подключение сетки
#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
// Кнопки
#define PROG A0 // ПРОГ
#define UP A1 // ПЛЮС
#define DW A2 // МИНУС
#include <MsTimer2.h> // // http://rcl-radio.ru/wp-content/uploads/2018/11/MsTimer2.zip
#include <Wire.h>
#include <EEPROM.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;
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);
pinMode(PROG,INPUT_PULLUP);pinMode(UP,INPUT_PULLUP);pinMode(DW,INPUT_PULLUP);
Wire.begin();clock.begin();
if(EEPROM.read(100)!=0){for(int i=0;i<101;i++){EEPROM.update(i,0);}}// очистка памяти при первом включении
avto = EEPROM.read(0);
// clock.setDateTime(__DATE__, __TIME__); // Устанавливаем время на часах, основываясь на времени компиляции скетча
}
void loop(){
if(digitalRead(PROG)==LOW && digitalRead(UP)==HIGH && digitalRead(DW)==HIGH && avto==0){avto=1;timers=1;EEPROM.update(0,avto);delay(200);}
if(digitalRead(PROG)==LOW && digitalRead(UP)==HIGH && digitalRead(DW)==HIGH && avto==1){avto=0;timers=0;EEPROM.update(0,avto);delay(200);}
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; // надпись ПРОГ
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=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){
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 7: 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 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;}
Двоеточие-колокольчик-ПРГ и Круг они все связаны. Возможно из за этого круг светиться тускло.
Красный люминофор в принципе тусклее зеленого.
Если у Вас питание катода от постоянного напряжения то это так же может влиять на яркость, старший разряд индикатора может гореть ярче чем младший и наоборот.
forum.rcl-radio.ru → Тестирование скетчей → Часы+будильник на П543 (ИЛЦ5-4/7М)
Форум работает на PunBB, при поддержке Informer Technologies, Inc
|