176

Re: Ретро часы на ИВ-6

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

177 (2022-01-19 18:58:26 отредактировано levor)

Re: Ретро часы на ИВ-6

Здравствуйте.Захотел собрать часы,собрал вроде все работает но после загрузки скеча работают только крайние индикаторы и то показывают какой-то бред,но если нажать кнопку "reset" на ардуино загораются все индикаторы тоесть подключил вроде все верно заранее спасибо за помощь
(извините если вопрос тупой)

178

Re: Ретро часы на ИВ-6

опубликуйте фото индикатора и скетч который Вы используете

179

Re: Ретро часы на ИВ-6

И схему

180

Re: Ретро часы на ИВ-6

использовал вот этот скеч и не только
#include <MsTimer2.h>
#include <Wire.h>
#include <DS3231.h>
  DS3231 clock;RTCDateTime DateTime;
  int an, segm,times,i;
  byte a[4];
  int menu,year,month,day,hour,minute,w,w2;

void setup(){  Wire.begin();clock.begin();MsTimer2::set(2, to_Timer);MsTimer2::start();Serial.begin(9600);
  // clock.setDateTime(__DATE__, __TIME__); // Устанавливаем время на часах, основываясь на времени компиляции скетча
pinMode(9,OUTPUT);  // D9  === A0
pinMode(10,OUTPUT); // D10 === A1
pinMode(11,OUTPUT); // D11 === A2
pinMode(12,OUTPUT); // D12 === A3
pinMode(2,OUTPUT);  // D2  === a
pinMode(3,OUTPUT);  // D3  === b
pinMode(4,OUTPUT);  // D4  === c
pinMode(5,OUTPUT);  // D5  === d
pinMode(6,OUTPUT);  // D6  === e
pinMode(7,OUTPUT);  // D7  === f
pinMode(8,OUTPUT);  // D8  === g
pinMode(13,OUTPUT);// D13  === dp
pinMode(A0,INPUT); // SQW
///// BUTTON //////
pinMode(A1,INPUT); // SET
pinMode(A2,INPUT); // +/sec
pinMode(A3,INPUT); // -/temp
////  текущее время перенос в переменные коррекции времени
DateTime=clock.getDateTime();// опрос времени
year = DateTime.year;
month = DateTime.month;
day = DateTime.day;
hour = DateTime.hour;
minute = DateTime.minute;
}

void loop(){ DateTime=clock.getDateTime();// опрос времени
  if(analogRead(A1)>900){menu++;delay(200);if(menu>5){menu=0;w=1;}}

/////////// ВРЕМЯ ///////////// 
  if(menu==0&&w2==0){times = DateTime.hour*100+DateTime.minute;
  a[0]=times/1000;
  a[1]=times/100%10;
  a[2]=times/10%10;
  a[3]=times%10%10;
   if(analogRead(A0)>900){digitalWrite(13,HIGH);}else{digitalWrite(13,LOW);}// dp
  }
  w2=0;
////// вывод секунд - нажать и удерживать кнопку +/sec /////////////////////////////////////
  if(analogRead(A2)>900&&menu==0){w2=1;times = DateTime.second;digitalWrite(13,HIGH);
  a[0]=11;
  a[1]=10;
  a[2]=times/10;
  a[3]=times%10;}

////// вывод температуры - нажать и удерживать кнопку -/temp /////////////////////////////////////
  if(analogRead(A3)>900&&menu==0){w2=1;times = int(clock.readTemperature());digitalWrite(13,HIGH);
  a[0]=12;
  a[1]=10;
  a[2]=times/10;
  a[3]=times%10;} 
 

///////// коррекция минут /////////////////
  if(menu==1){
    if(analogRead(A2)>900){minute++;delay(300);if(minute>59){minute=0;}}
    if(analogRead(A3)>900){minute--;delay(300);if(minute<0){minute=0;}}
    times=minute;
  a[0]=1;
  a[1]=10;
  a[2]=times/10;
  a[3]=times%10;}

///////// коррекция часов /////////////////
  if(menu==2){
    if(analogRead(A2)>900){hour++;delay(300);if(hour>23){hour=0;}}
    if(analogRead(A3)>900){hour--;delay(300);if(hour<0){hour=0;}}
    times=hour;
  a[0]=2;
  a[1]=10;
  a[2]=times/10;
  a[3]=times%10;}

///////// коррекция дата /////////////////
  if(menu==3){
    if(analogRead(A2)>900){day++;delay(300);if(day>31){day=0;}}
    if(analogRead(A3)>900){day--;delay(300);if(day<0){day=0;}}
    times=day;
  a[0]=3;
  a[1]=10;
  a[2]=times/10;
  a[3]=times%10;}

///////// коррекция месяц /////////////////
  if(menu==4){
    if(analogRead(A2)>900){month++;delay(300);if(month>12){month=0;}}
    if(analogRead(A3)>900){month--;delay(300);if(month<0){month=0;}}
    times=month;
  a[0]=4;
  a[1]=10;
  a[2]=times/10;
  a[3]=times%10;}

///////// коррекция год /////////////////
  if(menu==5){
    if(analogRead(A2)>900){year++;delay(300);if(year>99){year=19;}}
    if(analogRead(A3)>900){year--;delay(300);if(year<19){year=19;}}
    times=year;
  a[0]=5;
  a[1]=10;
  a[2]=times/10;
  a[3]=times%10;}
 
if(w==1){clock.setDateTime(year+2000, month, day, hour, minute, 59 );// год (19),месяц(11),день(15),час(23),минуты(32),секунды
w=0;}

  } // loop

