ソフトウェア開発の実際(5)

以降、複数シールドの連動を考えます。

では一番簡単と思われる時計から。RTCを読んでLCDに表示するだけです。

===apr25d

/*******************************************************

hardware test sketch
shield#1:Wireless SD
shield#2:data logger(RTC)
shield#3:LCD & keypad

Toshiyuki Hattori, 25/April 2015

********************************************************/

/*******************************************************
shield#2 RTC
Date and time functions using a DS1307 RTC connected via I2C and Wire lib
********************************************************/

#include <Wire.h>
#include “RTClib.h”
RTC_DS1307 RTC;

/*******************************************************
shield#3 LCD
********************************************************/

#include <LiquidCrystal.h>

// select the pins used on the LCD panel
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);

/*******************************************************
setup section
********************************************************/

void setup()
{

/*******************************************************
shield#3 LCD
********************************************************/

lcd.begin(16, 2); // start the library
lcd.setCursor(0,0);
lcd.print(“Start “); // print a simple message

/*******************************************************
shield#2 RTC
********************************************************/

Wire.begin();
RTC.begin();
if (! RTC.isrunning()) {
lcd.print(“RTC NOT running!”);
// following line sets the RTC to the date & time this sketch was compiled
// uncomment it & upload to set the time, date and start run the RTC!
//RTC.adjust(DateTime(__DATE__, __TIME__));
}
}

/*******************************************************
loop section
********************************************************/

void loop()
{
DateTime now = RTC.now();
lcd.setCursor(0,0); // move to the beginning of the first line
lcd.print(now.year(),DEC);
lcd.print(‘/’);
lcd.print(now.month(),DEC);
lcd.print(‘/’);
lcd.print(now.day(),DEC);
lcd.print(”   “);※2

lcd.setCursor(0,1); // move to the beginning of the second line
lcd.print(now.hour(),DEC);
lcd.print(‘:’);
lcd.print(now.minute(),DEC);
lcd.print(‘:’);
lcd.print(now.second(),DEC);
lcd.print(”   “);※2

}

===

※2の注

RTCの読み出し値がゼロサプレスされる(例えば1月が01月とはならない)ため、前の表示が残っていると数値が乱れるのを防ぐため、表示後空白をプリントするようにしています。が、Wordpressに貼り付けると複数の空白が1つになるようで、上記ソースをコピペする際には気をつけてください。Wordpressにはダブルクオーテーションが化ける問題もあるようです。いずれ正しくダウンロードできるようにします。

RTCを手に入れて初めて使う際にはソースの※1の部分のコメントを外してRTCの初期設定をする必要があります。

 

年/月/日

時:分:秒

が表示されています。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です