Съдържание:

Двоичен будилник на базата на Arduino: 13 стъпки (със снимки)
Двоичен будилник на базата на Arduino: 13 стъпки (със снимки)

Видео: Двоичен будилник на базата на Arduino: 13 стъпки (със снимки)

Видео: Двоичен будилник на базата на Arduino: 13 стъпки (със снимки)
Видео: Какая версия винды тебе нравится больше всех? 😅🤟 #windows #microsoft #винда #виндовс11 #виндовс 2024, Ноември
Anonim
Image
Image

От Basement Engineering Следете още от автора:

Направи си сам лазер за хора
Направи си сам лазер за хора
Изграждане на самостоятелно управлявана лодка (ArduPilot Rover)
Изграждане на самостоятелно управлявана лодка (ArduPilot Rover)
Изграждане на самостоятелно управлявана лодка (ArduPilot Rover)
Изграждане на самостоятелно управлявана лодка (ArduPilot Rover)
Перфектната нощна лампа и докинг станция за телефон
Перфектната нощна лампа и докинг станция за телефон
Перфектната нощна лампа и докинг станция за телефон
Перфектната нощна лампа и докинг станция за телефон

За: Здравейте, казвам се Джан и съм производител, обичам да строя и създавам неща, а също така съм доста добър в поправянето на неща. Тъй като мога да мисля, че винаги съм обичал да създавам нови неща и това продължавам да правя до … Повече за инженерното мазе »

Хей, днес бих искал да ви покажа как да изградите един от най -новите си проекти, моя двоичен будилник.

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

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

Нека ви разкажа малко за историята зад този проект:

Първоначално планирах да построя „нормален“часовник, който използва светодиоди като ръце, но нямах достатъчно светодиоди под ръка.

И така, какво правите, когато искате да покажете часа с възможно най -малко светодиоди?

Вие отивате двоично и точно това направих тук.

Този часовник е третата по рода си версия. Изградих много прост прототип веднага след като идеята за проекта ме застигна и го занесох в Maker Faire в Хановер, за да видя какво мислят хората за него. Докато бях там, получих много много положителни и интересни отзиви, както и идеи за подобрения.

Резултатът от всички тези идеи и часове на мислене, бъркане и програмиране е този доста интересен изглеждащ малък будилник, който има много повече функции от версия 1.0 и днес ще преминем през всяка стъпка от процеса на изграждане, така че можете лесно изградете сами.

В Youtube има и много подробно видео, в случай че не искате да прочетете всичко.

Стъпка 1: Вземете си нещата

Вземете си нещата
Вземете си нещата
Вземете си нещата
Вземете си нещата
Вземете си нещата
Вземете си нещата

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

Електроника:

  • 18 светодиода Ws2811 за адресиране (напр. Неопиксели) на лента с 60 светодиода на m (ebay)
  • Arduino Nano (с процесор ATMega328) (ebay)
  • 1307 RTC модул (ebay)
  • 4X капацитивни сензорни бутони (ebay)
  • bs18b20 цифров температурен сензор (ebay)
  • LDR (ebay)
  • високоговорител за лаптоп/смартфон или пиезо зумер
  • 2222A NPN транзистор (или нещо подобно)
  • мъжки заглавки
  • ъглови женски заглавки (ebay)
  • 1kOhm резистор
  • 4, 7kOhm резистор
  • 10kOhm резистор
  • Проводници
  • 7x5cm прототипиране на печатни платки 24x18 дупки (ebay)
  • сребърна тел (бижутерска тел) (ebay)
  • 90 ° мини USB адаптер (ebay)

Други материали

  • Винилова обвивка
  • 4X 45 мм винтове с фланцова глава m4 (ebay)
  • 32X m4 метални шайби
  • 4X заключваща гайка m4
  • 28X m4 гайка
  • 4X 10mm m3 месинг PCB standoff (ebay)
  • 8X 8mm m3 винт (ebay)
  • алуминиев лист
  • 2 мм лист млечен акрил
  • 2 мм лист прозрачен акрил
  • 3 мм лист MDF
  • двустранна касета

Инструменти

  • мини USB кабел
  • компютър, работещ с Arduino IDE
  • Свредло 3,5 мм
  • Свредло 4,5 мм
  • бормашина
  • нож за рязане
  • трион за справяне
  • спояващ йон
  • ножици за рязане на метал
  • файл
  • шкурка

Шаблони (сега с размери)

  • PDF
  • Libre Office Draw

Код

  • Скици
  • Библиотека с бутони
  • Библиотека с таймер
  • Библиотека на джубокс
  • Модифициран RTClib
  • Библиотека Adafruit Neopixel
  • Arduino-Библиотека за контрол на температурата

