Оглавление:

Пенсионные часы / Count Up / Dn Clock: 4 шага (с изображениями)
Пенсионные часы / Count Up / Dn Clock: 4 шага (с изображениями)

Видео: Пенсионные часы / Count Up / Dn Clock: 4 шага (с изображениями)

Видео: Пенсионные часы / Count Up / Dn Clock: 4 шага (с изображениями)
Видео: Как устроена IT-столица мира / Russian Silicon Valley (English subs) 2024, Ноябрь
Anonim
Пенсионные часы / Count Up / Dn Clock
Пенсионные часы / Count Up / Dn Clock

У меня было несколько таких светодиодных точечно-матричных дисплеев 8x8 в ящике, и я думал, что с ними делать. Вдохновленный другими инструкциями, у меня возникла идея построить дисплей обратного / обратного отсчета для обратного отсчета до будущей даты / времени, и, если целевое время прошло, отсчитывать от него. Я сделал это теперь своими пенсионными часами, лежащими на полке.

Идея поместить его в бутылку была скорее случайностью, когда думали о оболочке. Другие кладут корабли в бутылки, почему бы не часы?

Я также хотел, чтобы часы подчинялись летнему времени и, конечно же, запоминали настройки и время при отключении от сети. Я питаю часы через USB, что делает их перепрограммируемыми, если вы хотите сделать что-то другое или просто добавить функции в код. Код довольно прост и требует значительных оптимизаций. Должен признаться, я не очень заботился о потреблении оперативной памяти. Если у меня будет время и мотивация, я вернусь к этому.

Запасы

1. Arduino Nano

2. RTC (я использовал обычный DS3231, который также имеет EEPROM)

3. Модуль точечной матрицы 12x 8x8. (У меня были четырехъядерные модули, которые легче выстраивать в линию)

4. LDR для регулировки яркости дисплея.

5. Резистор 10 кОм

6. Конденсатор 5x 100 мкФ подавляющий выбросы от дисплея.

7. Для увеличения контрастности модулей 8x8 я использовал темную тонированную «Window Film». На дисплее светодиоды отображаются в виде белых точек, если они не горят. Оконная пленка придает ему блестящий черный вид.

Шаг 1: соедините компоненты

Подключите компоненты
Подключите компоненты
Подключите компоненты
Подключите компоненты

Я использовал три из четырех дисплеев, чтобы собрать дисплей. Чтобы показать дату с косой чертой и время с двоеточием, нам нужно место для 8 символов. Используя типичный шрифт 5x7, нам понадобится шесть блоков 8x8 на строку. Я разрезал один из четырех блоков пополам и расположил их в два ряда по шесть блоков, как показано на схеме макета.

Шаг 2: детали, напечатанные на 3D-принтере

Детали, напечатанные на 3D-принтере
Детали, напечатанные на 3D-принтере
Детали, напечатанные на 3D-принтере
Детали, напечатанные на 3D-принтере
Детали, напечатанные на 3D-принтере
Детали, напечатанные на 3D-принтере

Чтобы удержать два ряда дисплея и разместить их в бутылке, я напечатал круглые дистанционные кольца для рамки дисплея. Я добавил файлы, которые использовал ниже. Чтобы их можно было печатать без поддержки, они разделены на части. На снимке экрана показаны два кольца, приклеенных к рамке дисплея. На крышке горлышка бутылки расположены три кнопки для переключения между режимами отображения и установки текущего и целевого времени. Крышка горлышка бутылки, которую я напечатал в ТПУ, позволяет вставить кабель USB в крышку, не отрезая разъемы, и закрепить его несколькими витками провода. Я забыл упомянуть, что использовал винную бутылку объемом 1,5 л, которую вырезал в самом низу. Все печатаемые детали умещаются на платформе принтера 20x20 см (8x8 дюймов).

Шаг 3: Код

Код Arduino использует несколько часто используемых библиотек.

MD_MAX72xx

