【如何設計網路計時器?】電路組立下篇

取得投幣機模組投幣資料

我們為了測試投幣計數器是否可以使用,我們依照上面所述,將硬體與電子電路組立好,攥寫下表程式,編譯之後,上傳到 Arduino 開發版測試。

表1. 投幣計數器測試程式一

投幣計數器測試程式一(Coin_test01)

//Compatible with the Arduino IDE 1.0
//Library version:1.1
#include <Wire.h>
#include <LiquidCrystal_I2C.h>


LiquidCrystal_I2C lcd(0x27, 20, 4); // set the LCD address to 0x27 for a 16 chars and 2 line display
int coinnum = 0 ;
void setup()

   lcd.init();                      // initialize the lcd

 

 // Print a message to the LCD. 
lcd.backlight(); 
lcd.print("Coin Test"); 
//pinMode(3,INPUT); 
attachInterrupt(1, addcoin, RISING);
//attachInterrupt(1, addcoin, CHANGE); 
// attachInterrupt(RFIDIntrupNumber, ReadRfidID, CHANGE);
}

void loop()

// 將游標設到  第一行,  第二列 
// (注意:  第二列第五行,因為是從 0 開始數起): 
lcd.setCursor(5, 1); 
// 列印 Arduino 重開之後經過的秒數 
lcd.print(millis() / 1000); 
lcd.setCursor(6, 2);
// 列印 Arduino 重開之後經過的秒數  lcd.print(millis() / 1000);  lcd.setCursor(7, 3); 
// 列印 Arduino 重開之後經過的秒數
//  lcd.print(digitalRead(3));   
lcd.print(coinnum); 
Serial.println(coinnum); 
delay(200);
}

 

void addcoin()
{   
        coinnum ++ ;
}

讀者也可以在作者 YouTube 頻道(https://www.youtube.com/user/UltimaBruce )中,在網址https://www.youtube.com/watch?v=UrU6etj-VaE&feature=youtu.be,看到本次實驗-我們投幣時,可 LCD 顯示模組會加一的結果畫面。

當然、如下圖所示,我們可以看到投幣計數器測試程式一結果畫面。

【如何設計網路計時器?】電路組立下篇
▲圖6. 投幣計數器測試程式一結果畫面

取得 RTC 時鐘模組資料

Arduino 投幣計時器最重要的事:我們根據投幣數目,換取可使用電力的時間,但是,Arduino 開發版並沒有時鐘功能,所以我們導入『RTC 時鐘模組』的元件(曹永忠, 2016a, 2016b, 2016c, 2016d, 2016e, 2016f),由於上述內容已經敘述 RTC 時鐘模組的電子電路組立,所以本文測試RTC時鐘模組的讀取資料。

我們依照上面所述,將硬體與電子電路組立好,攥寫下表程式,編譯之後,上傳到 Arduino 開發版測試。

表2. 投幣計數器測試程式二

投幣計數器測試程式二(Coin_test02)

#include <DS1307RTC.h>

#include <Time.h>

#include <Wire.h>

#include <LiquidCrystal_I2C.h>

#define CoinMinute 2 ;

LiquidCrystal_I2C lcd(0x27, 20, 4); // set the LCD address to 0x27 for a 16 chars and 2 line display

int coinnum = 0 ;

  tmElements_t tm;

  int TotalCoin = 0 ;

  int CoinTime = 0 ;

void setup()

{

  lcd.init();                      // initialize the lcd

  // Print a message to the LCD.

  lcd.backlight();

  //pinMode(3,INPUT);

 attachInterrupt(1, addcoin, RISING);

  //attachInterrupt(1, addcoin, CHANGE);

 // attachInterrupt(RFIDIntrupNumber, ReadRfidID, CHANGE);

}

void loop()

{

  // 將游標設到  第一行,  第二列

  // (注意:  第二列第五行,因為是從 0 開始數起):

  lcd.setCursor(5, 1);

  // 列印 Arduino 重開之後經過的秒數

  lcd.print(millis() / 1000);

  getDateTime() ;

  LCDDateTime() ;

 LCDCoin(TotalCoin,CoinTime) ;

  delay(200);

}

void addcoin()

{

    TotalCoin ++ ;

}

String  print2digits(int number) {

  String ttt ;

  if (number >= 0 && number < 10)

  {

     ttt =String("0")+String(number);

  }

  else

  {

     ttt =String(number);

  }

   return ttt ;

}

String  print4digits(int number) {

  String ttt ;

     ttt =String(number);

   return ttt ;

}

String  StrDate() {

  String ttt ;

    ttt = print4digits(tmYearToCalendar(tm.Year))+"/"+print2digits(tm.Month)+"/"+print2digits(tm.Day) ;

   return ttt ;

}

String  StrTime() {

  String ttt ;

    ttt = print2digits(tm.Hour)+":"+print2digits(tm.Minute)+":"+print2digits(tm.Second) ;

   return ttt ;

}

boolean  getDateTime()

{   if (RTC.read(tm))

        return true ;

        else

        return false ;

}        

  void LCDDateTime()

  {

        lcd.setCursor(0, 0);

        lcd.print(StrDate());

        lcd.setCursor(11, 0);

        lcd.print(StrTime());

  }

void LCDCoin(int c1,int c2)

{

   lcd.setCursor(1, 3);

   lcd.print("Credit:(");

   lcd.print(c1);

   lcd.print("/");

   lcd.print(c2);

   lcd.print(")");

  Serial.println(coinnum);

}

讀者也可以在作者 YouTube 頻道(https://www.youtube.com/user/UltimaBruce )中,在網址https://www.youtube.com/watch?v=n0btCMcc51g&feature=youtu.be,看到本次實驗-我們已經可以取到 RTC 時鐘模組的日期資料與時間資料,並顯示在 LCD 顯示模組上,我們投幣時,可 LCD 顯示模組會加一的結果畫面。

當然、如下圖所示,我們可以看到投幣計數器測試程式二結果畫面。

【如何設計網路計時器?】電路組立下篇
▲圖7. 投幣計數器測試程式二結果畫面

本文為『智慧家庭:網路計時器』系列第四篇:電路組立下篇,主要承接上篇『如何設計網路計時器:電路組立上篇』,介紹讀者如何自行組立網路計時器的所有電子電路的組裝。

後續筆者還會繼續發表『智慧家庭:網路計時器』系列的文章,讓我們在未來可以創造出更優質、智慧化的家庭。

敬請期待更多的文章。

最後一頁有筆者介紹唷 ~

曹永忠
作者

曹永忠,國立中央大學資訊管理學系博士,目前在暨南大學電機工程學系兼任助理教授與自由作家,專注於軟體工程、軟體開發與設計、物件導向程式設計......並持續發表作相關專業著作。

使用 Facebook 留言
發表回應
謹慎發言,尊重彼此。按此展開留言規則