取得投幣機模組投幣資料
我們為了測試投幣計數器是否可以使用,我們依照上面所述,將硬體與電子電路組立好,攥寫下表程式,編譯之後,上傳到 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. 投幣計數器測試程式二結果畫面
本文為『智慧家庭:網路計時器』系列第四篇:電路組立下篇,主要承接上篇『如何設計網路計時器:電路組立上篇』,介紹讀者如何自行組立網路計時器的所有電子電路的組裝。
後續筆者還會繼續發表『智慧家庭:網路計時器』系列的文章,讓我們在未來可以創造出更優質、智慧化的家庭。
敬請期待更多的文章。
最後一頁有筆者介紹唷 ~
請注意!留言要自負法律責任,相關案例層出不窮,請慎重發文!