void to_Timer(){
  switch(i){
    case 0: cl();segm=a[0]; an=0; anod(); segment();break;
    case 1: cl();segm=a[1]; an=1; anod(); segment();break;
    case 2: cl();segm=a[2]; an=2; anod(); segment();break;
    case 3: cl();segm=a[3]; an=3; anod(); segment();break;
    }i++;if(i>3){i=0;}}


void segment(){
  switch(segm){                                                                 
             //  A       B       C       D       E       F       G 
    case 0: ch(2,0);ch(3,0);ch(4,0);ch(5,0);ch(6,0);ch(7,0);ch(8,1);break;// 0
    case 1: ch(2,1);ch(3,0);ch(4,0);ch(5,1);ch(6,1);ch(7,1);ch(8,1);break;// 1
    case 2: ch(2,0);ch(3,0);ch(4,1);ch(5,0);ch(6,0);ch(7,1);ch(8,0);break;// 2
    case 3: ch(2,0);ch(3,0);ch(4,0);ch(5,0);ch(6,1);ch(7,1);ch(8,0);break;// 3   
    case 4: ch(2,1);ch(3,0);ch(4,0);ch(5,1);ch(6,1);ch(7,0);ch(8,0);break;// 4
    case 5: ch(2,0);ch(3,1);ch(4,0);ch(5,0);ch(6,1);ch(7,0);ch(8,0);break;// 5
    case 6: ch(2,0);ch(3,1);ch(4,0);ch(5,0);ch(6,0);ch(7,0);ch(8,0);break;// 6
    case 7: ch(2,0);ch(3,0);ch(4,0);ch(5,1);ch(6,1);ch(7,1);ch(8,1);break;// 7
    case 8: ch(2,0);ch(3,0);ch(4,0);ch(5,0);ch(6,0);ch(7,0);ch(8,0);break;// 8
    case 9: ch(2,0);ch(3,0);ch(4,0);ch(5,0);ch(6,1);ch(7,0);ch(8,0);break;// 9 
    case 10:ch(2,1);ch(3,1);ch(4,1);ch(5,1);ch(6,1);ch(7,1);ch(8,1);break;// ПУСТО 
    case 11:ch(2,0);ch(3,1);ch(4,0);ch(5,0);ch(6,1);ch(7,0);ch(8,0);break;// S
    case 12:ch(2,1);ch(3,1);ch(4,1);ch(5,0);ch(6,0);ch(7,0);ch(8,0);break;// t 
  }}
void anod(){
  switch(an){                                                             
    case 0:ch(9,0);ch(10,1);ch(11,1);ch(12,1);break; 
    case 1:ch(9,1);ch(10,0);ch(11,1);ch(12,1);break;
    case 2:ch(9,1);ch(10,1);ch(11,0);ch(12,1);break;
    case 3:ch(9,1);ch(10,1);ch(11,1);ch(12,0);break;
  }}

