アラーム設定(RTC) | おやじクリエイターがお小遣いで楽しむ工作室

おやじクリエイターがお小遣いで楽しむ工作室

趣味のことを中心に書きます。

 

 

 ご覧いただきありがとうございます。ニコニコ

 

 子供のころからものづくりレンチが好きな

 50代のおじさんです。

 

 「PICマイコン」を使った電子工作や、

 「Unity」というゲームエンジンを使った

遊びについて書いています。

 

ものづくりで悪戦苦闘している様子を

 キョロキョロ 見て行ってください。

 

 

 

 

 

もう10月ですね

朝晩は涼しくなってきたので

寝る時の冷房は

使わない日が続いています

 

 

指定した時間にスイッチを

ON/OFFさせたいので

RTCのアラーム機能を調べました

 

 

マニュアルに記載されている

アラームD機能

が使えそうです

 

 

 

セットした時刻になると

/INTA端子(3番ピン)の出力が

H → L に変わります

 

 
 
/INTA端子の変化を確認するのに
オシロ等で確認してもよいのですが
/INTA端子の出力が変わった時に
発光するLEDが実装されており
ジャンパー端子をショートする
ことで使用可能となります
 
 
 

 
 

 

アラームを19時00分に設定し
動かしたところ
意外とすんなりとLED発光
させることができました
 
動画では1秒前に発光してますが
RTCの内部時刻に対して
OLEDへの時刻表示に
タイムラグがあるようです
 

 

 

自分のためにポイントを残します

 

 

レジスタテーブルから必要なアドレスを定義

#define OLED_addr 0x3C OLEDのI2Cアドレス
#define RTC_addr 0x32  RTCのI2Cアドレス


#define SECOND 0x00
#define MINUTE 0x10
#define HOUR 0x20
#define DAY 0x30
#define DATE 0x40
#define MONTH 0x50
#define YEAR 0x60
#define ALM_D_M 0xB0
#define ALM_D_H 0xC0
#define CTL1 0xE0
#define CTL2 0xF0

 

 

「アラームD機能を使用するときは、まず始めに本DALEビットを”0”にして、機能を停止させてください。その次に 時,分,DAFGビットの設定をし、最後にDALEビットを”1”にしてアラームD機能を有効にします。」

との記載があるのでその手順をAlarm_set関数として定義↓

void Alarm_set(){
I2C_Write1ByteRegister(RTC_addr,CTL1,0x20);
I2C_Write1ByteRegister(RTC_addr,ALM_D_M,0x00);
I2C_Write1ByteRegister(RTC_addr,ALM_D_H,0x19);
I2C_Write1ByteRegister(RTC_addr,CTL2,0x01);
I2C_Write1ByteRegister(RTC_addr,CTL1,0x60);
}

 

 

 

次のステップとしては

サーボモーターを

アラーム設定した時間に

動かしてみよう 

 

ではまた バイバイ