Стъпка 2: Изрежете предния и задния панел

Изрежете предния и задния панел
Изрежете предния и задния панел
Изрежете предния и задния панел
Изрежете предния и задния панел
Изрежете предния и задния панел
Изрежете предния и задния панел
Изрежете предния и задния панел
Изрежете предния и задния панел

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

След като предният панел е изрязан по размер, изрязваме задния панел от парче MDF. Можем да използваме нашия трион за справяне с това, но режещият нож също работи. Просто трябва да захванем MDF върху парче дърво и да го изстържем с ножа за рязане, докато острието премине и имаме две отделни парчета.

Сега смесваме двата панела заедно и шлайфаме всяка страна до перфектно подравняване.

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

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

Стъпка 3: Завършете задния панел

Завършете задния панел
Завършете задния панел
Завършете задния панел
Завършете задния панел
Завършете задния панел
Завършете задния панел
Завършете задния панел
Завършете задния панел

Засега можем да оставим предния панел настрани и да залепим втория шаблон върху задния панел, където трябва да използваме 3, 5 мм свредло, за да пробием отворите за нашите 4 печатни платки, както и 4 дупки, които маркират ръбовете за малкия заден прозорец.

След това използваме нашия трион за изрязване, за да изрежем прозореца и да изгладим ръбовете с пила. Също така не искате да забравите да пробиете дупката за мини USB кабела (чувал съм за един не толкова фокусиран производител, който е склонен да прави такива неща: D).

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

Стъпка 4: Направете LED панела

Направете LED панела
Направете LED панела
Направете LED панела
Направете LED панела
Направете LED панела
Направете LED панела

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

Използваме нашите ножици за рязане на метал, за да изрежем парче 12, 2 см на 8 см от лист метал. Бъдете внимателни, докато правите това, тъй като ножиците създават много остри ръбове. Ще ги изгладим с нашия файл и малко шкурка. След това добавяме следващия ни шаблон за пробиване на отвори за винтовете и проводниците.

Време е да подготвите действителните светодиоди.

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

Преди да залепим лентите върху панела, го почистваме със спирт. Докато прикрепяме светодиодите, трябва да се уверим, че ги поставяме на правилното място, както и в правилната посока. Малките стрелки на LED лентата показват посоката, в която данните преминават през лентата.

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

Нека да загреем нашия запояващ йон и да сложим малко калай върху медните подложки, както и върху нашия проводник. Линиите за данни са свързани, както току -що описах, докато просто свързваме паралелно подложките плюс и минус на лентата.

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

След като това е направено и ние добавяме няколко щифта към заглавията към проводниците, които отиват към печатната платка. Тези проводници трябва да са с дължина около 16 см. За да сме сигурни, че металният панел не къса нищо, използваме мултицет за измерване на съпротивлението между всички щифтове. Ако показва нещо над 1 kOhm, всичко е наред.

Сега можем да го свържем към Arduino, да проведем най -новия тест и да се насладим на цветовете.

Стъпка 5: Направете светлинен водач

Направете светлинен водач
Направете светлинен водач
Направете светлинен водач
Направете светлинен водач
Направете светлинен водач
Направете светлинен водач
Направете светлинен водач
Направете светлинен водач

Ако поставим нашия светодиоден панел точно зад млечния акрил, може да стане доста трудно да различим отделните светодиоди. Това би направило часовника ни още по -труден за четене, отколкото вече е.

За да разрешим този проблем, ще си направим малко светлинно ръководство. За целта просто изрязваме друго парче MDF, което има същия размер като предния панел. След това добавяме още един шаблон към него и пробиваме осемнадесет 3,5 мм отвора за светодиодите, както и четири отвори от 4,5 мм за винтовете в него. След това можем да го закрепим към предния панел и да използваме малко шкурка, за да подравним двете.

Както можете да видите на последната снимка, сега светлината изглежда много по -фокусирана.

Стъпка 6: Направете рамката на бутона

Направете рамката на бутона
Направете рамката на бутона
Направете рамката на бутона
Направете рамката на бутона
Направете рамката на бутона
Направете рамката на бутона

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

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

Нашата рамка трябва да държи 4 -те сензорни бутона, сензора за светлина и нашия малък високоговорител на място. Преди да можем да ги прикрепим към рамката, изрязахме няколко по -малки покривни парчета от MDF. След това залепваме горещо нашите компоненти върху тези капаци и добавяме проводници към тях.

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

След като панелите са подготвени, нарязваме страните на рамката, за да освободим място за тях и техните проводници.

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

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

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

Стъпка 7: Запоявайте основната печатна платка

Запоявайте основната печатна платка
Запоявайте основната печатна платка
Запоявайте основната печатна платка
Запоявайте основната печатна платка
Запоявайте основната печатна платка
Запоявайте основната печатна платка

Оставяме рамката такава, каквато е в момента, и преминаваме към печатната платка. Можете да видите оформлението на печатната платка на първата снимка.

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

След това имаме нашите женски щифтове за заглавки. За да спестите малко място и да можете да включите нашата електроника отстрани, монтираме ги под ъгъл от 90 градуса.

Транзисторите не отговарят наистина на 2, 54 мм разстояние между отворите на нашата печатна платка, затова използваме клещите си, за да огънем внимателно краката им във формата, показана на втората снимка. Първо запояваме единия им крак на място и обръщаме печатната платка. След това загряваме отново запояващото съединение и използваме пръста си или чифт клещи, за да позиционираме правилно компонента. Сега можем да запояваме другите два крака на място.

След всички малки компоненти запояваме нашия Arduino и нашия часовник в реално време на място. Модулът RTC също не се вписва толкова добре в разстоянието между отворите, така че ще оборудваме само страната, която има 7 запояващи подложки с щифтове на заглавието. Освен това поставяме лента под нея, за да предотвратим късо съединение.

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

За да осъществим връзка, загряваме запояващо съединение и вкарваме проводника. След това запазваме запояващия йон върху него, докато достигне подходящата температура и спойката го загради и получим съединение, което прилича на това на снимката. Ако не загряваме жицата, може да се окаже студена фуга, която би изглеждала подобно на другия пример и не се държи много добре. Можем да използваме нашия тел за рязане, за да избутаме жицата надолу по време на запояване и да се уверим, че тя лежи плоско върху печатната платка. При по -дълги пътища на свързване го запояваме към една подложка на всеки 5 до 6 дупки, докато достигнем ъгъл или следващия компонент.

В ъгъл изрязваме жицата над първата половина на подложка за запояване и запояваме края към нея. След това вземаме ново парче тел и продължаваме от там под прав ъгъл.

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

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

Всички 5V и заземителни връзки на сензорните бутони се обединяват в 2 -пинов конектор, 4 -те изходни проводника получават 4 -пинов конектор и линията на сензора за светлина, както и двата проводника на високоговорителите, обединени в три -пинов конектор. Не забравяйте да маркирате едната страна на всеки гнездо и конектор с острие или някаква лента, за да не ги включите случайно по грешен начин.

Стъпка 8: Сглобете часовника

Сглобете часовника
Сглобете часовника
Сглобете часовника
Сглобете часовника
Сглобете часовника
Сглобете часовника
Сглобете часовника
Сглобете часовника

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

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

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

Сега имаме всички компоненти и можем да сглобим часовника си.

Започваме с поставянето на световода и предния панел заедно. След като всичките 4 болта са вътре, подравняваме двата панела и след това ги затягаме. Няколко гайки по -късно идва светлинният панел, където трябва да погледнем посоката. Кабелът трябва да е отгоре.

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

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

Взимаме нашите винтове M3 и нашите дистанционни елементи за печатни платки, за да фиксираме малкия прозорец. Важно е внимателно да затегнете винтовете, тъй като не искаме да повредим нашия акрил. След това вземаме нашата печатна платка, включваме адаптера и го завинтваме върху дистанционерите. Компонентната страна трябва да е обърната към прозореца, докато USB портът на Arduino е обърнат към долната част на часовника.

След това включваме всички съединители от предния модул, като имаме предвид полярността и внимателно стискаме всички проводници в часовника. След това можем да го затворим със задния панел и да затегнем 4 -те останали контрагайки.

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

Тъй като използвах къси болтове с дължина 40 мм, имам само 3 гайки, които държат задния панел и рамката разделени. С десните 45 мм болтове бихте добавили тук друга гайка, както и една или две допълнителни шайби. В края на монтажа имаме нашата контргайка, така че всичко да остане на мястото си.

Стъпка 9: Качете кода и калибрирайте сензора за светлина

Качете кода и калибрирайте сензора за светлина
Качете кода и калибрирайте сензора за светлина
Качете кода и калибрирайте сензора за светлина
Качете кода и калибрирайте сензора за светлина
Качете кода и калибрирайте сензора за светлина
Качете кода и калибрирайте сензора за светлина

Време е да качим нашия код.

Първо изтегляме всички необходими файлове и ги разархивираме. След това отваряме нашата папка с библиотеки на Arduino и пускаме всички нови библиотеки в нея.

