Съдържание:

Думов часовник Rainbow с пълен ефект на дъгата и още: 13 стъпки (със снимки)
Думов часовник Rainbow с пълен ефект на дъгата и още: 13 стъпки (със снимки)

Видео: Думов часовник Rainbow с пълен ефект на дъгата и още: 13 стъпки (със снимки)

Видео: Думов часовник Rainbow с пълен ефект на дъгата и още: 13 стъпки (със снимки)
Видео: Alice's Adventures in Wonderland Audiobook by Lewis Carrol 2024, Юли
Anonim
Думов часовник Rainbow с пълен ефект на дъгата и др
Думов часовник Rainbow с пълен ефект на дъгата и др

Цели

1) Просто

2) Не е скъпо

3) Колкото е възможно по -енергийно ефективен

Rainbow Word Clock с пълен ефект на дъгата.

Усмивка на часовника на думите.

Просто IR дистанционно управление

Актуализиране на LDR 03-nov-18 за контрол на яркостта на неопикселите

Актуализация 01-jan-19 Намаляване на консумацията на енергия на WS2812B.

Актуализирайте 15-jan-19 Smiley.

Актуализация 23-jan-19 Code 1.6

Актуализирайте връзките към библиотеките от 10 март

Актуализация 14-април-19 версия 1.7 Избор на усмивка за включване/изключване на цвят дъга/коригиране на enz.

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

Стъпка 1: Калъф за часовника

Калъф за часовника
Калъф за часовника
Калъф за часовника
Калъф за часовника
Калъф за часовника
Калъф за часовника

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

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

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

Стъпка 2: Неопиксели

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

Неопикселовите светодиоди са подредени върху дървена плоча, като първо пробивате 3 мм отвори. Отпред те са увеличени до размер на буквата до 3/4 дълбочина. След това 3 мм отзад се увеличава до 10 мм, това е размерът на Neopixel. За някои символи, между другото W, дупката трябва да бъде леко коригирана.

Използвах шперплат, който бързо се разцепи, MDF може да е по -добър.

С отделните светодиоди не сте обвързани с фиксирано разстояние, какъвто е случаят с LED лентите. Светодиодите трябва да са свързани помежду си. Можете да направите това с всички къси парчета тел. Но двете min (-) връзки са точно като двете плюс (+) връзки вътрешно свързани, така че една и съща връзка.

Можете да си спестите много работа, като запоите парче тел към левия светодиод и след това към десния светодиод. След това запоявайте междинните.

Връзката за данни, разбира се, трябва да бъде с кратки части, защото изходът на данни отива към данни.

Стъпка 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; // min-drie

}

Ако искате да направите думата 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; // Word-arduino

}

Така че можете да правите думи между тях.

За часовниковите думи е полезно, ако образуват съседна дума, но не е абсолютно необходимо. Неизползваните букви не се нуждаят от неонови пиксели. Напълних ги всички за използване на бъдещи възможности, различно от показваното време.

Ако промените началната точка или промените последователността, номерирането трябва да се промени съответно.

Стъпка 4: Пълен ефект на дъгата

Пълен ефект на дъгата
Пълен ефект на дъгата

Сега часовникът е толкова програмиран, че броят пъти в секунда се брои колко неопиксела са включени.

Общият спектър е около броя на разделените и след това леко изместени. В резултат на това всеки Neopixel има различен цвят, който се променя непрекъснато. Neopixel nr 1 и nr 167 се следват един след друг в някои цветове.

Ако предпочитате по -малко различни цветове едновременно, това е лесно да се регулира. Цветът все още се измества в целия спектър, но с по -малка част от него. Neopixel nr 1 и nr 167 вече не следват един друг, включващ някакъв цвят.

Яркостта може да бъде зададена в следния ред, pixels.setBrightness (150);

По -малко число е по -малко, а по -голямо число повече яркост.

Стъпка 5: Различните компоненти

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

Следните компоненти използвах

Arduino Pro Mini ATMEGA328 5V/16MHz

Модул на часовника DS3231

168 броя Неопикселови LED WS2812 LED чип и радиатор 5V 5050 RGB WS2811 IC Вграден

Шаблон за букви от фолио

DCF77 приемник

Стъпка 6: Код за часовника

Ето кода. Добавен контрол на яркостта и изключване на захранването, когато няма никой и през нощта.

Добавен RCWL-0516 радар микровълнов сензор за движение (търсене на RADAR)

След 10 минути без движение, NeoPixels излизат.

Относно версия 2.0

Използването на паметта беше твърде много, с предупреждения за изчерпване на паметта в компилатора. Ето защо напълно промених кода, но операцията остана същата и беше добавен IR приемник.

Има част от код за предоставяне на данни на EEPROM. Изпълнете го веднъж, като временно премахнете / * и * /. Търсете => стартирайте това веднъж, за да предоставите на EEPROM данни

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

Дистанционното управление на Samsung работи по -добре от (много евтиното) просто.

Стъпка 7: Описание на хардуера

Описание на хардуера
Описание на хардуера
Описание на хардуера
Описание на хардуера
Описание на хардуера
Описание на хардуера

Има различни версии на Arduino Pro Mini. Моля, обърнете внимание, че връзките могат да се различават.

Добавен е микровълнов сензор за движение RCWL-0516.

Докато има движение в близост до часовника, NeoPixel остава включен

и веднага щом няма повече движение, NeoPixel изгасва след няколко минути.

