Интернет-магазин «Неглупый Дом»
DS1302 хранит время, 28BYJ-48 раз в минуту доворачивает физическую стрелку на нужный угол.
DS1302 — часы реального времени с батарейкой, продолжающие считать время даже при отключении Arduino от питания. Раз в минуту плата считывает текущее время, переводит его в нужный угол поворота стрелки и вычисляет разницу между текущим и целевым положением вала шагового двигателя, доворачивая его ровно на эту разницу.
Разводка модулей у разных производителей отличается — если на вашей плате контакты называются иначе, сориентируйтесь по маркировке.
// ВНИМАНИЕ: рекомендую отладить код через монитор порта, так как я языковая
// модель, а не специализированный кодер, и могу что-то упустить.
#include <ThreeWire.h>
#include <RtcDS1302.h>
#include <Stepper.h>
ThreeWire myWire(4, 5, 3);
RtcDS1302<ThreeWire> Rtc(myWire);
const int stepsPerRevolution = 2048;
Stepper myStepper(stepsPerRevolution, 8, 10, 9, 11);
long currentPosition = 0;
void setup() {
Serial.begin(9600);
Rtc.Begin();
myStepper.setSpeed(10);
}
void loop() {
RtcDateTime now = Rtc.GetDateTime();
int minuteOfHalfDay = (now.Hour() % 12) * 60 + now.Minute();
long targetPosition = map(minuteOfHalfDay, 0, 720, 0, stepsPerRevolution);
long diff = targetPosition - currentPosition;
if (diff != 0) {
Serial.print("Поворот на шагов: ");
Serial.println(diff);
myStepper.step(diff);
currentPosition = targetPosition;
}
delay(60000);
}
При первом запуске стрелку выставьте вручную на 12:00, часы DS1302 — командой `Rtc.SetDateTime()`.
Ещё модули для Arduino: Электронные модули.
🎁 Купить весь комплект со скидкой 10%
Все 2 товара сразу: 296 ₽ 266 ₽ (экономия 30 ₽)
Скидка применяется автоматически при оформлении заказа, если в корзине именно этот комплект.
Остались вопросы? Проконсультируйтесь с ИИ-инженером — он уже в курсе темы статьи и сразу ответит, ничего вводить не нужно.