Сега отваряме скицата за калибриране на сензора за светлина, която ще ни даде ярки и тъмни стойности за функцията за автоматично затъмняване на часовника. Качваме го, отваряме серийния монитор и следваме инструкциите на екрана.

След като това стане, отваряме действителния код на двоичните часовници и заменяме двете стойности с тези, които току -що измерихме.

Затваряме всички останали прозорци, качваме кода в нашия часовник и сме готови.

Време е да си поиграем с новата ни притурка.

Стъпка 10: Бързо въведение в двоичната система

Бързо въведение в двоичната система
Бързо въведение в двоичната система
Бързо въведение в двоичната система
Бързо въведение в двоичната система
Бързо въведение в двоичната система
Бързо въведение в двоичната система
Бързо въведение в двоичната система
Бързо въведение в двоичната система

Преди да продължим, бих искал да отговоря на един въпрос, който вероятно вече ви е минал през ума, "Как, по дяволите, четете този часовник?"

Е, за това бих искал да ви дам кратко въведение в двоичната система.

Всички сме запознати с десетичната система, където всяка цифра може да има 10 различни състояния, вариращи от 0 до 9. В двоично число всяка цифра може да има само две състояния, или 1 или 0, затова можете да използвате нещо толкова просто, колкото показва двоично число.

За да се покажат числа, които са по -големи от 9 в десетичен знак, добавяме още цифри. Всяка цифра идва с определен множител. Първата цифра отдясно идва с множител 1, следващата е 10, а следващата е 100. С всяка нова цифра множителят е десет пъти по -голям от този от цифрата преди. Знаем, че числото две, поставено с една цифра вляво, представлява числото 20. Докато две цифри вляво, то представлява 200.

В двоичната система всяка цифра също идва с множител. Въпреки това, тъй като всяка цифра може да има само две различни състояния, всеки нов множител е два пъти по -голям от предишния. О, и между другото, двоичните цифри се наричат битове. Така че нека да разгледаме нашия първи пример, ако поставим 1 на най -ниската позиция, това е просто 1, но ако го поставим на следващата по -висока позиция, където нашият множител е 2, той представлява числото 2 в двоично.

Какво ще кажете за малко по -сложния пример в долната част на картината. Третият и първият бит са включени. За да получим десетичното число, представено тук, просто добавяме стойностите на двата бита. Така че 4 * 1 + 1 * 1 или 4 + 1 ни дава числото 5.

8 бита се наричат байт, така че нека да видим какво число ще получим, ако запълним цял байт с единици.1+2+4+8+16+32+64+128, което е 255, което е най -високата стойност, която един байт може да има.

Между другото, докато в десетичната система цифрата с най -големия множител винаги е на първо място, имате два начина да запишете число в двоичен формат. Тези два метода се наричат най -малко значим байт първи (LSB) и най -значим байт първи (MSB). Ако искате да прочетете двоично число, трябва да знаете кой от двата формата се използва. Тъй като е по -близо до десетичната система, нашият двоичен часовник използва MSB варианта.

Нека се върнем към нашия пример от реалния свят. Както е подчертано на шестата снимка, нашият часовник има 4 бита за показване на часа. След това имаме 6 бита за минутата и също 6 бита за втората. Освен това имаме един бит am/pm.

Добре, кажете ми колко е часът на 6 -тата снимка, след което преминете към последната.. ….

в секцията за часове имаме 2+1, което е 3 и PM битът е включен, така че е вечер. Следва минутата 32+8, тоест 40. За секундите имаме 8+4+2, което е 14. Така че е 3:40:14 вечерта или 15:40:14.

Поздравления, току -що се научихте да четете двоичен часовник. Разбира се, отнема известно свикване и в началото ще трябва да събирате числата всеки път, когато искате да знаете колко е часът, но подобно на аналогов часовник без циферблат, вие свиквате с моделите на LED време.

И това е част от същността на този проект, като пренася нещо толкова абстрактно, колкото бинарната система, в реалния свят и го опознава по -добре.

Стъпка 11: Използване на двоичен будилник

Използване на двоичен будилник
Използване на двоичен будилник
Използване на двоичен будилник
Използване на двоичен будилник
Използване на двоичен будилник
Използване на двоичен будилник

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

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

Двойното докосване на бутона нагоре или надолу променя цветовия режим на светодиода. Можете да избирате между различни статични и избледняващи цветови режими, както и температурен режим. Ако сте в един от статичните цветови режими, задържането на бутона нагоре или надолу променя цвета. В режим на затихване едно докосване променя скоростта на анимациите.

