\ Amazon 冬支度セール 11/4(月)~11/12/(火) /

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

arduino-lesson53-00 Arduino入門編
記事に広告(アフィリエイト広告)が含まれています。
スポンサーリンク
子供と一緒に始める マイコンプログラム
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はオープンソースであり複製して販売するのもライセンス的に問題なし。

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

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

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

 

Arduino入門編2では「Arduino UNO R4 Minima」「Arduino UNO R4 WIFI」にて遊ぶため今のところは正規品を使用。(まだ互換品が・・・ほぼない)

 

 

スポンサーリンク

はじめに

本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」を検索。

404- ページが見つかりません。

 

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

ミックスド・シグナルおよびデジタル信号処理IC | Analog Devices
アナログ・デバイセズは、アナログ、ミックスド・シグナル、DSP集積回路の設計/製造のグローバル・リーダーであり、最も厳しいエンジニアリング課題を解決する手助けとなります。…

 

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種類を揃えておくことをお勧めします。

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

 

抵抗も単品で揃えるよりはセットをおすすめします。

 

抵抗、LEDなどを個別でセット品を購入しても、そんなに使わない!

という方は、「電子工作基本部品セット」が使い勝手が良い。

 

使用部品説明

使用部品も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は 【MQ-3 アルコールセンサ その1】

MQセンサは色々な種類があります!

Arduino 入門 Lesson 54 【MQ-3 アルコールセンサ その1】
本記事はLesson 54 【MQ-3 アルコールセンサ】です。「MQセンサ」は空気質(気体)を調べるセンサで種類も色々。本LessonではMQ-3を使って遊んでみます。MQ-3はアルコールが検出可能。アルコールであれば、お家にあるもので比…

 

最後に

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

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

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

 

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

 

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

Arduino入門編では互換品を使用。

Arduinoはオープンソース。

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

 

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

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

 

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

 

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

 

Arduino入門編2では「Arduino UNO R4 Minima」「Arduino UNO R4 WIFI」にて遊ぶため今のところは正規品を使用。(まだ互換品が・・・ほぼない)

 

Amazonでお得に買う方法

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

時期により異なりますが、様々なキャンペーンを実施しています。

\Amazonギフト券/
Amazonギフトカード キャンペーン

Amazon Mastercard お申込み
Amazon Mastercard 申し込み 

 

いずれの場合もプライム会員である方がお得!!

\Amazon Prime 30日間の無料会員を試す/
無料会員登録 

 

 

コメント

  1. 匿名 より:

    基盤に実装するときの回路とプログラムを教えてください。

    • omoroya omoroya より:

      コメントありがとうございます。
      ブレッドボード上に作ったものを、そのまま基板に実装すればOKと考えます。

  2. 匿名 より:

    時間設定ができるボタンをつけることは可能でしょうか?

  3. 匿名 より:

    ブレッドボードではできたのですがブレッドボードなしでするにはどうしたらいいですか?

    • omoroya omoroya より:

      コメントありがとうございます。
      基板に実装したいということでしょうか?
      通常のArduinoだと大きすぎるので・・・
      Arduino nanoを使い、基板に実装するのが良いかと思います。

  4. 匿名希望 より:

    LCD1602ではなく、OELD 128*64(SSD1306) に時刻表示したいのですが可能でしょうか?

    • omoroya omoroya より:

      コメントありがとうございます。
      Arduinoを使って、OELD 128*64(SSD1306) に時刻表示したいということかと思いますが可能です!
      ライブラリを使用すれば比較的簡単に表示できると思います。

  5. 匿名 より:

    海外サイトのライブラリを入れてみたのですが
    Arduino:1.8.9 (Windows 10), ボード:”Arduino/Genuino Uno”

    sketch_jul03a:2:20: error: DS1302.h: No such file or directory

    compilation terminated.

    exit status 1
    DS1302.h: No such file or directory

    このようにエラーメッセージがでます。どうしたらいいでしょうか?

    • omoroya omoroya より:

      コメントありがとうございます。
      この情報でわかることは下記のみです。
      DS1302.hがない。
      ライブラリがインストールされていない可能性が高い。

  6. 匿名 より:

    このプログラムを使って時計の制作を行っているのですがライブラリがどうしても見つかりませんどの海外サイトを使ったのか教えていただけないでしょうか。

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