Arduinoと戯れる!

Arduino 入門 Lesson 53 【Real Time Clock モジュール その4】

arduino-lesson53-00Arduino入門編
スポンサーリンク
子供と一緒に始める マイコンプログラム
Arduino 入門
Lesson 53
【Real Time Clock モジュール その4】

こにんちは、管理人のomoroyaです。

センサーの使い方の基本を学習する入門編。

 

世の中には、まだまだ色々なセンサーがあります。

これからも、色々なセンサーで遊んでいきます。

 

本記事はLesson 53 【Real Time Clock モジュール その4】です。

Lesson 52では「1602 LCD モジュール」を使って「デジタル時計」を作りました。

ライブラリを使わないためスケッチが長い・・・。

簡単に作るならライブラリ使用がおすすめ!

ということで、本Lessonではライブラリを使用した短めのスケッチを紹介します。

簡単にスケッチを描きたい場合、ライブラリ使用が便利。

機能が簡易的なものから、機能が豊富なものまでたくさんあります。

海外サイトが主ですが・・・。

 

本Lessonで使用する「Real Time Clock モジュール」は以下が同等品となります。
※搭載IC:DS1302 prime対応品 出荷元:Amazon

 

電池はCR2032 をご用意ください

 

1602 LCDモジュールはこちら。

 

Arduino入門編の解説にて使用しているArduinoは互換品です。

互換品とは言え、Arduinoはオープンソースであり複製して販売するのもライセンス的に問題なし。

そのため互換品の品質も悪くなく、それでいて値段は安いです。

正規品本体の値段程度で豊富な部品が多数ついています。

 

正規品の本体単品がほしい方はこちらとなります。

 

スポンサーリンク

はじめに

本LessonはLesson 52で学習した内容をライブラリを使うことでスケッチを短くします。

動作を学習するわけでない場合は、ライブラリを使うのが便利です。

 

下記は説明が同じとなるため、Lesson 52を学習している場合は飛ばしましょう。

LCD編では、「DS1302」から下記のデータを引っ張り出します。

1行目表示:「年レジスタ」「月レジスタ」「日レジスタ」「曜日レジスタ
2行目表示:「時レジスタ」「分レジスタ」「秒レジスタ

  • 秒レジスタ:00~59
  • 分レジスタ:00~59
  • 時レジスタ:01~12(12時間制)/00~23(24時間制)
  • 日レジスタ:01~31
  • 月レジスタ:01~12
  • 曜日レジスタ:1~7
  • 年レジスタ:00~99
  • ライトプロテクトレジスタ

 

Lesson 50でもお伝えしましたがデータシートは下記で閲覧可能です。

秋月電子で「DS1302」を検索。

秋月電子通商 - 電子部品・半導体 【通販・販売】
株式会社秋月電子通商(電子部品の通販、販売)のページです…

 

もしくは、直接メーカーページを確認。(※メーカーページでDS1302で検索)

Attention Required! | Cloudflare

 

Lesson 53 目標

本Lessonの目標は以下です。

1.RTCモジュール、1602 LCD モジュールの使い方を復習
2.ライブラリを使って簡単なスケッチにする
3.LCDを使ったデジタル時計を作って遊ぶ

いつものように、遊ぶことが重要です。

 

動作の理屈を理解するためにはデータシートを読み込む必要があり!

回路がわからなくても遊べる、使える、作れるのがArduino の良いところ。

もちろん、データシート読めなくても遊べます。

 

準備

ではLessonの準備に取り掛かりましょう。

使用する電子部品は「RTCモジュール」「1602 LCD モジュール」「ポテンショメータ」の3つ。

LCDモジュールの輝度調整にポテンショメータ、いわゆる「可変抵抗器」「半固定抵抗器」などがあると便利です。

内容は、Lesson 52と同じ。

結線が残っていれば、そのまま使えます。

 

必要なもの

ここもLesson 52と同じ。

※ブレッドボードはセンサとUNOを直接つなぐ場合不要です。
※ジャンパワイヤーは「M-M」「M-F」を必要に応じて使い分けてください。

 

Jumper wire、抵抗は今後も頻繁に利用します。

Jumper wireはできれば、「オス-メス オス-オス メス –メス」の3種類を揃えておくことをお勧めします。

短めが使いやすい場合も。

 

使用部品説明

使用部品もLesson 52と同じ。

RTCモジュール」の詳細は・・・
 ⇒ Arduino 入門 Lesson 50 【Real Time Clock モジュール】

1602 LCD モジュール」の詳細は・・・
Arduino 入門 Lesson 16 【LCD モジュール編】

可変抵抗器」「半固定抵抗器」の詳細は・・・
Arduino 入門 Lesson 12 【ポテンショメータ編】

をご確認ください。

実物写真だけ載せておきます。

 

RTCモジュール「DS1302」 実物写真

