親子で作って毎朝使える目覚まし時計を作ろう
夏休みに子どもと電子工作をやりたいんだ。完成したら毎日使える物がいいなぁ。


じゃあ「自分仕様の目覚まし時計」を一緒に作ろう! 起きたい時刻をセットすると、その時間にブザーが鳴って起こしてくれるんだ。お子さんが毎朝使う物だから、愛着もわくよ。
今回は、親子で電子工作を楽しみたい方に向けて、Arduino初心者キットだけで作れる「自分仕様の目覚まし時計」を紹介します。
Arduinoの内蔵タイマー (millis関数) を使って、電源を入れてからN分後にLEDとブザーで起こしてくれるタイマー式の目覚ましです。本物の時計と違ってRTCモジュールは不要、プログラムを少し変えるだけでメロディや時間をカスタマイズできます。
この記事で作るもの
- 起動から指定分後にアラームが鳴る
- LEDも同時に点滅して光でも起こす
- ボタンを押すと止まる
- アラーム時間はプログラムで自由に調整
親子での分担
| 工程 | 親の役割 | 子の役割 |
|---|---|---|
| 部品出し | キットから取り出す | 並べて確認 |
| 配線 | 配線図を見せる | 挿す |
| 書き込み | IDE操作 | USB接続+書き込みボタン |
| 動作確認 | 困った時に相談相手 | 触る、感想 |
使う部品
| 部品 | 役割 | 個数 |
|---|---|---|
| Arduino UNO R3 | 頭脳 | 1 |
| LED | 光で起こす | 1 |
| 抵抗330Ω | LED保護 | 1 |
| パッシブブザー | 音で起こす | 1 |
| タクトスイッチ | 停止ボタン | 1 |
| ブレッドボード | 配線 | 1 |
| ジャンパーワイヤー | つなぐ | 7本前後 |
配線図
a b c d e
+─────────+
[+]rail| . . . . . | ← (使わない)
[-]rail| . . . . . | ← GND
+─────────+
row 3 | X . . . . | ← SW 片足 (D2)
row 5 | X . . . . | ← SW 反対足 ([-])
row 9 | X . . . . | ← 330Ω 上足 (D7)
row 10 | X . . . . | ← 330Ω 下足+LED+
row 12 | X . . . . | ← LED カソード ([-])
row 15 | X . . . . | ← ブザー+ (D8)
row 16 | X . . . . | ← ブザー- ([-])
+─────────+
プログラム
#define BTN_PIN 2
#define LED_PIN 7
#define BUZZER_PIN 8
#define ALARM_AFTER_MIN 1 // 起動から1分後にアラーム (テスト用)
bool alarmOn = false;
bool alarmTriggered = false;
void setup() {
Serial.begin(9600);
pinMode(BTN_PIN, INPUT_PULLUP);
pinMode(LED_PIN, OUTPUT);
pinMode(BUZZER_PIN, OUTPUT);
Serial.println("目覚まし時計 スタート!");
}
void loop() {
unsigned long elapsedMin = millis() / 60000;
if (!alarmTriggered && elapsedMin >= ALARM_AFTER_MIN) {
alarmOn = true;
alarmTriggered = true;
Serial.println("アラーム発動!");
}
if (alarmOn) {
digitalWrite(LED_PIN, HIGH);
tone(BUZZER_PIN, 1200, 200);
delay(300);
digitalWrite(LED_PIN, LOW);
delay(300);
if (digitalRead(BTN_PIN) == LOW) {
alarmOn = false;
digitalWrite(LED_PIN, LOW);
noTone(BUZZER_PIN);
Serial.println("アラーム停止");
}
} else {
delay(100);
}
}
プログラムの動き
flowchart TD
A[起動] --> B[時間を測る]
B --> C{"時間が
来た?"} C -->|Yes| D[アラームON] C -->|No| B D --> E["LED+ブザー"] E --> F{停止ボタン?} F -->|Yes| G[止める] F -->|No| E G --> H[終わり]
来た?"} C -->|Yes| D[アラームON] C -->|No| B D --> E["LED+ブザー"] E --> F{停止ボタン?} F -->|Yes| G[止める] F -->|No| E G --> H[終わり]
親子で楽しむアレンジ
動いたら、親子で次のように改造実験をすると、研究の幅が広がります。
親子で試したい改造
- 音の高さ (1200の数字) を変えてみる
- LEDの色を変えてみる
- ALARM_AFTER_MINを5、10、30に変えて実用に
- 3回押さないと止まらない「強制起床モード」
本物の時計みたいに「7時にセット」みたいにできる?


本物の時刻でやるには「RTCモジュール」っていう別部品が必要なんだ。今回は「起動からN分後」のシンプル版。6時間後に起きたいなら、ALARM_AFTER_MINを360に変えて、寝る前に電源を入れる運用になるよ。
レポートの書き方
親子工作レポート構成
- 研究のきっかけ
- 親子で分担した役割
- 使った部品と配線図
- つまずいた所と解決策
- 音の高さ別の起こされやすさ実験
- 感想 (親子それぞれ)
改造のアイデア
発展アイデア
- RTCモジュールを追加して本物の時刻でセット
- LCD表示で残り時間を見える化
- 明るさセンサーで「太陽が出たら起こす」モード
- 3つのメロディから選べる切り替えボタン
まとめ
今回は、親子で作って毎朝使える「自分仕様の目覚まし時計」を紹介しました。Arduinoの基本機能だけで作れて、改造アイデアも豊富、親子工作の理想形です。
大切なのは、まず1分後に鳴らして動作確認することです。動いたら30分、360分と伸ばして、自分の生活リズムに合う時間を探しましょう。

他にも初心者キットだけで作れる作例を別の記事で紹介しているので、興味があれば見てみてね。
今日から始める電子工作 