void cl(){
     segm=10; an=0; segment(); anod(); an=1; segment(); anod();  an=2; segment(); anod();  an=3; segment();anod();
  }

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

181

Re: Ретро часы на ИВ-6

вот так выглядят мои часы:
https://ibb.co/ZhCvvyq
вот схема:
https://ibb.co/4JZjRRd
вот плата:
https://ibb.co/pQhwqDL

182

Re: Ретро часы на ИВ-6

Давайте проверим работают ли часы реального времени, загрузите скетч, откройте монитор порта

#include <MsTimer2.h>
#include <Wire.h>
#include <DS3231.h>
  DS3231 clock;RTCDateTime DateTime;
  int an, segm,times,i;
  byte a[4];
  int menu,year,month,day,hour,minute,w,w2;

void setup(){  Wire.begin();clock.begin();MsTimer2::set(2, to_Timer);MsTimer2::start();Serial.begin(9600);
  // clock.setDateTime(__DATE__, __TIME__); // Устанавливаем время на часах, основываясь на времени компиляции скетча
pinMode(9,OUTPUT);  // D9  === A0
pinMode(10,OUTPUT); // D10 === A1
pinMode(11,OUTPUT); // D11 === A2
pinMode(12,OUTPUT); // D12 === A3
pinMode(2,OUTPUT);  // D2  === a
pinMode(3,OUTPUT);  // D3  === b
pinMode(4,OUTPUT);  // D4  === c
pinMode(5,OUTPUT);  // D5  === d
pinMode(6,OUTPUT);  // D6  === e
pinMode(7,OUTPUT);  // D7  === f
pinMode(8,OUTPUT);  // D8  === g
pinMode(13,OUTPUT);// D13  === dp
pinMode(A0,INPUT); // SQW
///// BUTTON //////
pinMode(A1,INPUT_PULLUP); // SET
pinMode(A2,INPUT_PULLUP); // +/sec
pinMode(A3,INPUT_PULLUP); // -/temp
////  текущее время перенос в переменные коррекции времени
DateTime=clock.getDateTime();// опрос времени
year = DateTime.year;
month = DateTime.month;
day = DateTime.day;
hour = DateTime.hour;
minute = DateTime.minute;
}

void loop(){ DateTime=clock.getDateTime();// опрос времени
  if(analogRead(A1)==LOW){menu++;delay(200);if(menu>5){menu=0;w=1;}}
Serial.println(DateTime.second);
/////////// ВРЕМЯ ///////////// 
  if(menu==0&&w2==0){times = DateTime.hour*100+DateTime.minute;
  a[0]=times/1000;
  a[1]=times/100%10;
  a[2]=times/10%10;
  a[3]=times%10%10;
   if(analogRead(A0)==LOW){digitalWrite(13,HIGH);}else{digitalWrite(13,LOW);}// dp
  }
  w2=0;
////// вывод секунд - нажать и удерживать кнопку +/sec /////////////////////////////////////
  if(analogRead(A2)==LOW&&menu==0){w2=1;times = DateTime.second;digitalWrite(13,HIGH);
  a[0]=11;
  a[1]=10;
  a[2]=times/10;
  a[3]=times%10;}

////// вывод температуры - нажать и удерживать кнопку -/temp /////////////////////////////////////
  if(analogRead(A3)==LOW&&menu==0){w2=1;times = int(clock.readTemperature());digitalWrite(13,HIGH);
  a[0]=12;
  a[1]=10;
  a[2]=times/10;
  a[3]=times%10;} 
 

///////// коррекция минут /////////////////
  if(menu==1){
    if(analogRead(A2)==LOW){minute++;delay(300);if(minute>59){minute=0;}}
    if(analogRead(A3)==LOW){minute--;delay(300);if(minute<0){minute=0;}}
    times=minute;
  a[0]=1;
  a[1]=10;
  a[2]=times/10;
  a[3]=times%10;}

///////// коррекция часов /////////////////
  if(menu==2){
    if(analogRead(A2)==LOW){hour++;delay(300);if(hour>23){hour=0;}}
    if(analogRead(A3)==LOW){hour--;delay(300);if(hour<0){hour=0;}}
    times=hour;
  a[0]=2;
  a[1]=10;
  a[2]=times/10;
  a[3]=times%10;}

///////// коррекция дата /////////////////
  if(menu==3){
    if(analogRead(A2)==LOW){day++;delay(300);if(day>31){day=0;}}
    if(analogRead(A3)==LOW){day--;delay(300);if(day<0){day=0;}}
    times=day;
  a[0]=3;
  a[1]=10;
  a[2]=times/10;
  a[3]=times%10;}

///////// коррекция месяц /////////////////
  if(menu==4){
    if(analogRead(A2)==LOW){month++;delay(300);if(month>12){month=0;}}
    if(analogRead(A3)==LOW){month--;delay(300);if(month<0){month=0;}}
    times=month;
  a[0]=4;
  a[1]=10;
  a[2]=times/10;
  a[3]=times%10;}

///////// коррекция год /////////////////
  if(menu==5){
    if(analogRead(A2)==LOW){year++;delay(300);if(year>99){year=19;}}
    if(analogRead(A3)==LOW){year--;delay(300);if(year<19){year=19;}}
    times=year;
  a[0]=5;
  a[1]=10;
  a[2]=times/10;
  a[3]=times%10;}
 
if(w==1){clock.setDateTime(year+2000, month, day, hour, minute, 59 );// год (19),месяц(11),день(15),час(23),минуты(32),секунды
w=0;}

  } // loop

