2012年6月5日 星期二

水族箱控制器 : Arduino 二部曲

有了溫度顯示,接下來想替控制器加上一個時間的控制,因為水族箱的燈光會需要用時間來控制,網路上有很多給 Arduino 使用的時間模組,因為LCD顯示器已經使用了 I2C的連法,所以我想找一塊時間模組也是用 I2C來連接,這時候的想法只是希望能多留一些 I/O 埠給其他用途,在網路上找到了這一塊:

原廠產品圖 http://www.waveshare.net/Shop/PCF8563-RTC-Board.htm
這一塊除了提供時間也提供日期,上面而且有 3.3V的電池可以供電,但是需注意此塊模組上I2C的接頭排列位置和 Arduino Sensor Shield 4.0 上的排列方式是不一樣的,不能直接拿排線對接:

I2C 接頭腳位是不一樣的

接著當然是希望這一塊模組有現成的軟體可以用,很慶幸的是這一塊板子已有現成的RTC-PCF8563 Library,下載程式庫後先用簡單的程式測一下是否可以驅動時間模塊,以下是http://arduino.cc/playground/Main/RTC-PCF8563上的 Sample 程式:

#include <Wire.h>
#include <Rtc_Pcf8563.h>

//init the real time clock
Rtc_Pcf8563 rtc;

void setup()
{
  // Serial begin 9600
  Serial.begin(9600);
  //clear out the registers
  rtc.initClock();
  //set a time to start with.
  //day, weekday, month, century(1=1900, 0=2000), year(0-99)
  rtc.setDate(14, 6, 3, 1, 10);
  //hr, min, sec
  rtc.setTime(1, 15, 0);
}

void loop()
{
  //both format functions call the internal getTime() so that the 
  //formatted strings are at the current time/date.
  Serial.print(rtc.formatTime());
  Serial.print("\r\n");
  Serial.print(rtc.formatDate());
  Serial.print("\r\n");
  delay(1000);
}

在 Serial Monitor 中監看執行後的結果:


再來就是把程式合併到魚缸的控制程式中,合併時間及溫度顯示到 LCD上:


線再發現另外一個問題了,顯示模組好像太小了一些,如果再要顯示酸鹼度就不知道應該擺在哪裡了。