Стильные настенные часы на четырех кольцах Adafruit Neopixel 60 LED и Arduino
Компоненты и материалы
- Кольца Adafruit Neopixel 1/4 60 LED — 4 шт. (всего 240 LED)
- Плата eDOTcore (Arduino-совместимая с встроенным RTC) — 1 шт.
- Arduino UNO — 1 шт. (альтернатива)
- Arduino Nano R3 — 1 шт. (альтернатива)
- Arduino Micro — 1 шт. (альтернатива)
Программное обеспечение
- Arduino IDE
- Библиотеки:
RTClib,Adafruit_NeoPixel
О проекте
Настенные часы из четырёх сегментов по 60 RGB-LED (Neopixel WS2812), образующих круг. Часы, минуты, секунды отображаются цветными дугами с мягким затуханием по краям. Время берётся от RTC (DS1307 на плате eDOTcore или внешнем модуле). Яркость 20/255 — комфортно для ночного освещения.
Плата eDOTcore
Универсальная Arduino-совместимая плата с встроенным RTC (DS1307), слот для microSD, стабилизатором 3.3 В и удобной распиновкой для Neopixel. Идеальна для этого проекта.
Код (упрощённый вариант для одного кольца 60 LED)
#include <Wire.h>
#include <RTClib.h>
#include <Adafruit_NeoPixel.h>
#define PIN 6
#define PIXEL 60
Adafruit_NeoPixel strip = Adafruit_NeoPixel(PIXEL, PIN, NEO_GRB + NEO_KHZ800);
RTC_DS1307 RTC;
DateTime Clock;
byte hourval, minuteval, secondval;
void setup() {
Serial.begin(9600);
Wire.begin();
RTC.begin();
if (!RTC.isrunning()) {
// RTC.adjust(DateTime(__DATE__, __TIME__)); // раскомментируйте при первом запуске
}
strip.begin();
strip.show();
strip.setBrightness(20);
}
void loop() {
Clock = RTC.now();
secondval = Clock.second();
minuteval = Clock.minute();
hourval = Clock.hour();
if (hourval > 11) hourval -= 12; // 12-часовой формат
hourval = (hourval * 60 + minuteval) / 12; // плавное движение часовой стрелки
// Часовая стрелка (бирюзовая) с хвостом
strip.setPixelColor(hourval, 0x008080);
strip.setPixelColor(hourval - 1, 0x004040);
strip.setPixelColor(hourval + 1, 0x004040);
strip.setPixelColor(hourval + 2, 0x001010);
// Минутная стрелка (пурпурная)
strip.setPixelColor(minuteval, 0x800080);
strip.setPixelColor(minuteval + 1, 0x200020);
// Секундная стрелка (жёлтая)
strip.setPixelColor(secondval, 0x808000);
strip.setPixelColor(secondval + 1, 0x002F00);
strip.show();
delay(25);
// гасим след (простой способ — перезапись нулями)
strip.setPixelColor(hourval, 0); strip.setPixelColor(hourval - 1, 0);
strip.setPixelColor(hourval + 1, 0); strip.setPixelColor(hourval + 2, 0);
strip.setPixelColor(minuteval, 0); strip.setPixelColor(minuteval + 1, 0);
strip.setPixelColor(secondval, 0); strip.setPixelColor(secondval + 1, 0);
}
Сборка 4-кольцевых часов
- Соберите 4 кольца в круг (3D-печатные детали на Thingiverse).
- Соедините цепочкой: DOUT первого → DIN второго и т.д. Питание параллельно (подайте 5 В от мощного БП, ~2 А на 240 LED).
- DIN первого кольца → пин D6 Arduino/eDOTcore.
- Прошейте код, адаптировав индексы LED для 4-х колец (всего 240 пикселей).
3D-модели
Детали для печати на Thingiverse (поиск по «Neopixel ring wall clock»).
Производственный процесс
- Arduino POV-часы: сборка дисплея на эффекте сохранения образа
- Создание потрясающей системы Ambilight для монитора на Arduino
- Слово-часы (Word Clock) на Arduino — DIY-часы с текстовой индикацией времени
- Интерактивный гироскопический LED-дисплей на NeoPixel Ring и Arduino
- Создание пользовательских LED-часов с будильником — видно с 12 метров
- Умный вольтметр на Arduino и смартфоне — простое DIY-проект
- IoT-монитор пульса в реальном времени на Arduino и MAX30100
- Веб-сервер на Arduino Uno WiFi: управление LED через браузер
- Pixie: DIY-наручные часы на Arduino Pro Mini и NeoPixel — стильный светодиодный тахометр времени
- Надёжные будильник на DS1302 RTC и Arduino UNO — сборка и код