void to_Timer(){
  switch(i){
    case 0: cl();segm=a[0]; an=0; anod(); segment();break;
    case 1: cl();segm=a[1]; an=1; anod(); segment();break;
    case 2: cl();segm=a[2]; an=2; anod(); segment();break;
    case 3: cl();segm=a[3]; an=3; anod(); segment();break;
    }i++;if(i>3){i=0;}}


void segment(){
  switch(segm){                                                                 
             //  A       B       C       D       E       F       G 
    case 0: ch(2,0);ch(3,0);ch(4,0);ch(5,0);ch(6,0);ch(7,0);ch(8,1);break;// 0
    case 1: ch(2,1);ch(3,0);ch(4,0);ch(5,1);ch(6,1);ch(7,1);ch(8,1);break;// 1
    case 2: ch(2,0);ch(3,0);ch(4,1);ch(5,0);ch(6,0);ch(7,1);ch(8,0);break;// 2
    case 3: ch(2,0);ch(3,0);ch(4,0);ch(5,0);ch(6,1);ch(7,1);ch(8,0);break;// 3   
    case 4: ch(2,1);ch(3,0);ch(4,0);ch(5,1);ch(6,1);ch(7,0);ch(8,0);break;// 4
    case 5: ch(2,0);ch(3,1);ch(4,0);ch(5,0);ch(6,1);ch(7,0);ch(8,0);break;// 5
    case 6: ch(2,0);ch(3,1);ch(4,0);ch(5,0);ch(6,0);ch(7,0);ch(8,0);break;// 6
    case 7: ch(2,0);ch(3,0);ch(4,0);ch(5,1);ch(6,1);ch(7,1);ch(8,1);break;// 7
    case 8: ch(2,0);ch(3,0);ch(4,0);ch(5,0);ch(6,0);ch(7,0);ch(8,0);break;// 8
    case 9: ch(2,0);ch(3,0);ch(4,0);ch(5,0);ch(6,1);ch(7,0);ch(8,0);break;// 9 
    case 10:ch(2,1);ch(3,1);ch(4,1);ch(5,1);ch(6,1);ch(7,1);ch(8,1);break;// ПУСТО 
    case 11:ch(2,0);ch(3,1);ch(4,0);ch(5,0);ch(6,1);ch(7,0);ch(8,0);break;// S
    case 12:ch(2,1);ch(3,1);ch(4,1);ch(5,0);ch(6,0);ch(7,0);ch(8,0);break;// t 
  }}
void anod(){
  switch(an){                                                             
    case 0:ch(9,0);ch(10,1);ch(11,1);ch(12,1);break; 
    case 1:ch(9,1);ch(10,0);ch(11,1);ch(12,1);break;
    case 2:ch(9,1);ch(10,1);ch(11,0);ch(12,1);break;
    case 3:ch(9,1);ch(10,1);ch(11,1);ch(12,0);break;
  }}

