Оглавление:

Радужные часы со словами с полным эффектом радуги и многое другое: 13 шагов (с изображениями)
Радужные часы со словами с полным эффектом радуги и многое другое: 13 шагов (с изображениями)

Видео: Радужные часы со словами с полным эффектом радуги и многое другое: 13 шагов (с изображениями)

Видео: Радужные часы со словами с полным эффектом радуги и многое другое: 13 шагов (с изображениями)
Видео: Страшные истории и Слаймы. Залипашки и Страшилки 2024, Декабрь
Anonim
Радужные часы со словами с полным эффектом радуги и многое другое
Радужные часы со словами с полным эффектом радуги и многое другое

Цели

1) Простой

2) Не дорого

3) Максимально энергоэффективный

Радужные Word Clock с полным эффектом радуги.

Смайлик на часах со словом.

Простой ИК-пульт дистанционного управления

Обновление 03-ноя-18 LDR для управления яркостью неопикселей

Обновление 01-янв-19 Снижение энергопотребления WS2812B.

Обновление 15-янв-19 Смайлик.

Обновление 23-янв-19 Код 1.6

Обновление 10-мар-19 Ссылки на библиотеки

Обновление 14-апр-19 версия 1.7 Выбор смайлика вкл / выкл цвет радуга / исправление enz.

Последнее обновление 01-июн-19 версия 2.0 ИК-пульт дистанционного управления и редизайн кода

Шаг 1: чехол для часов

Чехол для часов
Чехол для часов
Чехол для часов
Чехол для часов
Чехол для часов
Чехол для часов

С некоторыми простыми инструментами и небольшим умением сделать часы с письмом несложно. Я использовал доступные мне материалы.

В качестве корпуса я использовал грубый сосновый брус, в котором выпил несколько рамок. Так получились четыре стороны корпуса, которые были склеены и усилены деревянными углами. Затем древесина нуждается в шлифовании и покраске.

Буквы вырезаны из фольги на принтере в зеркальном написании. Фольга находится с обратной стороны стеклянной пластины и покрыта двухслойной узорчатой бумагой для лучшего распределения света. Стекло фиксируется силиконовым герметиком.

Шаг 2: неопиксели

Неопиксели
Неопиксели
Неопиксели
Неопиксели
Неопиксели
Неопиксели
Неопиксели
Неопиксели

Светодиоды Neopixels располагаются на деревянной пластине, в которой сначала просверливаются отверстия диаметром 3 мм. Спереди они увеличены до размера букв до 3/4 глубины. После этого 3 мм сзади увеличиваются до 10 мм, это размер неопикселя. Для некоторых символов, в том числе буквы W, отверстие следует немного отрегулировать.

Я использовал фанеру, которая быстро трескалась, лучше МДФ.

С отдельными светодиодами вы не ограничены фиксированным расстоянием, как в случае светодиодных лент. Светодиоды должны быть соединены друг с другом. Сделать это можно с помощью любых коротких отрезков проволоки. Но два минимальных (-) соединения аналогичны двум внутренним соединениям с плюсом (+), так что это одно и то же соединение.

Вы можете сэкономить много работы, припаяв кусок провода к левому светодиоду, а затем к правому светодиоду. Затем припаиваем промежуточные.

Соединение для передачи данных, конечно же, должно быть короткими, потому что данные идут на вход данных.

Шаг 3: настройка текста на лицевой стороне

Регулировка лицевого текста
Регулировка лицевого текста
Регулировка лицевого текста
Регулировка лицевого текста
Регулировка лицевого текста
Регулировка лицевого текста

Передняя панель теперь на голландском языке, но ее просто можно преобразовать на любой язык.

Светодиоды NeoPixels переключаются здесь последовательно от 0 до 167. Нумерация идет от первой строки вверху слева направо, а затем ко второй строке справа налево и т. Д. Регулировка может быть выполнена в соответствии с вашими потребностями. Количество NeoPixels определяется количеством символов. Меньше или больше неопикселей можно настроить в следующей строке

#define NUMPIXELS 168 // Сколько NeoPixels подключено к Arduino?

168 больше, чем другое число. Нумерация начинается с 0. Текст можно составлять любой. Если вы измените текст, вам также придется корректировать соответствующие слова. Нумерация осталась прежней.

Например, DRIE минут определяется в коде

void zetmDrie () {

Led_Aan [56] = 1, Led_Aan [57] = 1, Led_Aan [58] = 1, Led_Aan [59] = 1; // мин-дри

}

Если вы хотите создать слово Arduino, оно будет выглядеть так:

void zetArduino () {

Led_Aan [38] = 1, Led_Aan [50] = 1, Led_Aan [56] = 1, Led_Aan [93] = 1;

Led_Aan [120] = 1, Led_Aan [135] = 1, Led_Aan [147] = 1; // Слово-ардуино

}

Так что вы можете складывать слова между ними.

Для слов часов полезно, если они образуют непрерывное слово, но это не обязательно. Неонпиксели для неиспользованных букв не нужны. У меня все они заполнены для использования будущих возможностей, кроме отображения времени.

Если вы измените начальную точку или последовательность следования, нумерация должна измениться соответствующим образом.

Шаг 4: Полный эффект радуги

Полный эффект радуги
Полный эффект радуги

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

Общий спектр примерно равен количеству разделенных, а затем немного сдвинутых. В результате у каждого Neopixel свой цвет, который постоянно меняется. Neopixel № 1 и № 167 следуют друг за другом в некоторых цветовых решениях.

Если вы предпочитаете одновременно меньше разных цветов, это легко изменить. Цвет по-прежнему смещается по всему спектру, но в меньшей его части. Neopixel № 1 и № 167 больше не следуют друг за другом, в котором участвует какой-то цвет.

Яркость можно установить в следующей строке, pixel.setBrightness (150);

Меньшее число означает меньшую яркость, большее число - большую яркость.

Шаг 5: различные компоненты

Различные компоненты
Различные компоненты
Различные компоненты
Различные компоненты
Различные компоненты
Различные компоненты

Следующие компоненты, которые я использовал

Arduino Pro Mini ATMEGA328 5 В / 16 МГц

Модуль часов DS3231

168 штук Neopixels LED WS2812 LED Chip & Heatsink 5V 5050 RGB WS2811 IC Встроенный

Трафарет для письма из фольги

Приемник DCF77

Шаг 6. Код для часов

Вот код. Добавлена регулировка яркости и отключение питания, когда никого нет и ночью.

Добавлен радиолокационный микроволновый датчик движения RCWL-0516 (поиск RADAR).

Через 10 минут бездействия NeoPixels гаснет.

О версии 2.0

Использование памяти было слишком большим, с предупреждениями о нехватке памяти в компиляторе. Поэтому я полностью изменил код, но операция осталась прежней, и был добавлен ИК-приемник.

Существует фрагмент кода для предоставления данных в EEPROM. Запустите его один раз, временно удалив / * и * /. Найдите => запустите это один раз, чтобы предоставить данные в EEPROM.

В начале цикла void находится код для чтения кода с вашего собственного пульта дистанционного управления. Вы можете запустить его, временно удалив / * и * /, не забудьте потом вернуть их обратно. Вы также можете определить свои собственные кнопки. Считанный код необходимо ввести в => Определите здесь свои собственные кнопки

Пульт Самсунг работает лучше, чем простой (очень дешевый).

Шаг 7: Описание оборудования

Описание оборудования
Описание оборудования
Описание оборудования
Описание оборудования
Описание оборудования
Описание оборудования

Существуют разные версии Arduino Pro Mini. Обратите внимание, подключения могут отличаться.

Добавлен микроволновый датчик движения RCWL-0516.

Пока в районе часов есть движение, NeoPixel остается включенным.

и как только движение прекратится, NeoPixel выключится через несколько минут.

В версии 2.0 приемник DCF77 получает питание через контакт 13. Этот контакт определяется как выход и устанавливается на высокий уровень при обращении к подпрограмме DCF77. Приемник DCF77 потребляет 0,28 мА и требуется всего несколько минут в день.

Отключение сохранений

5 Вольт * 0,28 мА / 1000 * 24 часа * 365 дней * Блок питания с эффективностью 1 / 0,85 = 14,4 Вт в год.

Кажется, это немного, но помогает каждый бит.

Шаг 8: LDR для управления яркостью неопикселей

LDR для управления яркостью неопикселей
LDR для управления яркостью неопикселей
LDR для управления яркостью неопикселей
LDR для управления яркостью неопикселей

Добавлен LDR для управления яркостью неопикселей.

Я приклеил LDR в пространство neopixel 103. Он не используется для отображения времени и поэтому не влияет на регулировку. Бумага поглощает падающий свет, но это не проблема.

Делитель напряжения LDR и резистор 20 кОм идет на A0 Arduino Pro Mini. Напряжение является индикатором интенсивности света и, следовательно, также показателем количества света, которое должны давать неопиксели.

