啟動使用電源
Arduino 投幣計時器最重要的事:當我們投幣之後,產生可以使用的時間,我們系統必須發現有可用時間時,必須啟動電力開關(曹永忠, 許智誠, & 蔡英德, 2015c, 2015d, 2015k, 2015l; 曹永忠, 蔡佳軒, 許智誠, & 蔡英德, 2015a, 2015b)。
我們依照上面所述,將硬體與電子電路組立好,攥寫下表程式,編譯之後,上傳到 Arduino 開發版測試。
投幣計數器測試程式四(Coin_test11)
#include <DS1307RTC.h>
#include <Time.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#define CoinMinute 3 ;
#define RelayPin 12
#define turnon HIGH
#define turnoff LOW
boolean PowerStatus = false ;
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(RelayPin,OUTPUT);
digitalWrite(RelayPin,turnoff) ;
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) ;
CheckStatus() ;
delay(1000);
}
void addcoin()
{
TotalCoin ++ ;
CoinTime = CoinTime + CoinMinute
}
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(" min");
Serial.println(coinnum);
}
void CheckStatus()
{
if (!PowerStatus && ( CoinTime >0 ) )
{
PowerStatus = true ;
digitalWrite(RelayPin,turnon);
}
if (PowerStatus && ( CoinTime <=0 ) )
{
CoinTime = 0 ;
PowerStatus = false ;
}
}
讀者也可以在作者 YouTube 頻道(https://www.youtube.com/user/UltimaBruce )中,在網址https://www.youtube.com/watch?v=-B-Ao0mh43U&feature=youtu.be ,看到本次實驗-我們可以看到投幣前,投幣數為零,可使用時間也為零,所以不能使用電力,但是我們看到投幣後,投幣數累加一,可使用時間也累加,當使用時間大於零時,我們就可以使用電力,所以可以看到右邊的檯燈亮起來。
當然、如下圖所示,我們可以看到投幣計數器測試程式四結果畫面。
▲投幣計數器測試程式四結果畫面
下一頁還有更多精彩教學哦 ~
請注意!留言要自負法律責任,相關案例層出不窮,請慎重發文!