RTCモジュール」の実物写真。

Arduino 入門 Lesson 50 【Real Time Clock モジュール】

arduino-lesson50-01

 

1602 LCD モジュール 実物写真

こちらが「1602 LCD モジュール」の実物写真。

Arduino 入門 Lesson 16 【LCD モジュール編】

Arduino-lesson16-02

 

ポテンショメータ 実物写真

こちらが「可変抵抗器」「半固定抵抗器」の実物写真。
※ポテンショメータ

Arduino 入門 Lesson 12 【ポテンショメータ編】

Arduino-lesson09-03

 

各電子部品 仕様

各電子部品の仕様も各Lessonにてご確認ください。

RTCモジュール」の詳細は・・・
 ⇒ Arduino 入門 Lesson 50 【Real Time Clock モジュール】

1602 LCD モジュール」の詳細は・・・
Arduino 入門 Lesson 16 【LCD モジュール編】

可変抵抗器」「半固定抵抗器」の詳細は・・・
Arduino 入門 Lesson 12 【ポテンショメータ編】

 

実践 回路作成とコード作成

ここからが本題になります。

Lesson 52ではライブラリを使わずにRTCモジュールを制御していました。

Lesson 53では、ライブラリを使うことでスケッチを簡単にします。

1602 LCD モジュール」はArduino標準ライブラリを利用します。

 

最初に回路図を確認してください。

次に、回路図に合わせて部品を接続します。

最後にライブラリを使ったスケッチを書いて、LCDモジュールを用いたデジタル時計を作っていきましょう。

 

Arduinoのピン配置を確認したい方は番外編02を参照してください。

 

回路図

回路図もLesson 52と同じ。

RTCモジュール」「1602 LCD モジュール」「ポテンショメータ」をそれぞれ接続していきます。

Arduinoはデジタル入出力ピンを使用。

  • RTCモジュール:2、3、4
  • 1602 LCDモジュール:7、8、9、10、11、12

あとは、5VGNDのみ。

 

回路図がこちら。

arduino-lesson52-01

 

 

こちらがブレッドボード図。

arduino-lesson52-02

 

回路図は「fritzing」を利用しています。

「fritzing」の使い方は下記を参照してください。

 

接続

接続もLesson 52と同じ。

下図に示すように、用意した部品を使用して接続しましょう。

部品は「RTCモジュール」「1602 LCD モジュール」「ポテンショメータ」の3つ。

配線が、かなりややこしいですが・・・

Lesson 16の復習と思って接続していきましょう。

RTCモジュール」と接続するジャンパーワイヤーはF-Mを使用してます。

 

使用するポートは、デジタル入出力ピンの

  • RTCモジュール:2、3、4
  • 1602 LCDモジュール:7、8、9、10、11、12

あとは電源である5V、GND。

穴に挿入しづらいときは、ラジオペンチなどを使用してください。

arduino-lesson52-circuit

 

コードの書き込み

接続が終わったら、USBケーブルを使用してUNOにプログラムを書き込んで行きましょう。

コードを書き終えたら、いつでも利用できるように「ファイル」⇒「名前を付けて保存」で保存しておきましょう。

 

コマンド説明

これまで学習してきた関数しか使いません。

新しいコマンドはなし

 

サンプルコード

ここからがLesson 53の本題。

Lesson 52のスケッチをライブラリを使ったものに変更します。

使用するライブラリは「DS1302.h」。

良さげなものがないかと、海外サイトを巡りにめぐってきました。。。

Lesson 50のもとのとは異なります。

 

★このライブラリを使えば、2桁問題も何事もなく解決です。

//Lesson 52 デジタル時計を作って遊ぶスケッチ(for 1602 LCDモジュール)
//ライブラリ使用による簡易化
//https://omoroya.com/
//使用部品
//RTCモジュール:https://omoroya.com/arduino-lesson50/
//1602 LCDモジュール:https://omoroya.com/arduino-lesson16/
//ポテンショメータ:https://omoroya.com/arduino-lesson12/

//RTCモジュール(DS1302)用ライブラリ
#include <DS1302.h>

//1602 LCDモジュール用ライブラリ
#include <LiquidCrystal.h>

// PINの割り当て(for RTC(DS1302) Module)
DS1302 rtc(4, 3, 2); //4:SCLK(clk) 3:I/O(dat) 2:CE(rst)

// 変数の生成とPINの割り当て(for 1602 LCD Module)
// rs:7 en:8 d4:9 d5:10 d6:11 d7:12 に対応
LiquidCrystal lcd(7, 8, 9, 10, 11, 12);