void cl(){
     segm=10; an=0; segment(); anod(); an=1; segment(); anod();  an=2; segment(); anod();  an=3; segment();anod();
  }

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

183

Re: Ретро часы на ИВ-6

после загрузки скеча в мониторе порта каждую секунду значения увеличивается на 1

184

Re: Ретро часы на ИВ-6

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

http://forum.rcl-radio.ru/uploads/images/2019/11/5848143977b8b3c41b5c0d2e0d089242.png

http://forum.rcl-radio.ru/uploads/images/2022/01/3205a1f920708dd38b39d7f72715c59e.png


Вам нужно проверить подключение индикаторов.

185

Re: Ретро часы на ИВ-6

только что все перепроверил и перепаял проблема в чем-то другом

186

Re: Ретро часы на ИВ-6

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

Можете поменять times = 1234; на свое значение.

#include <MsTimer2.h>
#include <Wire.h>

  int an, segm,times,i;
  byte a[4];
 

void setup(){  MsTimer2::set(2, to_Timer);MsTimer2::start();Serial.begin(9600);

pinMode(9,OUTPUT);  // D9  === A0
pinMode(10,OUTPUT); // D10 === A1
pinMode(11,OUTPUT); // D11 === A2
pinMode(12,OUTPUT); // D12 === A3
pinMode(2,OUTPUT);  // D2  === a
pinMode(3,OUTPUT);  // D3  === b
pinMode(4,OUTPUT);  // D4  === c
pinMode(5,OUTPUT);  // D5  === d
pinMode(6,OUTPUT);  // D6  === e
pinMode(7,OUTPUT);  // D7  === f
pinMode(8,OUTPUT);  // D8  === g
pinMode(13,OUTPUT);// D13  === dp
pinMode(A0,INPUT); // SQW

}

void loop(){ 

  times = 1234;
  a[0]=times/1000;
  a[1]=times/100%10;
  a[2]=times/10%10;
  a[3]=times%10%10;
 


  } // loop

void to_Timer(){
  switch(i){
    case 0: cl();segm=a[0]; an=0; anod(); segment();break;
    case 1: cl();segm=a[1]; an=1; anod(); segment();break;
    case 2: cl();segm=a[2]; an=2; anod(); segment();break;
    case 3: cl();segm=a[3]; an=3; anod(); segment();break;
    }i++;if(i>3){i=0;}}


void segment(){
  switch(segm){                                                                 
             //  A       B       C       D       E       F       G 
    case 0: ch(2,0);ch(3,0);ch(4,0);ch(5,0);ch(6,0);ch(7,0);ch(8,1);break;// 0
    case 1: ch(2,1);ch(3,0);ch(4,0);ch(5,1);ch(6,1);ch(7,1);ch(8,1);break;// 1
    case 2: ch(2,0);ch(3,0);ch(4,1);ch(5,0);ch(6,0);ch(7,1);ch(8,0);break;// 2
    case 3: ch(2,0);ch(3,0);ch(4,0);ch(5,0);ch(6,1);ch(7,1);ch(8,0);break;// 3   
    case 4: ch(2,1);ch(3,0);ch(4,0);ch(5,1);ch(6,1);ch(7,0);ch(8,0);break;// 4
    case 5: ch(2,0);ch(3,1);ch(4,0);ch(5,0);ch(6,1);ch(7,0);ch(8,0);break;// 5
    case 6: ch(2,0);ch(3,1);ch(4,0);ch(5,0);ch(6,0);ch(7,0);ch(8,0);break;// 6
    case 7: ch(2,0);ch(3,0);ch(4,0);ch(5,1);ch(6,1);ch(7,1);ch(8,1);break;// 7
    case 8: ch(2,0);ch(3,0);ch(4,0);ch(5,0);ch(6,0);ch(7,0);ch(8,0);break;// 8
    case 9: ch(2,0);ch(3,0);ch(4,0);ch(5,0);ch(6,1);ch(7,0);ch(8,0);break;// 9 
    case 10:ch(2,1);ch(3,1);ch(4,1);ch(5,1);ch(6,1);ch(7,1);ch(8,1);break;// ПУСТО 
    case 11:ch(2,0);ch(3,1);ch(4,0);ch(5,0);ch(6,1);ch(7,0);ch(8,0);break;// S
    case 12:ch(2,1);ch(3,1);ch(4,1);ch(5,0);ch(6,0);ch(7,0);ch(8,0);break;// t 
  }}
void anod(){
  switch(an){                                                             
    case 0:ch(9,0);ch(10,1);ch(11,1);ch(12,1);break; 
    case 1:ch(9,1);ch(10,0);ch(11,1);ch(12,1);break;
    case 2:ch(9,1);ch(10,1);ch(11,0);ch(12,1);break;
    case 3:ch(9,1);ch(10,1);ch(11,1);ch(12,0);break;
  }}

void cl(){
     segm=10; an=0; segment(); anod(); an=1; segment(); anod();  an=2; segment(); anod();  an=3; segment();anod();
  }

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

187

Re: Ретро часы на ИВ-6

добрый вечер собрал на  iv6 все работает но почемуто сгорает  транзистор на сегмент g  но не сразу. через сутки через двое.

188

Re: Ретро часы на ИВ-6

Проверьте номиналы резисторов

189

Re: Ретро часы на ИВ-6

пробовал менять и базовый и колекторный результата нет.

190

Re: Ретро часы на ИВ-6

Странно, первый раз такой дефект. Если напряжение коллектор-эмиттер в допуске он не должен сгорать. Попробуйте увеличить резистор до 100 кОм.

191

Re: Ретро часы на ИВ-6

поставил  на 100к сутки идут жду. спасибо.

192

Re: Ретро часы на ИВ-6

как то спрашивал у вас по поводу засвечивая  сигментов на ив3 фото вылаживал. поменял прошивку подал накал 0.8в паралельно. напряжение сетки 20в но всеравно подсвечиваются.

193

Re: Ретро часы на ИВ-6

Загрузите этот скетч, возможно засветка будет меньше.

#include <MsTimer2.h>
#include <Wire.h>
#include <DS3231.h>
  DS3231 clock;RTCDateTime DateTime;
  int an, segm,times,i;
  byte a[4];
  int menu,year,month,day,hour,minute,sec,w,w2;

void setup(){  Wire.begin();clock.begin();MsTimer2::set(2, to_Timer);MsTimer2::start();Serial.begin(9600);
  // clock.setDateTime(__DATE__, __TIME__); // Устанавливаем время на часах, основываясь на времени компиляции скетча
pinMode(9,OUTPUT);  // D9  === A0
pinMode(10,OUTPUT); // D10 === A1
pinMode(11,OUTPUT); // D11 === A2
pinMode(12,OUTPUT); // D12 === A3
pinMode(2,OUTPUT);  // D2  === a
pinMode(3,OUTPUT);  // D3  === b
pinMode(4,OUTPUT);  // D4  === c
pinMode(5,OUTPUT);  // D5  === d
pinMode(6,OUTPUT);  // D6  === e
pinMode(7,OUTPUT);  // D7  === f
pinMode(8,OUTPUT);  // D8  === g
pinMode(13,OUTPUT);// D13  === dp
pinMode(A0,INPUT); // SQW
///// BUTTON //////
pinMode(A1,INPUT); // SET
pinMode(A2,INPUT); // +/sec
pinMode(A3,INPUT); // -/temp
////  текущее время перенос в переменные коррекции времени
DateTime=clock.getDateTime();// опрос времени
readTime();
}

