След като получи няколко дъски Arduino, и различни радио компоненти, за да се запознае с микроконтролерите, авторът реши да направи нещо интересно и в същото време полезно. Имайки на склад голям брой светодиоди, се появи идеята да създадете двоичен часовник.
От страна на електрониката бинарен часовник не е особено сложен, но авторът усложнява задачата и реши да не записва бутони и светодиоди. Първоначално проектът беше да се използват 22 светодиода, 6 бутона и един пищялка. Освен това беше идея да се сглоби часовник на Arduino Mega поради по-голям брой пинове, но регистрите за смяна 74HC595 се оказаха спасение.
материали:
- Ардуино Уно
- 2 пълен размер хлебчета
- светодиоди червени 7 бр
- Зелени светодиоди 7 бр
- Сини светодиоди 6 бр
- 2 жълти и бели светодиода
- Резистори 220 ома 25 бр
- Пиезо зумер 1 бр
- 6 бутона бутони за такт
- Shift изходни регистри 74HC595 в пакет DIP-16 3 бр
- Свързване на проводници 90 бр
- Часовник в реално време, базиран на чипа DS1307 RTC
Как ще работи всичко.
Има около 10 вида бинарни часовници. Някои показват време в двоичен десетичен (BCD) формат, други като двоични числа. Тъй като авторът не харесва особено BCD-часовника, той реши да направи своя чист двоичен. На някои хора им е по-трудно да четат, но разликата не е голяма, защото превеждането на числа от двоични в десетични е лесно. Също така предпоставка за създателя на часовника беше индикация за секундите на часовника.
В допълнение, часовникът има 6 бутона:
Set - отговаря за режима на настройка на часовника / алармата и запазването на параметъра в режим на настройка.
Режим - отговорен за превключване между режимите на часовник, аларма и таймер.
Нагоре - в настройката на часовника / алармата / таймера, увеличава параметъра с едно. В будилника и таймера той отговаря за активирането и деактивирането на избрания режим. Когато се задейства сигнал, той ще изключи сигнала за аларма / таймер.
Надолу - в настройката на часовника / алармата / таймера, тя ще намали параметъра с един. Таймерът ще го постави на пауза, без да нулира отброяването. Когато алармата изгасне, тя ще предава сигнала за 5 минути.
24/12 - промяна на формата на времето.
Dim - отговаря за включването и изключването на светодиодите (когато светодиодите са изключени, останалите бутони спират да работят).
LED схема за позициониране:
Свързване на компонент
Авторът ще свърже всички светодиоди серийно и с резистор. Резисторът е споен на един от изводите на светодиодите, няма значение кой. Светодиодите ще бъдат свързани чрез регистри за смяна, този чип има 16 контакта.Този брой пинове ви позволява да използвате голям брой пинове, като вземете само 3 пина на Arduino.
Shift Register Pinout 74HC595:
Q0-Q7 са констатациите на регистъра, към който ще бъдат свързани светодиодите.
Vcc - към него ще бъде приложен 5V захранващ щифт.
GND - земя, свързана с GND на Arduino.
OE - щифтът е отговорен за обърнатото активиране на щифтовете, но той няма да бъде използван, той просто се къса до земята.
MR е обърнато регистърно изчистване, не е необходимо да се контролира, следователно ще бъде свързан към 5V захранване.
ST_CP - pin е отговорен за актуализирането на състоянието на регистъра. Когато записвате състоянието, е необходимо да приложите LOW към него, след запис - ВИСОКО, за да актуализирате състоянието на изходите. Необходимо е да бъде свързан с щифт на Arduino. Можете да свържете този щифт в три регистъра паралелно.
SH_CP - пин, отговорен за преместването с 1 бит на регистъра. Необходимо е да бъде свързан с щифт на Arduino. Те са свързани по микросхеми също паралелно.
DS - на този пин се изпращат данни, те са свързани с пина на Arduino.
Q7 '- този щифт се използва за каскадна връзка с други регистри 74HC595.
Схема на свързване:
Пиезозвукът ще бъде свързан към третия пин Arduino последователно с резистора. Преди да включи пищялката във веригата, авторът разгледа кои пинове поддържат PWM, тъй като това е задължително за нея. На Arduino Uno, PWM поддържа 3, 5, 6, 9, 10 и 11 пина.
Бутоните са свързани чрез резистори, вградени в Arduino, като едната страна на бутоните е свързана със земята, а другата - с щифтовете на Arduino.
И така, крайният дизайн изглежда:
Изградете върху табла
След като получи допълнителни подробности, авторът започва да сглобява проекта на дъска според схемите. Външен вид беше на път да се очаква, тъй като таблата ограничава свободата при поставянето на компоненти, а стърчащите проводници не създават естетическо удоволствие. Но в края на краищата, плочата е предназначена за модели, но не и за готови устройства.
Програмен код.
Имайки достатъчно умения в програмирането, авторът реши да напише код сам, без да използва разработките на други хора. Първата стъпка беше да напишете подпрограма, тя отговаря за мигането на всички диоди и подаването на пиезо сигнал при включване. Тази функция помага да се провери целостта на веригата, подобно на тази, реализирана на много устройства.
Скицата излезе доста голяма, тогава можете да вземете предвид основните й характеристики.
LED работа.
Тъй като до светодиодите се осъществява достъп чрез регистъра на смяната, на първо място, беше необходимо да се приложат повече подпрограми за светодиодите. За по-лесна работа с диоди са реализирани редица допълнителни функции. Прилагат се различни ефекти от анимацията на диодите. Когато часовникът не е настроен, диодите, отговорни за часове и минути, ще започнат да мигат (тъй като обикновеният часовник мига, когато не е зададен). Светодиодите, отговорни за секунди, също имат своя анимация, диодът може да работи наляво и надясно в режим на аларма или в режим на настройка на часовника.
Основен контур.
Програмата е конфигурирана да работи по следния начин: часовникът показва информация в зависимост от текущото състояние и променя нейното състояние в зависимост от използването на бутони и събития. Всичко изглежда като значително количество вложени условия. Състоянието на диодите се актуализира всеки път след проверка на състоянието на таймери и бутони с повикване до техния манипулатор.
Освен това авторът свърши чудесна работа за правилната работа на входните бутони и таймери. Изходният код на скицата може да бъде изтеглен под статията.
Стартово оформление
След като включите проекта, на пръв поглед устройството работеше правилно и стабилно. Но авторът намери недостатък, часовникът изоставаше с една секунда на час, дълго време това би било голяма грешка.
След като проучихме този проблем, беше установено, че оригиналният Arduino Uno използва керамичен резонатор и му липсва точност за измерване на времето в дълги периоди. Най-рационалното решение беше да купите часовник в реално време, плюс заради този модул времето на часовника няма да се заблуди, когато е изключено. Авторът закупи Grove RTC модула от Seeed Studio. Това е завършена дъска с часовник чип. Авторът свърза щифтовете на модула SDA и SCL към Arduino на щифтовете A4 и A5, GND към земята. Тъй като 5V мощността е заета от таблото на часовника, нямаше къде да свържете модула. Авторът реши да захранва модула от един от цифровите пинове, които ще бъдат постоянно захранвани.Също така авторът трябваше да модифицира изходния код и да добави библиотека с часовници в реално време.
Гледайте монтажа
След като приключихте с продължителна работа по кода, време е да придадете на устройството завършен вид и да го прехвърлите от дънната платка към печатаната платка. На първо място, беше необходимо да се направи окабеляване за дъската. За това беше използвано фризиране, тъй като авторът вече имаше представа за външния вид на часовника и той изгради схема на устройството. Авторът също ръчно проследи дъската, отне много време.
Проект за производство на печатни платки:
Производството на печатни платки е поръчано в Китай. Seeed Studio има услуга за платка Fusion PCB. Чрез Fritzing файлът е експортиран в разширения Gerber формат, много производители на платки работят с него. Две седмици по-късно авторът получи дългоочаквания хонорар по пощата.
Остана само да спойка вече малко прашни части върху дъската. Готовият резултат след запояване изглеждаше много по-добър от оформлението на плота.
Авторът на проекта работи усилено дълго време и получи това, което иска - уникален двоичен часовник с таймер и будилник. Използвайки отделението за батерията, часовникът може да бъде поставен навсякъде. Ардуино отговори на очакванията и напълно се справи със задачата.