Идея ко Дню Святого Валентина - счетчик дней, проведенных вместе (фото)
Компоненты и расходные материалы
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 |
Об этом проекте
Еще в 2017 году, в сентябре, я думаю, я только начинал второй год в университете и встретил потрясающую девушку. Я переехал в квартиру с ней и ее друзьями, и в итоге мы делили этаж дома вместе, только я и она. Так мы поговорили и стали лучшими друзьями, а через пару месяцев мы начали встречаться друг с другом. День, когда мы начали, был 10.12.2017 (ДАТА ВЕЛИКОБРИТАНИИ).
День; 10-е
Месяц; 12-е
В любом случае, проходит почти год, и я пытаюсь понять, что делать на нашу годовщину, и мне в голову приходит идея. Я подумал, что было бы неплохо заставить ее делать то, что я изучаю (электроника), поэтому я решил использовать систему подсчета, которая подсчитывает количество дней, в которые мы начали встречаться, и поместила ее в фоторамку и сфотографировала себя и ее вместе.
Возможно, вы наткнулись на эту тему и вам нужна идея для своей годовщины, или, может быть, вы просто просматриваете, в любом случае это интересный проект, и я буду вводить все здесь, чтобы показать вам, как сделать это сами.
Единственная сложная часть этого проекта - это код. Я сделал образец шаблона, который, когда вы его скомпилируете и загрузите, будет отображать мою дату и дату моей подруги, но я добавил комментарии в код, чтобы вы могли редактировать свою дату
В любом случае, наслаждайтесь!
Код
- DaysCounter.ino
DaysCounter.ino C / C ++
для этого вам нужно будет скачать Arduino IDEZIP-файл библиотеки RTC,
семисегментный zip-архив
сохраните обе библиотеки в папку с библиотеками, где установлен arduino ide.
оттуда откройте arduino ide и нажмите «эскиз»
'включить библиотеки'
'добавить библиотеки zip'
следуйте приведенному ниже коду
ДЛЯ НАСТРОЙКИ ВРЕМЕНИ - в строке 7 в скобках (2017, 12, 9, 0, 0, 0,) вам нужно изменить первые 3 числа.
т.е. 2017, 12, 9 ----> 2014, 4, 6,
какое бы свидание вы ни собирались, укажите его здесь.
затем скомпилируйте и выберите загрузку, и если все прошло по плану и вы правильно выполнили шаги, он должен отобразить количество дней, в течение которых вы были вместе
#include#include SevSeg sevseg; // Создание экземпляра объекта контроллера из семи сегментов RTC_DS3231 rtc; DateTime dtBegin (2017, 12, 9, 0, 0, 0); // !!!! настройте время здесь !!!!! TimeSpan tsPassed; void showInfo (const DateTime &dt) {Serial.print ("NOW:"); Serial.print (dt.year (), DEC); Серийный принт ('/'); Serial.print (dt.month (), DEC); Серийный принт ('/'); Serial.print (dt.day (), DEC); Серийный.принт (''); Serial.print (dt.hour (), DEC); Серийный принт (':'); Serial.print (dt.minute (), DEC); Серийный принт (':'); Serial.print (dt.second (), DEC); Serial.print ("\ tPASSED:"); Serial.print (tsPassed.days (), DEC); Серийный.принт (''); Serial.print (tsPassed.hours (), DEC); Серийный принт (':'); Serial.print (tsPassed.minutes (), DEC); Серийный принт (':'); Serial.print (tsPassed.seconds (), DEC); Serial.println ("");} // =========================================//// =========================================void delayWithUpdate ( uint32_t parDelay) {uint32_t start =millis (); в то время как (millis () <запущено + parDelay) {sevseg.refreshDisplay (); }} // =========================// =========================void setup () {Serial.begin (9600); Serial.println (__ ВРЕМЯ__); if (! rtc.begin ()) {Serial.println ("Не удалось найти RTC"); // ===Здесь устройство будет заморожено. // ????????? Может быть некоторая ошибка мигает светодиодом, было бы хорошо использовать ?????? в то время как (1); } задержка (1000); // !!!!! ЧТОБЫ УСТАНОВИТЬ ВРЕМЯ:// 1) раскомментируйте строку ниже (под этими комментариями) // 2), загрузите код еще раз // 3) ЗАПИСАТЬ СТРОКУ // 4). uploand ЕЩЕ ОДНО ВРЕМЯ rtc.adjust (DateTime (F (__ DATE__), F (__ TIME__))); // строка для настройки времени байт numDigits =4; byte digitPins [] ={7, 8, 9, 10}; // СЕГ:А Б В Г Д Е Ж. // PIN:11 7 4 2 1 10 5 3 // ARDU:2 3 4 5 11 12 13 6 // байтовый сегмент Pins [] ={2, 3, 4, 5, 11, 12, 13, 6}; byte segmentPins [] ={2, 3, 4, 5, 11, 12, 13, 6}; bool resistorsOnSegments =false; // «false» означает, что резисторы находятся на выводах цифр byte hardwareConfig =COMMON_CATHODE; // Параметры см. В README.md bool updateWithDelays =false; // Рекомендуемое значение по умолчанию - false booladingZeros =false; // Используйте 'true', если хотите сохранить ведущие нули bool disableDecPoint =true; // Используйте 'true', если ваша десятичная точка не существует или не подключена sevseg.begin (hardwareConfig, numDigits, digitPins, segmentPins, resistorsOnSegments, updateWithDelays, leadingZeros, disableDecPoint); sevseg.setBrightness (100); sevseg.setNumber (1234, 1); delayWithUpdate (1000); sevseg.setNumber (8888, 1); delayWithUpdate (1000); } // =========================// =========================void loop () {sevseg.refreshDisplay (); DateTime now =rtc.now (); tsPassed =now-dtBegin; статический uint32_t nextReportMillis =0; статический uint16_t prevDaysPassed =0; если (tsPassed.days ()! =prevDaysPassed) {prevDaysPassed =tsPassed.days (); sevseg.setNumber (prevDaysPassed, 0); } sevseg.refreshDisplay (); if (millis ()> nextReportMillis) {// ===ПЕЧАТЬ НЕКОТОРОЙ ИНФОРМАЦИИ ЗДЕСЬ showInfo (now); nextReportMillis =millis () + 5000; }}
Схема
https://www.circuito.io/app?components=512,11021]скопируйте и вставьте ссылку.
нажмите добавить компоненты
тип;
RTC (добавить);
7-сегментный дисплей 20 мм (выбирайте общий, не выбирайте Sparkfun);
следуйте схеме и прикрепите каждый штырь с помощью соединительных кабелей.
Производственный процесс
- Цифровые игральные кости Arduino
- Железный человек
- Найди меня
- Роботизированная рука, напечатанная на 3D-принтере Arduino
- Управление увлажнителем Arduino
- Счетчик автомобилей с использованием Arduino + Обработка + PHP
- Счетчик RPM на основе Arduino с новым и более быстрым алгоритмом
- NeoMatrix Arduino Pong
- Джойстик Arduino
- FM-радиоприемник Arduino TEA5767