Формула, которую я использую, дает мне хороший контроль света, его можно регулировать в зависимости от обстоятельств. В зависимости от количества света, напряжение может варьироваться от 0 до 5 вольт, которое преобразуется в от 0 до 1024 отсчетов, которые находятся в «LDRValue».

Если новое измеренное значение больше последнего рассчитанного значения, интенсивность увеличивается на 1, если меньше, чем уменьшается на 1 и если оно равно, ничего не делается. Чтобы значение продвигалось медленно, чтобы не было эффекта мигания, увеличивается или уменьшается только 1, а поскольку вычисление выполняется в цикле, оно пересчитывается только после прохождения цикла 25 раз.

Теоретически интенсивность составляет минимум 20 и максимум 1024/7 + 45 = 191. Максимальное значение, которое я измерил, было 902, что составляет интенсивность 173. Это хорошо согласуется с 150, которые я установил по умолчанию.. (см. pixel.setBrightness (150))

В версии 2.0 вы можете настроить управление с помощью пульта дистанционного управления. Были добавлены следующие параметры: Brightness_min как минимум, Brightness_max как максимальное значение и Brightness_Offset как параметр настройки. Brightness_min и _max - это значения, которые могут зависеть от вашей ситуации. Brightness_Offset - это значение, которое можно установить с помощью пульта дистанционного управления и с помощью которого можно установить большую или меньшую яркость.

Также существует зона нечувствительности 3 между измеренным значением LDRValue и вычисленным значением BerLDRValue.

Используйте операторы печати в void BrightnessControl, чтобы проверить настройку яркости.

Шаг 9: Снижение энергопотребления WS2812B

Снижение энергопотребления WS2812B
Снижение энергопотребления WS2812B

Драйверы на адресуемых неопикселях WS2812B потребляют ток, даже когда неопиксели выключены и имеют цвет 0 (не горят элементы неопикселей).

Когда все 169 неопикселей отключены, я измеряю 69 мА до неопикселей. Предполагая, что часы выключены 12 часов в день, полное отключение затем сохраняет: 5 (напряжение питания) * 69/1000 (миллиампер / 1000 = ампер) * 12 (количество часов в день) * 365 (количество дней в год) = 1511 Ватт-часов. Таким образом, ежегодно 1,5 кВт / ч. Согласен, само по себе это немного, но из множества маленьких получается большое.

Схема проста. Плюс блока питания переключается через P-канальный MosFet. Датчик радара определяет, включены или выключены неопиксели. Я установил два транзистора MosFet, чтобы снизить сопротивление включения, насколько это возможно, из-за потери MosFet. При нормальном использовании я измеряю 4, 5 мил вольт на MosFet. Затвор управляется выходом 4 Arduino через резистор 470 кОм. Если цифровой выходной сигнал становится низким (0), неопиксели включены, а при высоком уровне (1) они выключены.

Шаг 10: смайлик на часах со словом

Смайлик на часах со словом
Смайлик на часах со словом
Смайлик на часах со словом
Смайлик на часах со словом

Смайлик на часах со словом.

Иногда на часах появляется смайлик, но это радует.

Смайлик запускается датчиком радара. Количество перемещений (регулируемое) является мерой его появления. Знаки% указывают на то, что движение было обнаружено. С каждым десятым (регулируемым) движением смайлик появляется с подмигивающим лицом, а после трех раз подмигивает, в четвертый раз смайлик показывает язык.

Смайлик - это небольшое изменение кода.

Шаг 11: Какие библиотеки используются

Какие библиотеки используются.

Я использую их в Windows 7 с Arduino IDE 1.6, и они также были протестированы в Windows 10 с Adruino IDE 1.8.8.

RTClib-master

Arduino-DS3231-мастер

Adafruit_NeoPixel-master

Arduino-DCF77-master

Библиотека IRremote Кена Ширрифа

Поскольку всегда возникает путаница в отношении используемой библиотеки, я добавляю ту, которую использую.

Библиотека IRremote использует много памяти. В IRremote.h указано, что вы можете отключить любой неиспользуемый протокол

// Каждый протокол, который вы включаете, требует затрат памяти, а во время декодирования - времени // Отключите (установите значение 0) все протоколы, которые вам не нужны / не нужны!

У меня все отключено кроме протокола NEC и самсунг. Это дает экономию памяти 10%. На данный момент проблемы с объемом памяти больше нет, поэтому отключать ее пока нет необходимости.

Шаг 12: простой ИК-пульт дистанционного управления

