На платформе Arduino можно сделать часы на одноразрядных вакуумно-люминисцентных индикаторах ИВ-6. Напряжения питания часов 5 В (200 мА), для подачи напряжения можно использовать USB разъем платы Arduino.
Индикатор вакуумный люминесцентный одноразрядный для отображения информации в виде цифр, букв и точки. Оформление — стеклянное, сверхминиатюрное. Индикация производится через боковую поверхность баллона. Размер знакоместа 6,9×11,2 мм. Изображение формируется из светящихся анодов-сегментов. Цвет свечения — зеленый.
Часы собираются из легко доступных и не дорогих элементов, схема состоит из четырех блоков — платы Arduino (Nano, Uno, Mini), блока индикации, часов реального времени DS3231 и повышающего преобразователя. Для упрощения схемы напряжение накала ламп постоянное 5 В, которое подается на последовательно соединенные катоды индикаторных ламп, так как в часах используется 5 ламп, одна из которых для отображения такта секунд, то напряжение накала одной лампы равно 1 В.
После сборки часов необходима небольшая настройка яркости свечения индикаторов, для этого необходимо подобрать сопротивление R28 блока повышающего преобразователя (от 270 до 470 Ом, чем меньше сопротивление тем выше напряжение), для увеличения или уменьшения напряжения. Оптимальное напряжение повышающего преобразователя 27…35 В. Установка времени часов осуществляется по времени компиляции.
#include <MsTimer2.h> // http://rcl-radio.ru/wp-content/uploads/2018/11/MsTimer2.zip #include <Wire.h> #include <DS3231.h> // http://rcl-radio.ru/wp-content/uploads/2021/01/DS3231.zip DS3231 clock;RTCDateTime DateTime; int an, segm,times,i; byte a[4]; void setup(){ Wire.begin();clock.begin(); MsTimer2::set(5, 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(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 clock.setOutput(DS3231_1HZ); } void loop(){ DateTime=clock.getDateTime();// опрос времени 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; }// loop void to_Timer(){ switch(i){ case 0: segm=a[0]; an=0; anod(); segment();delay(1);break; case 1: segm=a[1]; an=1; anod(); segment();delay(1);break; case 2: segm=a[2]; an=2; anod(); segment();delay(1);break; case 3: segm=a[3]; an=3; anod(); segment();delay(1);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 }} 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);}
Форум — http://forum.rcl-radio.ru/viewtopic.php?id=87 (корректировка времени, вывод температуры DS3231)
Питание нити накала ВЛИ — http://forum.rcl-radio.ru/viewtopic.php?pid=322#p322