12メートル先から見える大型LEDマスタークロック(アラーム機能付き)を自作しよう
必要な部品と材料
| 部品 | 数量 | 備考 |
|---|---|---|
| Arduino UNO | 1 | メインマイコンボード |
| Freetronics DMDディスプレイ | 1 | 大型LEDマトリックス表示器 |
| RTCモジュール(DS1307等) | 1 | リアルタイムクロック用 |
| モメンタリプッシュボタン | 1 | アラーム停止/スヌーズ用 |
| オンオフスイッチ | 1 | 電源制御用 |
使用ソフトウェア
- Arduino IDE
プロジェクト概要
このプロジェクトは、12メートル先からでも視認可能な大型デジタル時計を自作するものです。表示サイズはDMDディスプレイを追加することで自由に拡張できます。さらに、内蔵アラーム機能をリレー等と接続すれば、庭の自動散水システムのトリガーや定例会議のリマインダーなど、様々な用途に応用可能です。
追加で用意すると便利なもの
- ブザー(起床用に十分な音量のもの)
- プロトシールド(Arduino用、半田付けして基板化する場合)
- Arduino用電源アダプタ
- 5V安定化電源(4〜30A対応、高輝度駆動時のみ必要。通常動作では不要)
組み立て手順
第1部:電子工作
- ブザー、スヌーズボタン、アラーム設定スイッチをブレッドボードに配置する
- 各スイッチの片側とブザーのGNDをArduinoのGNDピンに接続する(回路図参照)
- アラーム設定スイッチのもう片側をD2、スヌーズボタンをD3、ブザーをD4に接続する
- RTCモジュールをArduinoに接続する(モジュールの種類に合わせてデータシート参照、たいていは回路図通りでOK)
- DMDコネクタをArduinoに接続し、DMDディスプレイを装着する
- DMDをフル輝度で動作させる場合は、高輝度用端子に5V電源を接続する
- プロトシールドを使って基板化する場合は、全パーツをシールドにはんだ付けし適切に配線する
第2部:ソフトウェア
まず、Freetronics DMDライブラリをダウンロードし、Arduinoのライブラリフォルダにインストールしてください。
本体スケッチは「Prototyping Corner」またはこのページ下部からダウンロード可能です。マスタークロックの基本動作が含まれています。
時刻合わせ(RTC初期設定)
スケッチの117〜124行目を現在時刻に書き換え、124行目のコメントアウトを外してアップロードします。書き込み後、再び124行目をコメントアウトしてアップロードし直してください。これをしないとRTCが設定時刻で固定されてしまいます。
アラーム設定
593行目と594行目でアラームの曜日と時刻を設定します。
- 593行目:曜日(1=日曜日、2=月曜日、3=火曜日、4=水曜日、5=木曜日、6=金曜日、7=土曜日)
- 594行目:アラーム時刻(24時間制)
さらに発展させるには
ディスプレイの追加
DMDディスプレイを追加接続することで、より大型の時計にできます。詳細についてはこちらを参照してください。
複数アラームの追加
以下の関数をスケッチに追加し、メインループから呼び出すことで複数のアラームを実装できます。
void CheckAlarm_ALARM_NO() {
AlarmSet = digitalRead(AlarmSetPin);
Snooze = digitalRead(SnoozePin);
byte second, minute, hour, dayOfWeek, dayOfMonth, month, year;
getDateDs1307(&second, &minute, &hour, &dayOfWeek, &dayOfMonth, &month, &year);
// 許可する曜日を指定(1=日〜7=土)
if(dayOfWeek == 2 || dayOfWeek == 3 || dayOfWeek == 4 || dayOfWeek == 5 || dayOfWeek == 6) {
if(hour == 18 && minute == 05) { // アラーム時刻(24時間制)
if(AlarmSet == LOW) { // アラーム有効時
Snooze = digitalRead(SnoozePin);
while(Snooze == HIGH) {
Snooze = digitalRead(SnoozePin);
// ここにアラーム動作を記述
}
}
}
}
}
回路図

提供コード
完全なスケッチコードは元記事の「Code」セクションに掲載されています。主要な機能は以下の通りです。
- DS1307 RTCとのI2C通信
- DMDディスプレイへの時刻・日付表示(12/24時間制切替可)
- 曜日・日付・時・分を個別関数で描画
- アラーム機能(曜日指定、スヌーズ対応、ブザー出力)
- Timer1割り込みによるディスプレイ走査(フリッカーフリー)
製造プロセス
- 鳩時計:歴史、職人技、現代への進化
- Arduino POVクロック:残像効果で浮かび上がるLED時計を自作する
- Arduinoで作るレトロNumitron管時計:シンプル、信頼性高く、省エネ
- DIY Arduinoワードクロック – 文字で時刻を表示する洗練されたリアルタイムクロック
- Arduino で作るイスラム教礼拝時刻付きリアルタイムクロック
- Bluetooth操作のArduinoスパイボットを自作する
- FlickMote:ジェスチャー操作のIRリモコンでスマートホームを制御
- 自作Arduino TV-B-Gone:全テレビ対応の万能リモコン
- Arduino Dueと3.2インチTFTで作る温度監視付きリアルタイムクロック
- Arduino UNOで作るベルリンクロック – DIY LEDマトリクス時計
- DS1302 RTCとArduino UNOで作る信頼性の高い目覚まし時計