以降、複数シールドの連動を考えます。
では一番簡単と思われる時計から。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の初期設定をする必要があります。
年/月/日
時:分:秒
が表示されています。