Във версия 2.0 приемникът DCF77 се захранва чрез щифт 13. Този извод се дефинира като изход и се настройва високо, когато е адресирана процедурата DCF77. Приемникът DCF77 използва 0.28 mA и е необходим само за няколко минути на ден.

Изключването запазва

5 волта * 0,28 mA / 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 -те, които съм задал като стойност по подразбиране. (вижте пиксели. setBrightness (150))

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

Има също мъртва лента от 3 между измерената LDRValue и изчислената стойност на BerLDRValue.

Използвайте отчетите за печат в празния BrightnessControl, за да проверите настройката за яркост.

Стъпка 9: Намаляване на консумацията на енергия на WS2812B

Намаляване на консумацията на енергия на WS2812B
Намаляване на консумацията на енергия на WS2812B

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

Когато всички 169 неопиксела са излезли, измервам 69 mA към неопикселите. Ако приемем, че часовникът е изключен 12 часа на ден, общото изключване след това спестява: 5 (Волтово захранване) * 69/1000 (Милиампер / 1000 = Ампер) * 12 (Брой часове на ден) * 365 (Брой дни в година) = 1511 ватови часа. Така на годишна база 1,5 Kwh. Съгласен съм, това не е много само по себе си, но много малки правят голямо.

Схемата е проста. Плюсът на захранването се превключва от P-канал MosFet. Радарният сензор определя дали неопикселите са включени или изключени. Поставих два MosFet паралелно, за да поддържам възможно най -ниско съпротивлението на ON поради загуба на MosFet. При нормална употреба измервам 4, 5 миливолта над MosFets. Портата се управлява от изход 4 от Arduino чрез резистор 470 Kohm. Ако изходът премине към ниско (0) цифрово, неопикселите са включени, а при високо (1) са изключени.

Стъпка 10: Усмивка на Word Clock

Усмивка на часовника на думите
Усмивка на часовника на думите
Усмивка на часовника на думите
Усмивка на часовника на думите

Усмивка на часовника на думите.

Понякога на часовника се появява усмивка, което обаче ви прави щастливи.

Смайликът се задейства от радарния сензор. Броят пъти на движение (регулируемо) е мярка за външния вид на усмивката. Знаците % показват, че е открито движение. С всяко десето (регулируемо) движение Smiley излиза с Winky Face и след три пъти Winky Face идва с четвъртия Smiley Face, изпъкнал език.

Smiley е малка промяна в кода.

Стъпка 11: Кои библиотеки се използват

Кои библиотеки се използват.

Използвам ги в Windows 7 с Arduino IDE 1.6 и те също са тествани в Windows 10 с Adruino IDE 1.8.8

RTClib-master

Arduino-DS3231-master

Adafruit_NeoPixel-master

Arduino-DCF77-master

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

Тъй като винаги има объркване относно използваната библиотека, добавям тази, която използвам.

Библиотеката IRremote използва много памет. В IRremote.h е посочено, че можете да деактивирате всеки неизползван протокол

// Всеки протокол, който включвате, струва памет и по време на декодирането струва време // Деактивирайте (зададено на 0) всички протоколи, от които не се нуждаете/искате!

Имам забранено всичко освен протокола NEC и Samsung. Това дава икономия на памет от 10%. В момента вече няма проблем с обема на паметта, така че засега деактивирането не е необходимо.

Стъпка 12: Просто IR дистанционно управление

Просто IR дистанционно управление
Просто IR дистанционно управление
Просто IR дистанционно управление
Просто IR дистанционно управление
Просто IR дистанционно управление
Просто IR дистанционно управление

Монтажът

Както можете да видите на снимките, отворът за LED 132 се оказа малко прекалено голям. Използвах добре това и добавих към него IR приемника. Свържете щифта за данни на IR приемника VS1838 към щифт 7 на Arduino. Освен това свържете плюс и минус захранване. Инфрачервеният приемник използва 0.21 mA и може също да бъде свързан към плюс захранването след FET превключвателя. Това води до спестяване, ако часовникът е на 50% от времето, от 5 волта * 0,21 mA / 1000 * 12 часа * 365 дни * 1 / 0,85 ефективност на захранването = 5,4 вата годишно. Това не изглежда много, но всеки бит помага.

Операцията е както следва

Натиснете произволен клавиш на дистанционното управление и след това бутона OK. Първият път, когато натиснете, ще попаднете в IR обработката, а вторият път ще откриете дали това е оправдано искане. Вторият път ОК трябва да последва бързо първото натискане на клавиш, защото в противен случай се връща отново. Направих тази конструкция така, че едва ли получих първия код правилно декодиран и следователно не се озова в 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, което също тествах, работи много пъти по -добре от (много евтиното) просто дистанционно управление.

Когато настройвате цвета, виждате промяната директно на целия дисплей. За сайт с преглед на цветовете вижте https://www.helderester.nl/kleurentabel.html. Разбира се, можете да зададете всякаква стойност.

Ако ширината на спектъра на дъгата има стойност 0, спектърът е много тесен и дисплеят има един цвят, който се променя постоянно.

Недостатъкът на настройката на часа по този начин е, че не можете да изчислите преход лято / зима, защото датата е неправилна. Няма значение за самия часовник, защото сега не го използваме.

Стъпка 13: Какви Nexts?

Какви Nexts?
Какви Nexts?

Следва, звук, ако свободната памет все още е достатъчна.

Вече имам кутии за високоговорители. Те са от стар лаптоп.

Препоръчано: