Arduino UNO R4 MinimaでRTC機能を使ったLCD時計表示をさせる
こんにちは、せでぃあ(@cediablog)です。
このたび、Arduino UNO R3の後継機種であるArduino UNO R4 Minimaを購入しました。
今回既存のUNO R3にはなかった新機能「RTC(リアルタイムクロック)」を使ってみたいと思います。
RTC機能とは、かんたんに言うと「カレンダー時計機能」です。
今回、このRTC機能を使って現在の日時をLCD(液晶ディスプレイ)に表示させるプログラムを作ってみました。
Arduinoの新機種に興味がある方は、ぜひ最後までご覧ください
- RTC(リアルタイムクロック)機能の使い方
- LCDディスプレイ表示させるための配線方法
- Arduino IDEでのプログラミング方法
せでぃあはこんな人物です
✅プライム企業に勤める電気・機械設計エンジニア
✅親子の絆を深めるため、夏休みに子供と一緒に電子工作を製作
✅Arduinoプログラミングを用いて作ったプログラミング電子工作「信GO機」が市の発明くふう展で「優秀賞」を受賞
✅本ブログにてArduinoスクラッチプログラミングLESSON記事投稿中
✅YouTubeチャンネル「せでぃあブログちゃんねる」運営中
購入方法と価格
Arduino公式サイトからも購入できますが、海外からの発送になるためコストや納期を考えたら国内サイトからの購入がおすすめです!
R4 Minimaが買える国内サイト
・スイッチサイエンス:3,410円(税込み)+送料無料
・秋月電子通商:3,190円(税込み)+送料
・Amazon:3,246円(税込み)+送料
私は、スイッチサイエンスが在庫なし状態だったので、在庫のある秋月電子通商から購入しました。
遊べるマイコンとしては、お値打ちなモデルだと思います!
RTC(リアルタイムクロック)機能について
Arduino UNO R4 Minimaの新機能「RTC(リアルタイムクロック)」は、Arduinoに搭載されるルネサス製のコア「RA4M1」のライブラリを使用して使います。
とはいっても、Arduino IDEプログラムを作って動作させるだけなので、特に意識する必要はありません。
- 日付(年、月、日)
- 時間(時、分、秒)
従来のUNO R3では、別途RTCモジュール接続が必要でした
コア「RA4M1」の詳細は、ルネサスの公式ページを参照ください。
RTC機能を使った、LCD表示制御回路で使うもの
- パソコン
- Arduino本体
- USBケーブル
- ブレッドボード
- 抵抗(1kΩ)
- LCD1602モジュール
- ジャンパー線(オスーオス)×14本
今回はELEGOO社のスーパースターターキットに含まれる部品を使っています。
コスパ最強のArduinoキットに含まれる、すべてのパーツを紹介しています。
パソコン
プログラムを作成するために必要です。
プログラム制御の演算はArduino側で行うため、パソコンのSPECは一般的なモデルで十分対応可能です。
パソコンのOSはWindows、Macどちらでも対応可能です。
Arduino UNO R4 Minima本体
今回は、Arduino純正品の「Arduino UNO R4 Minima」を使用します。
納期や価格面から、国内から発送される通販サイトからの購入がおすすめです。
R4 Minimaが買える国内サイト
Arduino UNO R4 Minimaの始め方は、こちらを参考にしてみてください。
ピン配置などの基本的な仕様は、UNO R3と同じです!
USBケーブル(TypeC)
UNO R3は本体に接続する側の端子形状が(TypeB)でしたが、R4 MinimaではTypeC形状になります。
パソコンとArduinoを接続してプログラムデータのやり取りをするために必要です。
USBケーブルは別売りなので、買い忘れに注意してください。
ブレッドボード【キット】
たくさんの穴が開いていて、部品の端子を穴に差し込むだけで電気的に接続が可能な板です。
説明図は30列のショート版ですが、スーパースターターキットに含まれる63列タイプでも機能は同じです
ブレッドボードだけの購入も可能です。
抵抗(1kΩ)【キット】
1kΩの抵抗を1本使用します。
今回は、液晶ディスプレイの文字表示コントラスト調節に使います。
LCD1602モジュールには可変抵抗器を使って、コントラスト調節ができる機能がありますが、今回は1kΩ抵抗器を接続してコントラストを固定しています。
LCD1602モジュール【キット】
液晶ディスプレイ「LCD(Liquid Crystal Display)」モジュールになります。
数字や文字などを表示させることが可能です。
LCDの機能については、こちらのLESSON記事にて詳しく説明しています。
ジャンパー線(オスーオス)【キット】
ジャンパー線を14本使用します。
Arduino本体とブレッドボードの接続や、ブレッドボードの共通電源ライン(GNDまたは5V)からブレッドボード内の配線系統穴に差し込んで接続するのに使います。
RTC機能を確認するプログラム
配線が完了したところで、LCD(液晶ディスプレイ)に日時表示させるプログラムを作っていきます。
ボードマネージャのインストール
Arduino IDEにR4 Minimaのボードマネージャをインストールします。
今回はArduino IDE 1.8でのインストール方法を紹介します。
Arduino IDEのインストールから始める方は、こちらの記事を参考にしてください。
動作プログラム
/* 作品名:UNO R4 Minima RTC */
/* 作成者:せでぃあ https://cediablog.com */
/* RTC機能によるLCDへの日時表示プログラム */
#include <RTC.h>
#include <LiquidCrystal.h>
const int LCD_D4_SOCKET = 4; //データビットD4入力ソケット番号
const int LCD_D5_SOCKET = 5; //データビットD5入力ソケット番号
const int LCD_D6_SOCKET = 6; //データビットD6入力ソケット番号
const int LCD_D7_SOCKET = 7; //データビットD7入力ソケット番号
const int LCD_RS_SOCKET = 8; //レジスタ選択入力ソケット番号
const int LCD_E_SOCKET = 9; //イネーブル入力ソケット番号
LiquidCrystal lcd(8, 9, 4, 5, 6, 7); //LCD制御ピンの割り当て
void setup() {
// put your setup code here, to run once: プログラム起動時1回だけ処理される回路
RTC.begin(); //時刻の初期化
//開始時刻の設定
RTCTime startTime(27, Month::JULY, 2023, 19, 57, 00, DayOfWeek::THURSDAY, SaveLight::SAVING_TIME_ACTIVE);
RTC.setTime(startTime); //時刻の設定
lcd.begin(16, 2); //LCDの桁数と行数を指定
}
void loop() {
// put your main code here, to run repeatedly: プログラム起動後ループ処理される回路
RTCTime currentTime; //時刻の格納先
RTC.getTime(currentTime); //RTCから時計データを取得
lcd.clear(); //LCDディスプレイをクリア
lcd.setCursor(0,0); //LCDカーソルを上段一番左に配置
lcd.print(currentTime.getYear()); //「年」
lcd.print("/");
lcd.print(Month2int(currentTime.getMonth())); //「月」
lcd.print("/");
lcd.print(currentTime.getDayOfMonth());//「日」
lcd.setCursor(0,1); //LCDカーソルを下段一番左に配置
lcd.print(currentTime.getHour()); //「時」
lcd.print(":");
lcd.print(currentTime.getMinutes()); //「分」
lcd.print(":");
lcd.print(currentTime.getSeconds()); //「秒」
delay(200); //0.2秒ディレイ
}
LCDディスプレイに日時を表示するプログラムです。
本題のRTC機能とは関係ないのですが、「秒」などの要素が2ケタから1ケタに変わるときに2ケタ時の数値が残る問題が発生しました。
59秒→0秒になるときに、下記問題が発覚しました。
「58」→「59」→「09」→「19」と9の表示が残ってしまいます。
対策として、毎スキャンディスプレイ表示をクリアすることにしました。
lcd.clear();
Arduino公式ページ記載のサンプルをアレンジして作成しました
RTC制御の命令文については、公式ページで詳しく解説されています。
RTC動作確認動画はこちら!
まとめ
Arduino UNO R4 MinimaはRTC機能が内蔵されているため、R3で必要だったRTCモジュールが不要です。
そのため、ブレッドボードを占有することなくRTC機能が使えるので、大変便利ですね!
秋月電子通商での税込み販売価格は以下となっており、R4のほうが安いです。
・R3:3630円+送料
・R4:3190円+送料
純正品を買うならR4 Minimaの購入がおすすめです。
以上で、Arduino UNO R4 MinimaのRTC機能の紹介を終わります。
その他の新機能も試してみたいです!
最後まで読んでいただき、ありがとうございました。
Arduino R3互換品キットなら、本体と30以上の電子パーツが入って5,000円程度と高コスパです。
ELEGOOのArduino互換キットは本ブログのLESSONシリーズでも活用しています。
Arduino UNO R4 Minimaの購入方法や価格を知りたい方は、こちらの記事もおすすめです!
コメント