Простой ИК-пульт дистанционного управления
Простой ИК-пульт дистанционного управления
Простой ИК-пульт дистанционного управления
Простой ИК-пульт дистанционного управления
Простой ИК-пульт дистанционного управления
Простой ИК-пульт дистанционного управления

Ассамблея

Как видно на фотографиях, отверстие для светодиода 132 получилось слишком большим. Я хорошо этим воспользовался и добавил к нему ИК-приемник. Подключите контакт данных ИК-приемника VS1838 к контакту 7 Arduino. Кроме того, подключите плюсовой и минусовой источник питания. ИК-приемник использует 0,21 мА и также может быть подключен к плюсовому источнику питания после переключателя на полевом транзисторе. Это приводит к экономии, если часы работают 50% времени, в размере 5 Вольт * 0,21 мА / 1000 * 12 часов * 365 дней * Эффективность источника питания 1 / 0,85 = 5,4 Вт в год. Кажется, это немного, но помогает каждый бит.

Операция следующая

Нажмите любую кнопку на ИК-пульте дистанционного управления, а затем кнопку OK. В первый раз, когда вы нажмете, вы попадете в IR-обработку, а во второй раз вы определите, был ли это обоснованный запрос. Второй раз OK должен быстро следовать за первым нажатием клавиши, иначе он снова вернется. Я сделал эту конструкцию так, чтобы я с трудом смог правильно декодировать первый код и, следовательно, не попал в обработку IR.

После обработки IR несколько светодиодов загораются для информации, для получения объяснения прочтите далее и просмотрите первое изображение.

Описание предназначено для простого пульта дистанционного управления, но вы можете использовать любой пульт дистанционного управления и определять свои собственные ключи. Я также использовал пульт дистанционного управления Samsung.

Первые четыре клавиши соответствуют четырем верхним рядам светодиодов. Четыре светодиода поворачиваются влево или вправо в зависимости от настройки. При нажатии клавиш с 1 по 4 состояние меняется на обратное и сохраняется в памяти.

1 фиксированный цвет или эффект радуги

2-секундная вспышка выключена или вторая вспышка включена

3 смайлик выключен смайлик включен

4 DCF77 выключен или DCF77 включен

Номер ключа отображается на следующих клавишах

5 смайлов

6 ширина спектра радуги

7 исправить настройку красного

8 исправить настройку зеленого

9 исправить настройку синего

Строки 6, 7 и 8 светодиодов теперь соответствуют установленному значению, строка 6 указывает единицы, строка 7 - десятки и строка 8 - сотня. Каждая строка начинается с нулевого значения. Итак, первый светодиод в строке - 0, второй - 1 и т. Д.

0 установка времени

/ / настройка яркости

При нажатии кнопки 0 загораются «десять» светодиодов, показывая, что вы хотите установить время, а когда вы нажимаете 0 второй раз, установленное время появляется на дисплее.

Теперь можно установить время, оно отображается на дисплее.

Установите правильное время, а затем, если минуты на контрольных часах совпадают, нажмите кнопку OK.

Время настроено.

Если вы не нажмете кнопку минут или часов, время не изменится. Если вы все же нажмете их, время будет установлено немедленно.

Значение клавиш с 5 по 9 можно изменить с помощью клавиш

справа плюс 1

осталось минус 1

вперед плюс 10

реверс минус 10.

и для установки времени

справа плюс 1 минута

осталось минус 1 минута

вперед плюс 1 час

реверс минус 1 час

Иногда бывает, что нажатие клавиши не распознается или выполняется дважды. Так что обратите внимание, если настройка удалась, в противном случае попробуйте или исправьте еще раз. Пульт дистанционного управления Samsung, который я также тестировал, работал во много раз лучше, чем простой (очень дешевый) пульт.

При установке цвета вы видите изменение непосредственно на всем дисплее. Для сайта с обзором цветов см. Http://www.helderester.nl/kleurentabel.html. Конечно, вы можете установить любое значение.

Если ширина спектра радуги имеет значение 0, спектр очень узкий, и дисплей имеет один цвет, который постоянно меняется.

Недостатком такой установки времени является то, что вы не можете рассчитать переход лето / зима, потому что у нас неверная дата. Для самих часов это не имеет значения, потому что сейчас мы ими не пользуемся.

Шаг 13: Что дальше?

Какие нексты?
Какие нексты?

Что дальше, звук, если свободной памяти еще достаточно.

Ящики для динамиков у меня уже есть. Они от старого ноута.

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