マルチディスプレイLCD目覚まし時計:カスタマイズ可能な10種類の表示フェイス
特徴
- 10種類の表示スタイル:標準、デュアル太字、デュアルベベル、デュアルTrek、デュアル細字、ワードクロック、バイオリズム、温湿度計、砂時計アニメーション、アラーム設定画面
- 設定機能:時刻、日付、誕生日、アラーム時刻の設定・EEPROM保存
- アラーム停止:傾きスイッチ(水銀スイッチ)または任意ボタンで停止
- バックライト制御: 常時ON/OFF/タイムアウト(デフォルト10秒)選択可能
- 環境センサー:DHT21温湿度センサー対応(温湿度表示フェイスで活用)
- 電池バックアップ:DS1302 RTC用コインセル(CR2032/CR1220)で停電時も時刻維持
必要な部品
基本構成(ブレッドボード版)
| 部品 | 数量 | 備考 |
|---|---|---|
| Arduino Uno | 1 | スタンドアロン化時はATmega328P-DIP + 16MHz水晶 + 22pF×2 + 7805 + コンデンサ類 |
| 16x2 キャラクタLCD (白文字/青背景) | 1 | HD44780互換、ピンヘッダー実装済み推奨 |
| DS1302 RTCモジュール | 1 | 32.768kHz水晶付き |
| コインセルホルダー + CR2032 | 1 | PCB版ではCR1220 |
| TMP36またはDHT21 | 1 | 温度のみならTMP36、温湿度ならDHT21 |
| 水銀傾きスイッチ | 1 | アラーム停止用(カプセル化タイプ推奨) |
| パッシブブザー | 1 | アラーム音用(10µFでDCカット) |
| 10kΩトリマーポテンショメータ | 1 | LCDコントラスト調整 |
| 10kΩ抵抗 | 4 | ボタンプルアップ用(内部プルアップ使用時は不要) |
| 470Ω抵抗 | 1 | ブザー電流制限 |
| 10µFコンデンサ | 1 | ブザーDCカット用 |
| タクトスイッチ 6×6mm (13mm軸) | 3 | SETUP, INCREMENT, DECREMENT |
PCB版追加部品(スタンドアロン化)
- ATmega328P-PU (DIP-28)
- 16MHz 水晶発振子 + 22pF セラコン ×2
- 7805 5Vレギュレータ (TO-220) + 100µF/16V + 0.1µF ×3 + 1µF
- 右角ピンヘッダー (LCD接続用)
- Eagleファイル添付(自作・発注両対応)
ケース製作用
- 3Dプリンター(STLファイル添付、0.2mmレイヤー、サポート不要)
- M3×6mmネジ ×4、M3タップ、2.5mmドリル
- DHT21用3ピンコネクタ(ケース背面取付用)
回路図とPCB
ブレッドボード版は比較的シンプル。LCDは4ビットモードでD4〜D7、RS、Eを接続。RTCは3線式(CE, IO, SCLK)。ボタンはアナログピンA0〜A3に接続し、内部プルアップを使用する場合は外付け抵抗不要。




注意:LCDを右角ピンヘッダーでPCBに直付けする場合、ケースへの組み込みが非常に困難です。スルーホールめっき済み両面基板なら、LCDを後から基板上でハンダ付け可能で組み立てやすくなります。
操作方法
3つのボタン(SETUP, INCREMENT, DECREMENT)と傾きスイッチで操作。
バックライト
- 消灯時:任意ボタン押下で点灯
- 点灯時:5秒(デフォルト10秒に変更可)無操作で自動消灯
- 点灯中はボタンが機能する
ボタン機能(バックライト点灯時)
| ボタン | 通常時 | 設定モード時 |
|---|---|---|
| SETUP | 設定モード突入 | カーソル移動:時→分→日→月→年→誕生日→誕生月→誕生年→アラーム時→アラーム分→時計モード戻り |
| INCREMENT | 表示スタイル切替(10種類を循環) | カーソル位置の値を増加 |
| DECREMENT | アラームON/OFF切替 | カーソル位置の値を減少 |
| 傾きスイッチ | − | アラーム鳴動時のみ:傾ける/ボタン押下で停止 |


表示スタイル詳細
1. 標準 (STANDARD)
上段:時:分:秒 | アラーム時:分
下段:日/月/年 | ALARM点滅表示
2. デュアル太字 (DUAL_THICK)
2行×3文字幅のカスタム文字で太い大型数字表示。12/24時間切替定義対応。
3. デュアルベベル (DUAL_BEVEL)
立体的なベベル(斜面)エッジを持つ大型数字。12/24時間切替定義対応。
4. デュアルTrek (DUAL_TREK)
秒表示含む3セグメント風大型数字。コロンもカスタム文字で点滅。
5. デュアル細字 (DUAL_THIN)
1文字幅1ピクセルの細い大型数字。アラーム時刻を右端に常時表示。12/24時間切替定義対応。
6. ワードクロック (WORD)
時刻を英単語で表現("TWELVE THIRTY"等)。右上に砂時計アニメーション(8フレーム)。
7. バイオリズム (BIO)
誕生日から計算した3サイクルをバーグラフ表示:
- 身体(23日周期)
- 感情(28日周期)
- 知性(33日周期)
上バー=プラス期、下バー=マイナス期、バー長=振幅。誕生日設定必須。

