Adafruit 60 LED NeoPixelリングとArduinoで作るスタイリッシュな壁掛け時計
必要な部品と材料
| 部品 | 数量 | 備考 |
|---|---|---|
| Adafruit NeoPixel 1/4 60リング | 4 | 60個のLEDを搭載したリング×4で全240ピクセル構成 |
| eDOTcoreボード | 1 | 内蔵RTCを持つArduino互換ボード |
| Arduino UNO | 1 | 代替用マイコンボード |
| Arduino Nano R3 | 1 | 代替用マイコンボード |
| Arduino Micro | 1 | 代替用マイコンボード |
使用ソフトウェア
- Arduino IDE
プロジェクト概要
eDOTcore:内蔵RTCを備えた多機能Arduinoボード
このプロジェクトでは、Adafruitの60 LED NeoPixelリングを4つ組み合わせ、eDOTcoreボード(またはArduino UNO/Nano/Micro)で制御するアナログ風デジタル壁掛け時計を製作します。eDOTcoreにはリアルタイムクロック(RTC)が内蔵されており、外付けRTCモジュールなしで正確な時刻管理が可能です。
時計の表示は以下のように色分けされます:
- 時針:シアン(0x008080)とその前後に薄いシアンでグラデーション
- 分針:マゼンタ(0x800080)と前後に薄いマゼンタ
- 秒針:イエロー(0x808000)と前後に薄いグリーン
3Dプリント用のケースデータはThingiverseで公開されています。
ソースコード
#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; // 時針を分解能60にマッピング
// 時針表示(中心+前後2ピクセルでグラデーション)
strip.setPixelColor(hourval, 0x008080);
strip.setPixelColor(hourval-1, 0x004040);
strip.setPixelColor(hourval+1, 0x004040);
strip.setPixelColor(hourval-2, 0x001010);
strip.setPixelColor(hourval+2, 0x001010);
// 分針表示
strip.setPixelColor(minuteval, 0x800080);
strip.setPixelColor(minuteval-1, 0x200020);
strip.setPixelColor(minuteval+1, 0x200020);
// 秒針表示
strip.setPixelColor(secondval, 0x808000);
strip.setPixelColor(secondval-1, 0x002F00);
strip.setPixelColor(secondval+1, 0x002F00);
strip.show();
delay(25);
// 表示クリア(残像防止)
strip.setPixelColor(hourval, 0x000000);
strip.setPixelColor(hourval-1, 0x000000);
strip.setPixelColor(hourval+1, 0x000000);
strip.setPixelColor(hourval-2, 0x000000);
strip.setPixelColor(hourval+2, 0x000000);
strip.setPixelColor(minuteval, 0x000000);
strip.setPixelColor(minuteval-1, 0x000000);
strip.setPixelColor(minuteval+1, 0x000000);
strip.setPixelColor(secondval, 0x000000);
strip.setPixelColor(secondval-1, 0x000000);
strip.setPixelColor(secondval+1, 0x000000);
}
3Dプリントパーツ
NeoPixelリング用の壁掛け時計ケースのCADデータはThingiverseで公開されています。
製造プロセス
- Arduino POVクロック:残像効果で浮かび上がるLED時計を自作する
- Arduinoで作るモニター用Ambilightシステム:没入感アップの自作ガイド
- DIY Arduinoワードクロック – 文字で時刻を表示する洗練されたリアルタイムクロック
- NeoPixelリングとArduinoで作るインタラクティブジャイロスコープLEDディスプレイ
- 12メートル先から見える大型LEDマスタークロック(アラーム機能付き)を自作しよう
- Arduinoとスマホで作るスマート電圧計 – 簡単DIYプロジェクト
- ArduinoとMAX30100で作るリアルタイムIoT心拍数モニター
- Arduino UNO WiFi Webサーバー:ブラウザからLEDをON/OFF制御
- Pixie: Arduino Pro Miniで作るNeoPixel腕時計 - アナログとデジタル融合のDIY光る時計
- Arduino UNOで作るシンプル電卓 - シリアルモニターで四則演算
- DS1302 RTCとArduino UNOで作る信頼性の高い目覚まし時計