作ったもの
オレンジ色の大きなボタンを押すとその時の時間の回数だけブザーが鳴るデバイス
動機
寝ている時に起きてしまったけれど今何時かが知りたい時ってありますよね?時間を確認した時に夜中だったり、起床時間までまだ時間があったら二度寝しますよね。
しかしながら暗い中でスマホや時計の明るい画面を見ると明るすぎて、目が痛くなったり、二度寝するには目が覚めすぎてしまうといった問題点があります。
そこで目を開けずに時間を確認するデバイスを製作しました。
システム構成
ボタンが押さえたらRTCで取得した時刻を参照して、それに応じた回数のブザーが鳴ります。
回路構成
主な材料(入手先はあってるかは分かりませんが...)
部品名 | 個数 | 備考 |
---|---|---|
ATtiny85-20PU | 1 | 入手先:秋月 |
ICソケット 8ピン | 1 | 入手先:秋月 |
DS1307使用リアルタイムクロック | 1 | 入手先:秋月 |
圧電スピーカー | 1 | 入手先:秋月 |
XHコネクタ | 少々 | |
三端子レギュレータ(5V) | 1 | |
ユニバーサル基板 | 1 | |
ボタン | 1 |
ハードウェア
基板と組み合わせるとこのようになりました。
側面にボタンがついており、これで電源のON/OFFを切り替えます。
ソースコード
ボタンが押されると時刻を取得し、時刻に応じてブザーから音を出すコード
#include "RTClib.h"
#define speaker 3
#define sw 1
#define ntone 350
#define htone 440
RTC_DS1307 rtc;
char daysOfTheWeek[7][12] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};
void setup () {
pinMode(speaker,OUTPUT);
pinMode(sw,INPUT);
Serial.begin(57600);
if (! rtc.isrunning()) {
Serial.println("RTC is NOT running, let's set the time!");
}
rtc.adjust(DateTime(2020, 10, 31, 14, 24, 20));//最初にRTCの時刻をセットするとき以外はコメントアウト
}
void loop () {
rtc.begin();
int i;
int swp=0;
delay(1000);
DateTime now = rtc.now();
int hournum=0;
int halfhour=0;
hournum = now.hour();
swp==1;
//swp=digitalRead(sw);
if(swp==1){
if(hournum>12){
hournum=hournum-12;
}
else{
}
if(hournum==0){
hournum=12;
}
else{
}
if(now.minute()<45){
for(i=0;i<(hournum/4);i++){
tone(speaker,ntone);
delay(500);
tone(speaker,0);
delay(50);
}
for(i=0;i<(hournum%4);i++){
tone(speaker,ntone);
delay(100);
tone(speaker,0);
delay(50);
}
if(now.minute()>=15){
tone(speaker,htone);
delay(100);
tone(speaker,0);
delay(50);
}
else{
}
}
else{
hournum=hournum+1;
for(i=0;i<(hournum/4);i++){
tone(speaker,ntone);
delay(500);
tone(speaker,0);
delay(50);
}
for(i=0;i<(hournum%4);i++){
tone(speaker,ntone);
delay(100);
tone(speaker,0);
delay(50);
}
}
delay(1000);
}
}
ブザーのなる回数は4進法で出力していて、12時間おきにリセットがかかっています。
完成した後での改良点、感想
9V電池を使用しましたが、容量が400mAh程度しかないらしく電池が持たないのでUSB給電にしたいですね。
おわりに
これで二度寝が捗ります。
投稿者の人気記事
-
swerve
さんが
2021/02/22
に
編集
をしました。
(メッセージ: 初版)
ログインしてコメントを投稿する