8. 温湿度計 (THERMO)
DHT21センサーで読み取った温度(℃)と湿度(%)を大型数字で表示。カスタム文字で温度計/水滴アイコン表示。

スタンドアロン版(PCB)の製作
- EagleファイルからPCB発注またはトナー転写法で自作
- 部品実装:ATmega328P、水晶、レギュレータ、RTC、LCDコネクタ、ボタン、ブザー等
- LCDは右角ピンヘッダーで基板実装(スルーホールめっき推奨)
- 3Dプリントケース(2パーツ)に基板をM3ネジで固定(穴位置調整用に4mm拡大推奨)
- DHT21をケース背面の3ピンコネクタに接続




ソースコードの構成ポイント
単一スケッチ(DigitalClockAlarmV7.ino)で全機能実装。主な構成:
ライブラリ
DS1302RTC.h:RTC通信TimeLib.h:時刻管理(RTCと同期)LiquidCrystal.h:LCD制御EEPROM.h:設定不揮発保存dht.h:DHT21読み取り
カスタム文字定義(PROGMEM配置)
- 大型数字フォント4種(厚/ベベル/Trek/細)各10文字分
- 砂時計アニメーション8フレーム
- ベル、時計、温度計、水滴アイコン
- バイオリズム用上下バー文字
主要な状態管理
STYLEenum:8種類の表示モードSETUPenum:11段階の設定項目- バックライトタイムアウト制御(ミリ秒カウント)
- アラーム判定:秒のLSBで点滅表示、時刻一致でブザー鳴動
EEPROMマップ
| アドレス | 内容 |
|---|---|
| 0 | アラーム時 (0-23) |
| 1 | アラーム分 (0-59) |
| 2 | アラームON/OFF |
| 3 | 現在の表示スタイル |
| 4-5 | 誕生年 (16bit) |
| 6 | 誕生月 (1-12) |
| 7 | 誕生日 (1-31) |
PME/機械学習は不使用
このプロジェクトではArduino 101のPMEは使用せず、純粋な時刻・センサー処理とカスタム文字描画に特化しています。Uno/ATmega328でも動作します。
アップデート履歴
- 2020/06/25:初版(Michalis Vasilakis氏のクロックをベースに複数フォント対応)
- 2020/06/29:ワードクロック綴り修正、バックライト制御#define追加、タイムアウト5→10秒
- 2020/11/22:誕生日設定・EEPROM保存追加、バイオリズムフェイス追加、設定画面コード整理
- 2020/12/06:DHT21対応、温湿度フェイス追加、PCBにDHT21用3ピンコネクタ追加
クレジット(ベースとなったプロジェクト)
- ベース:Michalis Vasilakis "Arduino Digital Clock With Alarm Function (custom PCB)"
- 標準画面:Michalis Vasilakis
- デュアル太字/細字:Arduino World
- デュアルベベル:Arduino Forum
- デュアルTrek:Carrie Sundra
- ワードクロック概念:LAGSILVA
- バイオリズム:John Bradnam
- ウェザークロック:ARDUinoautoMOTIVE
改善・拡張アイデア
- NTP対応(WiFiモジュール追加で自動時刻同期)
- アラーム音のメロディー化(RTTTL形式等)
- 週末/平日アラーム別設定
- 照度センサーでバックライト自動輝度調整
- 複数アラーム、スヌーズ機能
- バッテリー電圧監視・低電圧警告
- ケースデザインのバリエーション(壁掛け、卓上スタンド等)
まとめ
このプロジェクトは、単なる目覚まし時計を超え、「表示表現のバリエーション」「ユーザー設定の永続化」「環境センシング」「機械的インタラクション(傾きスイッチ)」をコンパクトなLCDデバイスに凝縮した優れた学習・実用プロジェクトです。コードはモジュール化されており、各表示スタイルの描画関数が独立しているため、新しいフェイスの追加や既存フェイスの改造が容易です。PCB版への移行で実用的なガジェットとして完成度が高まり、3Dプリントケースで見栄えも良く仕上がります。
製造プロセス
- Adafruit T-Cobbler PlusでヘッドレスRaspberry Pi 2水漏れアラームを構築
- Arduino Nano 33 IoT製 フライトシミュレーター2020用コックピットパネル - LCD&CDI表示
- スマートモーションアラームクロック:二度寝を防ぐ動作検知型目覚まし時計
- Arduinoで作るレトロNumitron管時計:シンプル、信頼性高く、省エネ
- Arduino で作るイスラム教礼拝時刻付きリアルタイムクロック
- 高精度ワードクロック:分単位で時刻を文字表示
- Arduino Dueと3.2インチTFTで作る温度監視付きリアルタイムクロック
- TM1637デジタル時計:時刻設定・アラーム機能付き Arduino Nano試作版
- Arduino UNOで1.17インチTFT LCDに画像を表示する方法
- Arduinoリアルタイム気象時計 - OLEDに時刻/日付/温度を表示
- DS1302 RTCとArduino UNOで作る信頼性の高い目覚まし時計