Этот скетч реализует часы с аналоговым и цифровым отображением времени на цветном LCD-щите. Пользователь может устанавливать время с помощью кнопок на плате.
- Отображение времени в аналоговом (со стрелками) и цифровом формате
- Возможность настройки времени с помощью кнопок:
- S3 - вход/выход из режима настройки
- S1 - увеличение часов
- S2 - увеличение минут
- Поддержка 12-часового формата с индикацией AM/PM
// Начальное время (12-часовой формат)
#define HOURS 10 // Часы (1-12)
#define MINUTES 21 // Минуты (0-59)
#define SECONDS 00 // Секунды (0-59)
#define AMPM 0 // 0 - AM, 1 - PM
// Внешний вид часов
#define CLOCK_RADIUS 50 // Радиус циферблата
#define CLOCK_CENTER 55 // Центр циферблата (X-координата)
#define H_LENGTH 30 // Длина часовой стрелки
#define M_LENGTH 40 // Длина минутной стрелки
#define S_LENGTH 48 // Длина секундной стрелки
// Цвета
#define BACKGROUND BLACK // Цвет фона
#define C_COLOR WHITE // Цвет циферблата и цифровых часов
#define H_COLOR RED // Цвет часовой стрелки
#define M_COLOR GREEN // Цвет минутной стрелки
#define S_COLOR YELLOW // Цвет секундной стрелки- В функции
setup()инициализируется LCD, устанавливается начальное время и рисуются часы. - В основном цикле
loop()каждую секунду:- Увеличивается счетчик времени
- Обновляется отображение часов
- При нажатии кнопки S3 активируется функция
setTime()для настройки времени:- S1 увеличивает часы
- S2 увеличивает минуты
- Повторное нажатие S3 выходит из режима настройки
drawClock()- рисует циферблат с цифрами 12, 3, 6 и 9displayAnalogTime()- отображает стрелки часовdisplayDigitalTime()- выводит цифровое время в нижней части экранаsetTime()- обработка настройки времени с помощью кнопок
- Использует тригонометрические функции для расчета положения стрелок
- Поддерживает плавное движение часовой стрелки между целыми часами
- Имеет настраиваемые цвета и размеры элементов
- Реализовано удаление предыдущего положения стрелок перед отрисовкой новых
Для работы требуется библиотека ColorLCDShield. Скетч хорошо демонстрирует использование графических функций библиотеки для создания интерактивного интерфейса.