====== Автономные часы ====== **[[arduino-projects:start|Проекты на Arduino Uno и Slot Shield]]** [[amp>product/arduino-uno?utm_source=proj&utm_campaign=arduino-slot-proj-3&utm_medium=wiki|Arduino Uno]] неплохо справляется с ролью электронных часов. Но есть один существенный недостаток. Если отключить питание платы, время придётся задавать по-новой. С этой проблемой справятся [[amp>product/troyka-rtc?utm_source=proj&utm_campaign=arduino-slot-proj-3&utm_medium=wiki|часы реального времени]]. У них есть своя батарейка, поэтому время не собьётся. {{ :arduino-projects:start:alarmclock3.png |}} Для управления гаджетом используется [[amp>product/troyka-quad-switch?utm_source=proj&utm_campaign=arduino-slot-proj-3&utm_medium=wiki|четырёхкнопочная клавиатура]]. С её помощью можно задать точное время без перепрошивки. * Платформы: [[amp>product/arduino-uno?utm_source=proj&utm_campaign=arduino-slot-proj-3&utm_medium=wiki|Arduino Uno]], [[amp>product/arduino-leonardo?utm_source=proj&utm_campaign=arduino-slot-proj-3&utm_medium=wiki|Arduino Leonardo]], [[amp>product/iskra-neo?utm_source=proj&utm_campaign=arduino-slot-proj-3&utm_medium=wiki|Iskra Neo]] * Язык программирования: Arduino (C++) ===== Что потребуется ===== [[amp>collection/alarm-clock?utm_source=proj&utm_campaign=arduino-slot-proj-3&utm_medium=wiki | Полный сет]] компонентов проекта. В сет входят: * [[amp>product/arduino-uno?utm_source=proj&utm_campaign=arduino-slot-proj-3&utm_medium=wiki|Arduino Uno]] * [[amp>product/arduino-troyka-slot-shield?utm_source=proj&utm_campaign=arduino-slot-proj-3&utm_medium=wiki|Troyka Slot Shield]] * четырёхразряный индикатор [[amp>product/troyka-quad-display?utm_source=proj&utm_campaign=arduino-slot-proj-3&utm_medium=wiki|Quad Display]] * [[amp>product/troyka-quad-switch?utm_source=proj&utm_campaign=arduino-slot-proj-3&utm_medium=wiki|четырёхкнопочная клавиатура]] * [[amp>product/troyka-rtc?utm_source=proj&utm_campaign=arduino-slot-proj-3&utm_medium=wiki|часы реального времени]] ===== Видеоинструкция ===== {{youtube>eUlIHs75VaY?large}} ===== Как собрать ===== Установите [[amp>product/arduino-troyka-slot-shield?utm_source=proj&utm_campaign=arduino-slot-proj-3&utm_medium=wiki|Troyka Slot Shield]] на [[amp>product/arduino-uno?utm_source=proj&utm_campaign=arduino-slot-proj-3&utm_medium=wiki|Arduino Uno]] {{ :arduino-projects:bionical-alarm:alarmclock0.png |}} Вставьте [[amp>product/troyka-quad-display?utm_source=proj&utm_campaign=arduino-slot-proj-3&utm_medium=wiki|Quad Display]] в разъёмы ''E'' и ''F''. Пин ''CS'' подключу к ''10'' пину Arduino. {{ :arduino-projects:bionical-alarm:alarmclock1.png |}} Установите [[amp>product/troyka-quad-switch?utm_source=proj&utm_campaign=arduino-slot-proj-3&utm_medium=wiki|четырёхкнопочную клавиатуру]] в слот ''C''. Сигнал первой кнопки подключите к пину ''0'', второй к ''1'', третьей к ''4'' и четвёртой к ''5''. {{ :arduino-projects:bionical-alarm:alarmclock2.png |}} [[amp>product/troyka-rtc?utm_source=proj&utm_campaign=arduino-slot-proj-4&utm_medium=wiki|Часы реального времени]] вставьте в пины ''I²C'' разъёма ''B''. Вставьте батарейку [[amp>product/battery-cr1225?utm_source=proj&utm_campaign=arduino-slot-proj-4&utm_medium=wiki|CR1225]] в держатель на лицевой панели модуля. {{ :arduino-projects:bionical-alarm:alarmclock3.png |}} ===== Скетч ===== Прошейте контроллер скетчем через [[articles:arduino-ide-install|Arduino IDE]]. // Подключаем библиотеку для работы с дисплеем #include // создаём объект класса QuadDisplay и передаём номер пина CS QuadDisplay qd(10); // библиотека для работы I²C #include // библиотека для работы с часами реального времени #include "TroykaRTC.h" // создаём объект для работы с часами реального времени RTC clock; // пины к которым подключены кнопки #define BUTTON_PIN_1 0 #define BUTTON_PIN_2 1 #define BUTTON_PIN_3 4 #define BUTTON_PIN_4 5 // создаем объект класса long для хранения счетчика long lastTimeButton = 0; void setup() { //инициализация кнопок pinMode(BUTTON_PIN_1,INPUT_PULLUP); pinMode(BUTTON_PIN_2,INPUT_PULLUP); pinMode(BUTTON_PIN_3,INPUT_PULLUP); pinMode(BUTTON_PIN_4,INPUT_PULLUP); // инициализация дисплея qd.begin(); // инициализация часов clock.begin(); // метод установки времени и даты в модуль вручную // clock.set(10,25,45,20,05,2019,MONDAY); // метод установки времени и даты автоматически при компиляции clock.set(__TIMESTAMP__); // что бы время менялось при прошивке или сбросе питания // закомментируйте оба метода clock.set(); } void loop() { // запрашиваем данные с часов clock.read(); // считываем показания часов и минут в переменные int hours = clock.getHour(); int minutes = clock.getMinute(); // в зависимости от состояние кнопок увеличиваем / уменьшаем часы и минуты if (millis() - lastTimeButton>500 && !digitalRead(BUTTON_PIN_1)) { clock.setHour(hours + 1); lastTimeButton = millis(); } if (millis() - lastTimeButton>500 && !digitalRead(BUTTON_PIN_2)) { clock.setHour(hours - 1); lastTimeButton = millis(); } if (millis() - lastTimeButton>500 && !digitalRead(BUTTON_PIN_3)) { clock.setMinute(minutes - 1); lastTimeButton = millis(); } if (millis() - lastTimeButton>500 && !digitalRead(BUTTON_PIN_4)) { clock.setMinute(minutes + 1); lastTimeButton = millis(); } // выводим время на дисплей qd.displayScore(hours, minutes, true); } ====== Часто задаваемые вопросы ====== > Где скачать необходимые библиотеки и как их установить? * [[https://github.com/amperka/QuadDisplay2|Библиотека для работы с дисплеем]] * [[https://github.com/amperka/TroykaRTC|Библиотека для часов реального времени]] * [[программирование:библиотеки|Как установить библиотеку]] > У моего модуля QuadDisplay всего три ноги и расположены они слева. Можно ли использовать его в этом проекте? У вас предыдущая версия модуля. Она снята с производства пару лет назад. С этим скетчем, библиотекой и схемой сборки модуль работать не будет.