Часы Nixie с Arduino | Самый простой дизайн
Компоненты и расходные материалы
![]() |
| × | 1 | |||
![]() |
| × | 1 |
Об этом проекте
После долгого рабочего дня я наконец-то добился успеха в создании часов Nixie с Arduino и оптоизолирующим чипом, без необходимости в драйвере Nixie, который трудно купить.
Смотрите видео с полной инструкцией:
Список деталей для создания проекта:
1. Arduino UNO https://amzn.to/2P58O7s
2. Никси-трубка, 6 шт. https://amzn.to/3aHyJvX
3. Микросхема оптопары TLP627
4. Повышающий модуль постоянного тока с 12 В до 390 В постоянного тока https://amzn.to/30kpdK9
5. Макет https://amzn.to/2uCrnsW
6. Модуль часов реального времени DS3231 https://amzn.to/2SIyEzI
Купите электронный компонент на utsource.net
Шаг 1. Схема

В схеме используется оптоизолирующий чип для управления лампой Nixie (с использованием 150 В постоянного тока) от Arduino (с использованием 5 В постоянного тока). Благодаря матричному подключению, нам нужно всего 16 выходов от Arduino для управления 60 лампами на 6-ти импульсной лампе. Модуль часов реального времени DS3231 используется для сохранения времени (даже при отключении питания), он связывается с Arduino по сети I2C. Arduino будет считывать данные в реальном времени, а затем последовательно включать / выключать световые индикаторы с высокой частотой, чтобы человеческий глаз считал 6 чисел постоянными
Шаг 2. Код Arduino
// канал Youtube:Engineer2you
#include
#include "DS3231.h"
RTClib RTC;
DS3231 Clock;
int час;
int minute;
int second;
const int nixie_0 =2;
const int nixie_1 =3;
const int nixie_2 =4; <бр /> const int nixie_3 =5;
const int nixie_4 =6;
const int nixie_5 =7;
const int nixie_6 =8;
const int nixie_7 =9;
const int nixie_8 =10;
const int nixie_9 =11;
const int row_1 =0;
const int row_2 =1;
const int row_3 =14;
const int row_4 =15;
const int row_5 =16;
const int row_6 =17;
const int time_on =2;
void setup () {
pinMode (nixie_0, OUTPUT);
pinMode (nixie_1, OUTPUT);
pinMode (nixie_2, OUTPUT);
pinMode (nixie_3, OUTPUT);
pinMode (nixie_4, OUTPUT);
pinMode ( nixie_5, OUTPUT);
pinMode (nixie_6, OUTPUT);
pinMode (nixie_7, OUTPUT);
pinMode (nixie_8, OUTPUT);
pinMode (nixie_9, OUTPUT);
pinMode (row_1, OUTPUT);
pinMode (row_2, OUTPUT);
pinMode (row_3, OUTPUT);
pinMode (row_4, OUTPUT);
pinMode (row_5 , ВЫХОД);
pinMode (row_6, OUTPUT);
//Serial.begin(9600); // НЕ следует использовать seiral println, это повлияет на вывод вывода D0 и D1
Wire.begin ();
}
void loop () {
// --- ---------------- получить значение часов ---------------------------
DateTime now =RTC.now ();
hour =now.hour ();
minute =now.minute ();
second =now.second ();
/ / ------------------- показать номер часов ----------------------
int j; // второе число справа
int k; // первое число справа
j =second / 10;
k =second% 10;
// ----------- показать первое число второго
off_all ();
on_number (0, k + 2);
delay (time_on);
// ----------- показать второе число секунды
off_all ();
on_number (1, j + 2);
delay (time_on);
j =минута / 10;
k =минута% 10;
// ----------- показать первое число минуты
off_all ();
on_number (14, k + 2);
delay (time_on);
// ----------- показать второе число минут
off_all ();
on_number (15, j + 2 );
delay (time_on);
j =час / 10;
k =час% 10;
// ----------- показать первым количество часов
off_all ();
on_number (16, k + 2);
delay (time_on);
// ----------- показать второе число часа
off_all ();
on_number (17, j + 2 );
delay (time_on);
}
void on_number (int row, int nixie) {
digitalWrite (row, HIGH);
digitalWrite (nixie, HIGH );
}
void off_all () {
digitalWrite (row_1, LOW);
digitalWrite (row_2, LOW);
digitalWrite (row_3, LOW);
digitalWrite (row_4, LOW);
digitalWrite (row_5, LOW);
digitalWrite (row_6, LOW);
digitalWrite (nixie_0, LOW);
digitalWrite (nixie_1 , LOW);
digitalWrite (nixie_2, LOW);
digitalWrite (nixie_3, LOW);
digitalWrite (nixie_4, LOW);
digitalWrite (nixie_5, LOW);
digitalWrite (nixie_6, LOW);
digitalWrite (nixie_7, LOW);
digitalWrite (nixie_8, LOW);
digitalWrite (nixie_9, LOW);
delayMicroseconds (400); // для предотвращения "побочного" эффекта на другую трубку
}
По сути, код будет получать в реальном времени от модуля DS3231 и показывать его на 6-ти импульсную трубку через оптоизолирующий чип.
Шаг 3. Постройте схему