void loop(){ DateTime=clock.getDateTime();// опрос времени
  readTime();
  if(analogRead(A1)>900){menu++;delay(200);if(menu>4){menu=0;}}

  if(menu==0){
  if(sec>=20 && sec<=25){times = DateTime.day*100+DateTime.month;
  a[0]=times/1000;
  a[1]=times/100%10;
  a[2]=times/10%10;
  a[3]=times%10%10;
  digitalWrite(13,LOW);
  }
  else if(sec>=35 && sec<=40){times = int(clock.readTemperature());
  a[0]=12;
  a[1]=10;
  a[2]=times/10;
  a[3]=times%10;
  digitalWrite(13,HIGH);
  } 
  else if(sec>=55 && sec<=59){times = DateTime.second;digitalWrite(13,HIGH);
  a[0]=11;
  a[1]=10;
  a[2]=times/10;
  a[3]=times%10;}

  else{times = DateTime.hour*100+DateTime.minute;
  a[0]=times/1000;
  a[1]=times/100%10;
  a[2]=times/10%10;
  a[3]=times%10%10;
   if(analogRead(A0)>900){digitalWrite(13,HIGH);}else{digitalWrite(13,LOW);}// dp
  }
  }


///////// коррекция минут /////////////////
  if(menu==1){
    if(analogRead(A2)>900){minute++;delay(300);if(minute>59){minute=0;}korr_time();}
    if(analogRead(A3)>900){minute--;delay(300);if(minute<0){minute=0;}korr_time();}
    times=minute;
  a[0]=1;
  a[1]=10;
  a[2]=times/10;
  a[3]=times%10;}

///////// коррекция часов /////////////////
  if(menu==2){
    if(analogRead(A2)>900){hour++;delay(300);if(hour>23){hour=0;}korr_time();}
    if(analogRead(A3)>900){hour--;delay(300);if(hour<0){hour=0;}korr_time();}
    times=hour;
  a[0]=2;
  a[1]=10;
  a[2]=times/10;
  a[3]=times%10;}

///////// коррекция дата /////////////////
  if(menu==3){
    if(analogRead(A2)>900){day++;delay(300);if(day>31){day=0;}korr_time();}
    if(analogRead(A3)>900){day--;delay(300);if(day<0){day=0;}korr_time();}
    times=day;
  a[0]=3;
  a[1]=10;
  a[2]=times/10;
  a[3]=times%10;}

///////// коррекция месяц /////////////////
  if(menu==4){
    if(analogRead(A2)>900){month++;delay(300);if(month>12){month=0;}korr_time();}
    if(analogRead(A3)>900){month--;delay(300);if(month<0){month=0;}korr_time();}
    times=month;
  a[0]=4;
  a[1]=10;
  a[2]=times/10;
  a[3]=times%10;}


  } // loop

void to_Timer(){
  switch(i){
    case 0: segm=10; an=0; segment(); anod(); delayMicroseconds(1000);segm=a[0]; an=0; anod(); segment();break;
    case 1: segm=10; an=1; segment(); anod(); delayMicroseconds(1000);segm=a[1]; an=1; anod(); segment();break;
    case 2: segm=10; an=2; segment(); anod(); delayMicroseconds(1000);segm=a[2]; an=2; anod(); segment();break;
    case 3: segm=10; an=3; segment(); anod(); delayMicroseconds(1000);segm=a[3]; an=3; anod(); segment();break;
    }i++;if(i>3){i=0;}}


void segment(){
  switch(segm){                                                                 
             //  A       B       C       D       E       F       G 
    case 0: ch(2,0);ch(3,0);ch(4,0);ch(5,0);ch(6,0);ch(7,0);ch(8,1);break;// 0
    case 1: ch(2,1);ch(3,0);ch(4,0);ch(5,1);ch(6,1);ch(7,1);ch(8,1);break;// 1
    case 2: ch(2,0);ch(3,0);ch(4,1);ch(5,0);ch(6,0);ch(7,1);ch(8,0);break;// 2
    case 3: ch(2,0);ch(3,0);ch(4,0);ch(5,0);ch(6,1);ch(7,1);ch(8,0);break;// 3   
    case 4: ch(2,1);ch(3,0);ch(4,0);ch(5,1);ch(6,1);ch(7,0);ch(8,0);break;// 4
    case 5: ch(2,0);ch(3,1);ch(4,0);ch(5,0);ch(6,1);ch(7,0);ch(8,0);break;// 5
    case 6: ch(2,0);ch(3,1);ch(4,0);ch(5,0);ch(6,0);ch(7,0);ch(8,0);break;// 6
    case 7: ch(2,0);ch(3,0);ch(4,0);ch(5,1);ch(6,1);ch(7,1);ch(8,1);break;// 7
    case 8: ch(2,0);ch(3,0);ch(4,0);ch(5,0);ch(6,0);ch(7,0);ch(8,0);break;// 8
    case 9: ch(2,0);ch(3,0);ch(4,0);ch(5,0);ch(6,1);ch(7,0);ch(8,0);break;// 9 
    case 10:ch(2,1);ch(3,1);ch(4,1);ch(5,1);ch(6,1);ch(7,1);ch(8,1);break;// ПУСТО 
    case 11:ch(2,0);ch(3,1);ch(4,0);ch(5,0);ch(6,1);ch(7,0);ch(8,0);break;// S
    case 12:ch(2,1);ch(3,1);ch(4,1);ch(5,0);ch(6,0);ch(7,0);ch(8,0);break;// t 
  }}
void anod(){
  switch(an){                                                             
    case 0:ch(9,0);ch(10,1);ch(11,1);ch(12,1);break; 
    case 1:ch(9,1);ch(10,0);ch(11,1);ch(12,1);break;
    case 2:ch(9,1);ch(10,1);ch(11,0);ch(12,1);break;
    case 3:ch(9,1);ch(10,1);ch(11,1);ch(12,0);break;
  }}

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

  void readTime(){
   year = DateTime.year;
   month = DateTime.month;
   day = DateTime.day;
   hour = DateTime.hour;
   minute = DateTime.minute;
   sec=DateTime.second;
    }
   void korr_time(){clock.setDateTime(year+2000, month, day, hour, minute, 59 );}

194 (2022-02-07 04:26:29 отредактировано FedorM)

Re: Ретро часы на ИВ-6

Здравствуйте. Сделал плату под ИВ-22 для заказа у китайцев. Накал раскачал через мультивибратор. Думаю можно использовать универсально под разные ВЛИ с соответствующей подборкой резисторов и напряжения накала.

https://easyeda.com/fedorm1984/lumo-clock

195

Re: Ретро часы на ИВ-6

Не могу победить засветы и некорректно зажигающиеся сегменты на ив-11. На ив-22 такой проблемы нет. Резисторы на анодах и сетках по 47к. http://forum.rcl-radio.ru/uploads/images/2022/02/5058d4fcd1f5e2782c8790324641c688.jpg

196

Re: Ретро часы на ИВ-6

Опубликуйте Ваш скетч

197

Re: Ретро часы на ИВ-6

liman324 пишет:

Опубликуйте Ваш скетч

Лежит здесь

https://www.dropbox.com/sh/4hliaah209oh … tracking=1

198

Re: Ретро часы на ИВ-6

Перед выводом цифры надо гасить все разряды  и выдерживать паузу, внесите изминения в скетч:

void to_Timer(){
  switch(i){
    case 0: an=4;anod(); delayMicroseconds(500);segm=a[0]; an=3; anod(); segment();break;
    case 1: an=4;anod(); delayMicroseconds(500);segm=a[1]; an=2; anod(); segment();break;
    case 2: an=4;anod(); delayMicroseconds(500);segm=a[2]; an=1; anod(); segment();break;
    case 3: an=4;anod(); delayMicroseconds(500);segm=a[3]; an=0; anod(); segment();break;
    }
    i++;if(i>3){i=0;}}

void anod(){
  switch(an){                                                             
    case 0:_PB1(1);_PB2(0);_PB3(0);_PB4(0);break;
    case 1:_PB1(0);_PB2(1);_PB3(0);_PB4(0);break;
    case 2:_PB1(0);_PB2(0);_PB3(1);_PB4(0);break;
    case 3:_PB1(0);_PB2(0);_PB3(0);_PB4(1);break;
    case 4:_PB1(0);_PB2(0);_PB3(0);_PB4(0);break;
  }}

199

Re: Ретро часы на ИВ-6

Часы на ИВ-6 работают уже два года 24/7, благодаря помощи автора, в начале этого форума. Как и обещал, до корпуса дело так и не дошло.)))

200 (2022-02-16 06:51:11 отредактировано FedorM)

Re: Ретро часы на ИВ-6

liman324 пишет:

Перед выводом цифры надо гасить все разряды  и выдерживать паузу, внесите изминения в скетч:

Спасибо стало лучше. Но почему-то именно на ИВ-11 периодически отключается левый верхний сегмент. Какое-то время при включении может гореть, но через несколько секунд отключается на первых 3-х индикаторах; на четвертом горит, но заметно тусклее остальных сегментов. На ИВ-22 такой проблемы не наблюдаю. И яркости вцелом именно на 11 индикаторах не хватает. Видимо 28 вольт маловато.