278.14K

Электронные часы

1.

Электронные часы
На базе Arduino

2.

Основной принцип работы:
Основной принцип её работы заключается во взаимодействии трех
главных элементов (рис 1.5):

3.

Как все работает:
Главная плата (Arduino Uno): Она объединяет все детали, запускает
программный код и обрабатывает информацию (на рис 1.5 под
номером 1).
Модуль точного времени (RTC): Он отвечает за ход времени, а также
имеет встроенную батарейку, поэтому часы не сбиваются даже без
внешнего питания (на рис 1.5 под номером 2).
Экран (OLED): экран, который показывает время (на рис 1.5 под
номером 3).

4.

Код

5.

Как работает код:
Внутри часов постоянно по кругу выполняется три действия:
Запрос: Раз в секунду главная плата спрашивают у модуля точного
времени: Сколько сейчас минут и секунд.
Исправление: Чтобы время выглядело красиво (например, 09:05, а
не 9:5), программа сама дописывает нолик перед цифрами, если
они маленькие.
Показ: Часы стирают старое время и мгновенно рисуют новое. Это
происходит так быстро, что нам кажется, будто секунды бегут
плавно.

6.

За что отвечает код:
Подготовка
#include ...: Подключение библиотек. Это набор инструкций, который
объясняет Arduino, как общаться с дисплеем и модулем часов.
#define SCREEN_WIDTH/HEIGHT: Задание размеров экрана (128x64 пикселя).
Adafruit_SSD1306 display(...): Создание объекта «экран», через который мы
будем отдавать команды на рисование.
RTC_DS3231 rtc: Создание объекта «часы», у которого мы будем спрашивать
время.

7.

Блок инициализации: void setup
Serial.begin(9600): Запуск связи с компьютером .
if (!display.begin...): Проверка, подключен ли экран. Если нет —
программа напишет ошибку и «зависнет», чтобы ты знал о
проблеме.
if (!rtc.begin()): Проверка подключения модуля часов (RTC).
display.clearDisplay(): Очистка памяти экрана от случайного мусора
при старте.

8.

Основной процесс: void loop
Этот код работает по кругу бесконечно:
DateTime now = rtc.now(): Мы «фотографируем» текущий момент
времени из модуля часов и записываем его в переменную now.
display.clearDisplay(): Очистка экрана перед тем, как нарисовать
новое время (чтобы цифры не накладывались друг на друга).
display.drawRect(0, 0, 128, 64, ...): Рисование прямоугольной рамки
по самому краю дисплея.
display.setTextSize(2) и setCursor: Установка крупного размера
шрифта и координат (отступ слева 15, сверху 25), откуда начнется
текст.

9.

Основной процесс: void loop
setTextSize(1) — уменьшает шрифт, чтобы дата была меньше часов и
поместилась внизу.
setCursor(35, 50) — переносит «курсор» (невидимый карандаш) вниз экрана,
чтобы начать писать дату под часами.
Строки 53–57 (Вывод даты): По очереди печатает день, месяц и год,
разделяя их косой чертой /. Например: 20/4/2026.
Строка 59 (display.display()): Самая важная команда. До этого момента все
рисунки были только в «уме» (памяти) Arduino. Эта строка приказывает
отправить всё нарисованное на реальное стекло экрана.
Строка 60 (delay(1000)): Делает паузу в 1 секунду (1000 миллисекунд), чтобы
часы обновлялись раз в секунду, а не мельтешили слишком быстро.
English     Русский Правила