Это всего лишь эксперимент, поэтому я все сделал в макете. К счастью, с первого раза все работает, никаких проблем
На следующем этапе я постараюсь сделать никси-часы в корпусе из МДФ с хорошей отделкой, чтобы я мог поставить их в своей комнате.
Код
- Фрагмент кода №1
Фрагмент кода №1 Обычный текст
// Канал Youtube:Engineer2you # include#include "DS3231.h" RTClib RTC; Часы DS3231; int час; int минута; int секунда; const int nixie_0 =2; const int nixie_1 =3; константа int nixie_2 =4; константа int nixie_3 =5; const int nixie_4 =6; const int nixie_5 =7; const int nixie_6 =8; const int nixie_7 =9; const int nixie_8 =10; const int nixie_9 =11; const int row_1 =0; const int row_2 =1; const int row_3 =14; const int row_4 =15; const int row_5 =16; const int row_6 =17; const int time_on =2; void setup () {pinMode (nixie_0, OUTPUT); pinMode (nixie_1, ВЫХОД); pinMode (nixie_2, ВЫХОД); pinMode (nixie_3, ВЫХОД); pinMode (nixie_4, ВЫХОД); pinMode (nixie_5, ВЫХОД); pinMode (nixie_6, ВЫХОД); pinMode (nixie_7, ВЫХОД); pinMode (nixie_8, ВЫХОД); pinMode (nixie_9, ВЫХОД); pinMode (строка_1, ВЫХОД); pinMode (строка_2, ВЫХОД); pinMode (row_3, ВЫХОД); pinMode (row_4, ВЫХОД); pinMode (row_5, ВЫХОД); pinMode (row_6, ВЫХОД); //Serial.begin(9600); // НЕ следует использовать seiral println, это повлияет на вывод вывода D0 и D1 Wire.begin ();} void loop () {// ------------------- получить значение часов --------------------------- DateTime now =RTC.now (); час =сейчас. час (); минута =now.minute (); второй =now.second (); // ------------------- показать номер часов ---------------------- int j; // второе число справа int k; // первое число справа j =second / 10; k =второй% 10; // ----------- показать первое число второго off_all (); on_number (0, k + 2); задержка (time_on); // ----------- показать второй номер секунды off_all (); on_number (1, j + 2); задержка (time_on); j =минута / 10; k =минута% 10; // ----------- показать первое число минут off_all (); on_number (14, k + 2); задержка (time_on); // ----------- показать второй номер минуты off_all (); on_number (15, j + 2); задержка (time_on); j =час / 10; k =час% 10; // ----------- показать первое число часа off_all (); on_number (16, k + 2); задержка (time_on); // ----------- показать второй номер часа off_all (); on_number (17, j + 2); задержка (время_на);} недействительно on_number (int row, int nixie) {digitalWrite (row, HIGH); digitalWrite (nixie, HIGH);} void off_all () {digitalWrite (строка_1, LOW); digitalWrite (строка_2, НИЗКИЙ); digitalWrite (row_3, LOW); digitalWrite (row_4, LOW); digitalWrite (row_5, LOW); digitalWrite (row_6, LOW); digitalWrite (nixie_0, LOW); digitalWrite (nixie_1, LOW); digitalWrite (nixie_2, LOW); digitalWrite (nixie_3, LOW); digitalWrite (nixie_4, LOW); digitalWrite (nixie_5, LOW); digitalWrite (nixie_6, LOW); digitalWrite (nixie_7, LOW); digitalWrite (nixie_8, LOW); digitalWrite (nixie_9, LOW); delayMicroseconds (400); // для предотвращения "побочного" эффекта на другую трубку}
Производственный процесс
- Часы видения Arduino pov
- Самодельные простейшие часы Numitron IV9 с Arduino
- Дизайн ремня безопасности с E3.series
- Простые часы со словами (Arduino)
- Часы Arduino с исламским временем молитв
- Основные часы
- Управление монетоприемником с помощью Arduino
- Arduino Temp. Монитор и часы реального времени с дисплеем 3.2
- Arduino с Bluetooth для управления светодиодом!
- Простой будильник с DS1302 RTC