Своими руками

Программная реализация стрелочных часов на Arduino


Реализовать программно стрелочные часы — задание, которое часто дают школьникам на уроке информатики. Так преподаватель убеждается, что ученик хорошо знает не только изучаемый язык программирования, но и тригонометрию. Но тот компьютер, на котором школьник решает эту задачу, слишком мощен для неё, даже если это древний 386-й, не говоря уж о современных. Со всей задействованной там математикой справится и Arduino — так решил автор Instructables под ником thescientistformerlyknownasNaegeli. Вот он берёт Arduino Pro Mini на 3,3 В, однобитный дисплей для телефона Nokia 5110, модуль часов реального времени на микросхеме DS3231, аккумулятор и контроллер заряда, различные принадлежности:

Программная реализация стрелочных часов на ArduinoПрограммная реализация стрелочных часов на Arduino
Всё это он собирает по такой схеме:

Программная реализация стрелочных часов на Arduino
И вот что у него получается:

Программная реализация стрелочных часов на Arduino
Но в сборке здесь нет ничего сложного. Самое интересное — математика, за которую мастер и берётся. Далее он показывает направление координат на дисплее:

Программная реализация стрелочных часов на Arduino
Усложняя себе задачу, мастер реализует стрелки, более сложные, чем отрезки прямых, школьники на уроках информатики до такого усложнения доходят редко, а потом, когда вырастают — навёрстывают.

Программная реализация стрелочных часов на Arduino
Мастер останавливается на наиболее сложном варианте, где стрелка состоит из четырёх точек, и показывает формулы для расчёта координат этих точек на примере двух времён: 9:25 и 2:05.

Программная реализация стрелочных часов на Arduino
Угол наклона минутной стрелки в градусах рассчитать просто: достаточно умножить число минут на 6. Только сам угол откладывать по часовой стрелке, а не против, как это обычно делают. Для часовой стрелки угол рассчитать сложнее, если учесть, что она не перепрыгивает с деления на деление, а перемещается между ними плавно:

угол = (часы x 30°) + (минуты x 0.5°)

Ну и направление координат на дисплее тоже нужно учитывать, кстати, в школьных DOSовских Бейсиках оно тоже отличается от того, которым пользуются математики. Но поскольку стрелки будут четырёхточечными, далее математика пускается в ход несколько более сложная.

Программная реализация стрелочных часов на ArduinoПрограммная реализация стрелочных часов на ArduinoПрограммная реализация стрелочных часов на ArduinoПрограммная реализация стрелочных часов на Arduino
Профессиональная деформация программиста — штука сильная, она может даже заставить человека программировать на пляже вместо отдыха:

Программная реализация стрелочных часов на Arduino
Но вот скетч готов, мастер выкладывает его сюда. После скачивания нужно сменить расширение файла с unknown на ino.

Ну а поскольку при повторении конструкции вы вряд ли будете прорабатывать всю математику заново, хорошо бы изготовить своими руками, со своей математикой (учёт толщины стенок, и так далее), хотя бы корпус, например, из фанеры или оргстекла, а не брать готовый или 3D-печатный.

Часы, повторённые участником Instructables под ником rescueseven:

Программная реализация стрелочных часов на Arduino

admin

Только те, кто предпринимают абсурдные попытки, смогут достичь невозможного. - Альберт Эйнштейн

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.

Follow us

Don't be shy, get in touch. We love meeting interesting people and making new friends.