void setup()
{
  // LCDの行と列を設定
  lcd.begin(16, 2);
  lcd.print("omoroya (^^)");
  // 2行目の表示
  lcd.setCursor(0, 1);
  lcd.print("Start Clock!");
  delay(2000);
  lcd.clear(); //LCDの表示を消し、カーソルを左上隅に配置。

  //time setting
  rtc.halt(false);
  rtc.writeProtect(false);
  rtc.setDOW(MONDAY);         
  rtc.setTime(23, 59, 50);      
  rtc.setDate(9, 5, 2021);    
  rtc.writeProtect(true);
}

void loop(){
  lcd.clear();  
  lcd.setCursor(0,0);
  //FORMAT setting
  //FORMAT_BIGENDIAN:2021-05-09;FORMAT_LITTLEENDIAN:09-05-2021
  lcd.print(rtc.getDateStr(FORMAT_LONG,FORMAT_LITTLEENDIAN, '/'));
  
  //year, maonth, day
  //lcd.setCursor(11,0);//FORMAT_LITTLEENDIAN
  lcd.setCursor(11 ,0);//FORMAT_BIGENDIAN
  lcd.print(rtc.getDOWStr());
  lcd.setCursor(14,0);
  lcd.print(".   ");
  
  //hour, minutes, seconds
  lcd.setCursor(0, 1) ;
  lcd.print(rtc.getTimeStr());
  delay(1000);
}

 

ライブラリを使うことでLesson 52のスケッチが半分以下になりました。

 

動作確認

では、さっそく動作を確認していきます。

  1. 好きな時間に設定(スケッチ内で指定)
  2. 書き込み実行

1602 LCD モジュール」にスケッチにて設定した時刻が表示されます。

本Lessonでは「2021年5月9日(日)23時59分50秒」に設定。

10秒後に「2021年5月10日(火)00時00分00秒」に変われば成功です。

 

初期表示

  • omoroya表示

arduino-lesson52-04

 

補足
Lesson 52とは日付表示が逆になります。
設定で同じ表記にもできます。
しかし、ライブラリ内にバグ?があるようでうまくいきません・・・。
なおせたら、直してみます。

時計表示スタート

  • 1行目:「09/05/2021 Sun.
  • 2行目:「23:59:50

arduino-lesson53-01

 

■10秒後

  • 1行目:「10/05/2021 Mon.
  • 2行目:「00:00:00

59秒 → 00秒 に変わる瞬間の写真を2枚。

arduino-lesson53-02

arduino-lesson53-03

 

自作していたときに悩んでいた2桁問題もまったく問題なし。

ライブラリってやっぱり便利!!!

 

まとめ

本Lessonは、以下を目標としました。

1.RTCモジュール、1602 LCD モジュールの使い方を復習
2.ライブラリを使って簡単なスケッチにする
3.LCDを使ったデジタル時計を作って遊ぶ

 

ライブラリを使うことで、やりたいことが簡単にできます。

探せば色々なライブラリを見つけられるので好みのライブラリをさがすのも1つの手段。

といっても海外のサイトになりますが・・・。

日本では、あまりないんですよね。

なんででしょうね、誰か教えてください!

 

Lesson 53 【Real Time Clock モジュール その4】 はここまで。

もっと、マイコンで遊ぶことが日本でも普及しないかなと最近思う管理人。

 

次回、Lesson 54は 【思案中】。

 

最後に

疑問点、質問などありましたら気軽にコメントください。

この電子部品の解説をしてほしい!などなどなんでもOKです。

リンク切れ、間違いなどあればコメントいただけると助かります。

 

Arduino入門編、番外編、お役立ち情報などなどサイトマップで記事一覧をぜひご確認ください。

 

Arduino入門編で使用しているUNOはAmazonにて購入可能です。

互換品とは言え、Arduinoはオープンソース。

複製して販売するのもライセンス的に問題なし。

 

そのため互換品の品質も悪くなく、それでいて値段は安いです。

正規品本体の値段程度で豊富な部品が多数ついています。

 

学習用、遊び用、お試し用には安価な互換品がおすすめです。

 

 

上記のものでも十分に多数の部品が入っていますが、最初からもっと多数の部品が入っているこちらもお勧めです。

 

Amazonでお得に買う方法

Amazonでお得に購入するなら、Amazonギフト券がおすすめです。

現金でチャージするたびに、チャージ額に応じたポイントが付与されます。

最大2.5%!!!(Amazonプライム会員ならさらにお得)

チャージ額(一回分)一般プライム会員
5,000円~19,999円0.5%1.0%
2,0000円~39,999円1.0%1.5%
40,000円~89,999円1.5%2.0%
90,000円~2.0%2.5%

さらに、初回チャージで2000ポイントもらえるキャンペーンも実施中!
※いつもは1000ポイント、今なら2000ポイントです!

\Amazonギフト券 2000ポイントキャンペーン/
Amazonチャージ 初回購入で2000ポイントキャンペーン

 

補足情報
コンビニ・ATM・ネットバンクが対象
購入は1円単位で可能

コメント

タイトルとURLをコピーしました