За да зададете режим на димер, докоснете двукратно бутона OK. Светодиодният панел показва зададения режим, като мига няколко пъти.

  • Един път означава, че няма димер.
  • Два пъти означава, че яркостта се контролира от сензора за светлина.
  • Три пъти и светодиодите автоматично се изключват след 10 секунди бездействие.
  • Четири пъти и двата режима на димер се комбинират.

Продължителното натискане на бутона OK ще ви въведе в режим за настройка на времето, където можете да използвате стрелките нагоре и надолу, за да промените номера. Еднократно докосване на бутона OK ви отвежда от часовете до минутите, още едно докосване и можете да зададете секундите. След това едно последно докосване записва новото време. Ако влезете бързо в режим на настройка на часа, можете просто да изчакате 10 секунди и часовникът автоматично ще го напусне.

Както при бутона OK, продължителното натискане на бутона за аларма ви позволява да настроите алармата. Двойното докосване на бутона за аларма активира или деактивира алармата.

Ако часовникът звъни, еднократно докоснете бутона за аларма, за да го изпратите в режим на заспиване за 5 минути или да го задържите, за да деактивирате, дезактивирайте алармата.

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

Стъпка 12: Разбиране на кода (по избор)

Разбиране на кода (по избор)
Разбиране на кода (по избор)

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

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

Обясняването на всеки малък детайл от кода на часовниците би било самостоятелно инструктируемо, така че ще го поддържам просто, като обясня програмата по обектно ориентиран начин.

В случай, че не знаете какво означава това, обектно -ориентираното програмиране (OOP) е концепция за повечето съвременни езици за програмиране като C ++. Тя ви позволява да организирате различни функции и променливи в така наречените класове. Класът е шаблон, от който можете да създадете един или няколко обекта. Всеки от тези обекти получава име и собствен набор от променливи.

Например кодът на часовника използва няколко обекта MultiTouchButton, като например alarmButton. Това са обекти от класа MultiTouchButton, който е част от моята библиотека с бутони. Хубавото на тези обекти е, че можете да взаимодействате с тях подобно на обекти от реалния свят. Например, можем да проверим дали бутонът за аларма е натиснат два пъти чрез извикване на alarmButton.wasDoubleTapped (). Освен това изпълнението на тази функция е добре скрито в различен файл и не е нужно да се притесняваме, че ще го счупим, като променим нещо друго в нашия код. Бързо навлизане в света на обектно ориентираното програмиране може да бъде намерено на уебсайта на Adafruit.

Както можете да видите на графиката по -горе, програмата за часовници има куп различни обекти.

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

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

Обектът binaryClock управлява настройките за време и аларма, както и наблюдение на аларма. Освен това получава времето от rtc модула и го преобразува в двоичен информационен буфер за ledPanel.

ColorController капсулира всички функции на цветовия ефект и осигурява colorBuffer за ledPanel. Той също така запазва състоянието си в Arduinos EEProm.

Димерът се грижи за яркостта на часовниците. Той има различни режими, през които потребителят може да премине през цикъл. Текущият режим също се записва в EEProm.

LEDPanel управлява различни буфери за стойността на цвета, стойността на яркостта и двоичното състояние на всеки светодиод. Когато се извиква функцията pushToStrip (), тя се наслагва върху тях и ги изпраща към светодиодната лента.

Всички обекти са "свързани" чрез главния (файлът с настройките и цикличните функции), който включва само няколко функции за изпълнение на 3 основни задачи.

  1. Тълкуване на потребителското въвеждане - Това е входът от 4 -те обекта на бутоните и ги поставя чрез логика. Тази логика проверява текущото състояние на часовника, за да определи дали часовникът е в нормален режим, настройка на времето или режим на звънене и съответно извиква различни функции от другите обекти.
  2. Управление на комуникацията между обекти - Той непрекъснато пита обекта binaryClock дали има нова налична информация или дали алармата е Ringing (). Ако има нова информация, тя получава информационен буфер от binaryClock и го изпраща до обекта ledPanel. Ако часовникът звъни, той стартира джубокса.
  3. Актуализиране на обекти - Всеки от обектите на програмата има процедура за актуализиране, която се използва за неща като проверка на входовете или промяна на цветовете на светодиода. Те трябва да се извикват многократно във функцията цикъл, за да може часовникът да работи правилно.

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

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

Стъпка 13: Заключителни думи

Заключителни думи
Заключителни думи

Радвам се, че продължихте да четете до този момент. Това означава, че проектът ми не беше твърде скучен:).

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

Ще се радвам да чуя какво мислите за часовника в коментарите по -долу:).

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

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

LED конкурс 2017
LED конкурс 2017
LED конкурс 2017
LED конкурс 2017

Вицешампион в LED конкурса 2017

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