Re: Ретро часы на ИВ-6
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
forum.rcl-radio.ru → Законченные проекты → Ретро часы на ИВ-6
Каждый индикатор был распаян на двухсторонней макетке. В середине сделано отверстие под светодиод 5 мм. При желании, его можно установить и организовать нижнюю подсветку индикаторов. Разъемы индикаторов, типа дюпонт, с шагом 2,54 мм, На макетке распаяны все индикаторы, с помощью перемычек из медного провода.
Замечен эффект проявления единиц секунд в индикаторе десятков часов, еле заметное зажигание сегментов в такт с единицами секунд.Установка резисторов между базой и эмиттером, для устранения внутренних токов и неполного закрытия транзисторов результатов не дала. Данный эффект проявляется только в первом индикаторе. Возможно, из-за макетной сборки или еще чего-то, что я не учел.
Попробуйте этот скетч, возможно проблема будет решена:
#include <MsTimer2.h>
#include <Wire.h>
#include <DS3231.h>
DS3231 clock;RTCDateTime DateTime;
int an, segm,i;
byte a[6];
void setup(){ Wire.begin();clock.begin();
MsTimer2::set(2, to_Timer);MsTimer2::start();
// 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(0,OUTPUT); // D0 === A4
pinMode(1,OUTPUT); // D1 === A5
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
}
void loop(){
DateTime=clock.getDateTime();// опрос времени
a[0]=DateTime.hour/10;
a[1]=DateTime.hour%10;
a[2]=DateTime.minute/10;
a[3]=DateTime.minute%10;
a[4]=DateTime.second/10;
a[5]=DateTime.second%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;
case 4: cl();segm=a[4]; an=4; anod(); segment();break;
case 5: cl();segm=a[5]; an=5; anod(); segment();break;
}
i++;if(i>5){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;// гашение цифры
}}
void anod(){
switch(an){
case 0:ch(9,0);ch(10,1);ch(11,1);ch(12,1);ch(0,1);ch(1,1);break;
case 1:ch(9,1);ch(10,0);ch(11,1);ch(12,1);ch(0,1);ch(1,1);break;
case 2:ch(9,1);ch(10,1);ch(11,0);ch(12,1);ch(0,1);ch(1,1);break;
case 3:ch(9,1);ch(10,1);ch(11,1);ch(12,0);ch(0,1);ch(1,1);break;
case 4:ch(9,1);ch(10,1);ch(11,1);ch(12,1);ch(0,0);ch(1,1);break;
case 5:ch(9,1);ch(10,1);ch(11,1);ch(12,1);ch(0,1);ch(1,0);break;
}}
void cl(){
segm=10; an=0; anod(); segment();
segm=10; an=1; anod(); segment();
segm=10; an=2; anod(); segment();
segm=10; an=3; anod(); segment();
segm=10; an=4; anod(); segment();
segm=10; an=5; anod(); segment();
}
void ch(int pin, int logic){digitalWrite(pin,logic);}
https://mysku.ru/blog/ebay/46749.html
Обратите внимание на данную статью. В ней есть схема повышающего преобразователя, основанного на Ардуино, без применения дополнительных микросхем. Если реализовывать схему с секундами, то там остается свободный выход D13. Его и можно задействовать для создания ШИМ, для повышающего преобразователя. А в схеме без секунд и того больше свободных выходов Ардуино.
https://mysku.ru/blog/ebay/46749.html
Обратите внимание на данную статью. В ней есть схема повышающего преобразователя, основанного на Ардуино, без применения дополнительных микросхем. Если реализовывать схему с секундами, то там остается свободный выход D13. Его и можно задействовать для создания ШИМ, для повышающего преобразователя. А в схеме без секунд и того больше свободных выходов Ардуино.
Да-к решение использовать ШИМ с Ардуино для раскачки полевого транзистора в повышающем преобразователе не нова и используется во многих проекта на ВЛИ или ГРИ. Мне не нравится отсутствие обратной связи на выходе преобразователя, и как результат не стабильное выходное напряжение. Руки не доходят реализовать правильно.
Ещё больше свободных выходов остаётся если использовать двоично-десятичный дешифратор для семисегментных индикаторов, на такое напряжение (27В) мне что то не попадались, а К176, К514 есть в запасах. Нужно пробовать.
Господа, подскажите пожалуйста что не так:
iv6-1:4:14: error: 'RTCDateTime' does not name a type; did you mean 'DateTime'?
DS3231 clock;RTCDateTime DateTime;
какая библиотека использована?
Нашел кое какую библиотеку, для которой все скомпилилось, но после отключения питания схемы, возвращается время компиляции.
P.S сори если вопрос тупой.
Данный контент доступен только зарегистрированным пользователям.
Данный контент доступен только зарегистрированным пользователям.
Подскажите пожалуйста, почему после сброса питания остается время компиляции, а не текущее?
clock.setDateTime(__DATE__, __TIME__); // Устанавливаем время на часах, основываясь на времени компиляции скетча
залили скетч
// clock.setDateTime(__DATE__, __TIME__); // Устанавливаем время на часах, основываясь на времени компиляции скетча
снова залили скетч
clock.setDateTime(__DATE__, __TIME__); // Устанавливаем время на часах, основываясь на времени компиляции скетча
залили скетч
// clock.setDateTime(__DATE__, __TIME__); // Устанавливаем время на часах, основываясь на времени компиляции скетча
снова залили скетч
Огромной спасибо за столь быстрый ответ и главное по теме!
Помогло!
И снова здравствуйте! Потихоньку продолжаю собирать часы.Такой вопрос, хотел объединить все 8 индикаторов для динамической индикации. Такой вопрос, возможно ли в скетче сделать корректировку, чтобы зажечь сегменты G, на индикаторах, которые выполняют роль разделительных чёрточек между часами, минутами и секундами? В данном случае, я бы использовал пин D13 и пин А0, которые высвободились в схеме, для управления сетками индикаторов 3 и 6.
На сегмент G можно просто подать +27 В через 100К если он не будет мигать и не использовать для них динамическую индикацию
Если они будут мигать, то через транзисторные ключи ими можно управлять с цифровых выходов D0 D1 с использованием динамической индикации.
Это понятно, что в первоначальной схеме, на сегмент G мы подаём питание и он просто светится. Но если я объединю все сегменты восьми индикаторов, такой возможности у меня уже не будет. А пины D0 и D1 уже заняты выводом секунд. Ниже ваш рабочий скетч, который вы предоставили для тестирования.
#include <MsTimer2.h>
#include <Wire.h>
#include <DS3231.h>
DS3231 clock;RTCDateTime DateTime;
int an, segm,i;
byte a[6];
void setup(){ Wire.begin();clock.begin();
MsTimer2::set(2, to_Timer);MsTimer2::start();
// 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(13,OUTPUT); // D0 === A4
pinMode(0,OUTPUT); // D1 === A5
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
}
void loop(){
DateTime=clock.getDateTime();// опрос времени
a[0]=DateTime.hour/10;
a[1]=DateTime.hour%10;
a[2]=DateTime.minute/10;
a[3]=DateTime.minute%10;
a[4]=DateTime.second/10;
a[5]=DateTime.second%10;
}// loop
void to_Timer(){
switch(i){
case 0: segm=a[0]; an=0; anod(); segment();break;
case 1: segm=a[1]; an=1; anod(); segment();break;
case 2: segm=a[2]; an=2; anod(); segment();break;
case 3: segm=a[3]; an=3; anod(); segment();break;
case 4: segm=a[4]; an=4; anod(); segment();break;
case 5: segm=a[5]; an=5; anod(); segment();break;
}
i++;if(i>5){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
}}
void anod(){
switch(an){
case 0:ch(9,0);ch(10,1);ch(11,1);ch(12,1);ch(13,1);ch(0,1);break;
case 1:ch(9,1);ch(10,0);ch(11,1);ch(12,1);ch(13,1);ch(0,1);break;
case 2:ch(9,1);ch(10,1);ch(11,0);ch(12,1);ch(13,1);ch(0,1);break;
case 3:ch(9,1);ch(10,1);ch(11,1);ch(12,0);ch(13,1);ch(0,1);break;
case 4:ch(9,1);ch(10,1);ch(11,1);ch(12,1);ch(13,0);ch(0,1);break;
case 5:ch(9,1);ch(10,1);ch(11,1);ch(12,1);ch(13,1);ch(0,0);break;
}}
void ch(int pin, int logic){digitalWrite(pin,logic);}
Сегменты G (и всех других сегментов) этих двух ламп можно не объединять с другими лампами.
Свободен выход только D1
Наверно этот код:
в нем свободен только D13
#include <MsTimer2.h>
#include <Wire.h>
#include <DS3231.h>
DS3231 clock;RTCDateTime DateTime;
int an, segm,i;
byte a[6];
void setup(){ Wire.begin();clock.begin();
MsTimer2::set(2, to_Timer);MsTimer2::start();
// 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(0,OUTPUT); // D0 === A4
pinMode(1,OUTPUT); // D1 === A5
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
}
void loop(){
DateTime=clock.getDateTime();// опрос времени
a[0]=DateTime.hour/10;
a[1]=DateTime.hour%10;
a[2]=DateTime.minute/10;
a[3]=DateTime.minute%10;
a[4]=DateTime.second/10;
a[5]=DateTime.second%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;
case 4: cl();segm=a[4]; an=4; anod(); segment();break;
case 5: cl();segm=a[5]; an=5; anod(); segment();break;
}
i++;if(i>5){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;// гашение цифры
}}
void anod(){
switch(an){
case 0:ch(9,0);ch(10,1);ch(11,1);ch(12,1);ch(0,1);ch(1,1);break;
case 1:ch(9,1);ch(10,0);ch(11,1);ch(12,1);ch(0,1);ch(1,1);break;
case 2:ch(9,1);ch(10,1);ch(11,0);ch(12,1);ch(0,1);ch(1,1);break;
case 3:ch(9,1);ch(10,1);ch(11,1);ch(12,0);ch(0,1);ch(1,1);break;
case 4:ch(9,1);ch(10,1);ch(11,1);ch(12,1);ch(0,0);ch(1,1);break;
case 5:ch(9,1);ch(10,1);ch(11,1);ch(12,1);ch(0,1);ch(1,0);break;
}}
void cl(){
segm=10; an=0; anod(); segment();
segm=10; an=1; anod(); segment();
segm=10; an=2; anod(); segment();
segm=10; an=3; anod(); segment();
segm=10; an=4; anod(); segment();
segm=10; an=5; anod(); segment();
}
void ch(int pin, int logic){digitalWrite(pin,logic);}
Я согласен, но в моем случае, я хотел сделать это для уменьшения проводов и в последующем, попробовать собрать часы на индикаторе ИВ-21. В нем, как мы знаем, отсутствует возможность подключения к определенному сегменту разряда. Поэтому и задал такой вопрос. Если возможность зажигания сегментов G через скетч отсутствует, то придется довольствоваться тем, что есть.
Один выход свободен, Вы его можете использовать сразу для 2-х ламп с G при динамической индикации, то есть у Вас в коммутации динамической индикации будет участвовать не 8 ламп, а 7 (3 и 6 имеют общее подключение к сетке)
Один выход свободен, Вы его можете использовать сразу для 2-х ламп с G при динамической индикации, то есть у Вас в коммутации динамической индикации будет участвовать не 8 ламп, а 7 (3 и 6 имеют общее подключение к сетке)
Подскажите, можно ли программно увеличить свечение сегментов? Выход с бп 31v постоянки.
Нет, это не возможно.
кнопка set, режимы корректировки работает.
+/sec - при нажатии и удержании кнопки должны отображаться секунды,
-/temp - при нажатии и удержании кнопки должна отображаться температура, а вот эта функция у меня не заработала. Подскажите как исправить.
Попробуйте этот код:
#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);}
Спасибо! Все работает!
forum.rcl-radio.ru → Законченные проекты → Ретро часы на ИВ-6
Форум работает на PunBB, при поддержке Informer Technologies, Inc
|