SPI

Проволока

RTClib

Часовой пояс

TimeLib

В INO-файле есть несколько строк, которые, возможно, потребуется изменить:

Строка 38: #define HARDWARE_TYPE MD_MAX72XX:: FC16_HW <- зависит от модуля 8x8 и его ориентации

вместо FC16_HW это может быть одно из:

- MD_MAX72XX:: PAROLA_HW

- MD_MAX72XX:: GENERIC_HW

- MD_MAX72XX:: ICSTATION_HW

- MD_MAX72XX:: FC16_HW

Код использует настройки для центрального времени США и требует настройки для других часовых поясов:

Строка 53/54:

TimeChangeRule myDST = {"CDT", секунда, вс, 2 марта, -300}; // Летнее время UTC-5TimeChangeRule mySTD = {"CST", Первое, Вс, 2 ноября, -360}; // Стандартное время UTC -6

Это легко настроить. Название CST / CDT просто для ссылки. Я не показываю трехбуквенное сокращение, поэтому это не имеет значения. Следующие параметры относятся к тому, в какой день месяца происходит переключение. Регулировка выполняется в минутах, поэтому местоположения, использующие корректировки +/- 30 минут, также будут работать.

RTC работает внутри по UTC-времени, что позволяет библиотеке часовых поясов работать должным образом. Вы можете задаться вопросом, почему код ссылается на старую микросхему DS1307, а не на микросхему часов, которую я использовал, но это не имеет значения. Библиотека работает нормально с любым чипом. DS1307 имеет тенденцию к большему отклонению, чем DS3132. DS3132 - предпочтительные часы. Для тех, кто хочет добавить время в Интернете, ESP8266 легко справится с этой задачей. Это может сделать RTC устаревшим. Если вы вносите эти изменения, используйте EEPROM Arduino для хранения целевого времени, я использовал для этого RTC EEPROM.

Шаг 4: Работа и настройки

Работа и настройки
Работа и настройки
Работа и настройки
Работа и настройки
Работа и настройки
Работа и настройки

Есть три кнопки

1. Меню / настройки

2. Вверх

3. Вниз

Кнопка меню позволяет переключаться между тремя типами дисплея: текущее время, целевое время, дельта-время. Дельта-время показывает количество дней, ЧЧ / ММ / СС между текущим и целевым временем. Он покажет t- и обратный отсчет, если цель в будущем, или t + и обратный отсчет, если цель в прошлом.

Чтобы настроить текущее или целевое время, выберите отображение текущего или целевого времени. Чтобы изменить время, удерживайте кнопку меню в течение 2 секунд и отпустите, чтобы перейти в режим настройки. Соседний «/» или «:» превратится в «», чтобы указать, какую цифру вы настраиваете. Используйте кнопки вверх / вниз для настройки отдельных чч / мм / сс и мм / дд / гг. Я не добавлял настройку для переключения между мм / дд / гг и дд / мм / гг, это нужно изменить в коде или, возможно, кто-то захочет добавить эту функцию.

Вы заметите, что если вы переместите минуты выше 59 или ниже 00, отображение часов также изменится. то же самое верно для секунд, часов и дней, меняя следующее более высокое значение при переходе ниже 0 или выше максимального значения для этой цифры. Я сделал это, чтобы избежать программирования различных пределов отдельных месяцев, и если в феврале требуется 29 дней в високосном году. Корректировка времени фактически выполняется в эпохальных секундах с 1 января 1970 года.

Я добавил простое видео, чтобы показать подсчет. Я хотел сделать их похожими на дисплей с вращающимся колесом. Если вы хотите отрегулировать продолжительность изменения, строка 69 в INO дает вам несколько вариантов, чтобы ускорить или замедлить изменение. 120 мс заставят цифры прокручиваться достаточно медленно, так как это будет постоянно работающее колесо.

Надеюсь, вам понравилось это руководство.

Патрик Гешвинднер

Рекомендуемые: