全自動程式碼
原文連結 (Pixnet) ↗
#include <Arduino.h> #include <SoftwareSerial.h> #include "Timer.h" #include <LiquidCrystal.h> Timer t; const int buttonPin = 32; // the number of the pushbutton pin const int motorPin = 13; const int FeedTime = 10; const int WatSent = 30; const int LigPin = 34; const byte Set = 22, Next= 24, up = 26, down = 28; // LCD 接腳: rs, enable, d4, d5, d6, d7 // 對應到 Arduino 接腳: 12, 11 , 5, 4, 3, 2 LiquidCrystal lcd(12, 11, 5, 4, 3, 2);// variables will change: byte buttonState,Seting,Nexting,uping,downing = 0;// variable for reading the pushbutton status int outreg=0; int day,hour,minu,sec=0;//conter int menuChg,SetMode,SetMenuSW=0;//Lcd menu int Norlin2_hour,Norlin2_minu,Norlin2_sec=0;//LCD Normal line2 desplay byte Lcd_lin2_En=1; byte lcd_blink_en=0; int Fed_en,Wat_en,Lig_en=0; //Output EN int FeedSpace=8,FedSpinTime=15,WatLigON_Max=500;//Output int WatLigOF_Max=550,WatLigON_Min=0,WatLigOF_Min=250,LigSpace=4,LigSpinTime=4; int WatlinNow,WatING=0; //Water int WatTimer,WatTime_day,WatTime_hour,WatTime_minu,WatTime_sec; int WatLsTime_day,WatLsTime_hour; int FeedTimer,SpiningTimer,FedRecipro;//Feed int LigTimer,LigRecipro=3600,LigSpiningTimer; //Light
void setup() { // initialize the LED pin as an output: pinMode(motorPin, OUTPUT);
pinMode(FeedTime, OUTPUT);
pinMode(WatSent, OUTPUT);
pinMode(LigPin, OUTPUT);
pinMode(buttonPin, INPUT);
pinMode(Set, INPUT); pinMode(Next, INPUT);
pinMode(up, INPUT); pinMode(down, INPUT); // 設定 LCD 的行列數目 (2 x 16) lcd.begin(16, 2); t.every(2000, LCD_lin2); //call LCD function t.every(1000, Conter_main); t.every(1000, WaterSensor); t.every(1000, Water_main); t.every(1000, Feed_main); t.every(1000, Light); t.every(100, LCD_main); //call LCD function t.every(100, Debounce_main); //call LCD function Serial.begin(9600); //串列埠功能使用初始化 }void loop(){ t.update(); } void Project_main() { // check if the pushbutton is pressed. // if it is, the buttonState is HIGH: if (buttonState == HIGH) {
digitalWrite(motorPin,1); digitalWrite(FeedTime,1); } else { analogWrite(FeedTime,map(hour, 0, 7, 0, 255)); digitalWrite(motorPin,0); Conter_main(); //call Conter function } } void LCD_main() { // 將游標設到 column 0, line 0 lcd.setCursor(0, 0); switch(Seting) { case 0: lcd.noBlink(); Lcd_lin2_En=1; LCD_Hompage(); break; case 255: Lcd_lin2_En=0; Setting(); LCD_Setpage(); break; } if (Lcd_lin2_En==1){ // 將游標設到 column 0, line 1 lcd.setCursor(0, 1); lcd.print(” ”); lcd.setCursor(0, 1); switch(menuChg) { case 0: NorFed_Disp(); break; case 1: NorWat_Disp(); break; case 2: NorLig_Disp(); break; case 3: NorWatLin_Disp(); break; } if (menuChg<=2){ switch(menuChg) { case 0://Feed Norlin2_hour=FedRecipro/60 /60; Norlin2_minu=FedRecipro/60 %60; Norlin2_sec =FedRecipro %60 %60; break; case 1://Water Norlin2_hour=0; Norlin2_minu=WatLsTime_day; Norlin2_sec=WatLsTime_hour; break; case 2://Lig Norlin2_hour=LigRecipro/60 /60; Norlin2_minu=LigRecipro/60 %60; Norlin2_sec=LigRecipro %60 %60; break; } lcd.setCursor(7, 1); lcd.print(""); lcd.print(Norlin2_hour); lcd.setCursor(10, 1); lcd.print(”:”); lcd.print(Norlin2_minu); lcd.setCursor(13, 1); lcd.print(”:”); lcd.print(Norlin2_sec); } else{ lcd.print(WatlinNow); } } } void LCD_Hompage() { lcd.print(“Day:”); lcd.print(day); lcd.setCursor(7, 0); lcd.print(""); lcd.print(hour); lcd.setCursor(10, 0); lcd.print(”:”); lcd.print(minu); lcd.setCursor(13, 0); lcd.print(”:”); lcd.print(sec); } void Setting(){ //reflash time = 100ms if (Nexting==1){ lcd.clear(); if (SetMode==7){ SetMode=0; } else{ SetMode=SetMode+1; } Serial.println(SetMode); } SetMenuSW=SetMode/2; switch(SetMode){ case 0: //hour if (FeedSpace>=9 && (uping==1) || (FeedSpace<=0)&&(downing==1)){ lcd.blink(); } else{ if (uping==1){ FeedSpace=FeedSpace+1; } else if (downing==1){ FeedSpace=FeedSpace-1; } } break; case 1://sec if (FedSpinTime>=59 && (uping==1)|| FedSpinTime<=0&&(downing==1)){ lcd.blink(); } else{ if (uping==1){ FedSpinTime=FedSpinTime+1; } else if (downing==1){ FedSpinTime=FedSpinTime-1; } } break; case 2:// if (WatLigON_Max>=999 && (uping==1) || WatLigON_Max<=WatLigON_Min+10&&(downing==1)){ lcd.blink(); } else{ if (uping==1){ WatLigON_Max=WatLigON_Max+10; } else if (downing==1){ WatLigON_Max=WatLigON_Max-10; } } break; case 3: if (WatLigOF_Max>=999 && (uping==1) || WatLigOF_Max<=WatLigOF_Min+10&&(downing==1)){ lcd.blink(); } else{ if (uping==1){ WatLigOF_Max=WatLigOF_Max+10; } else if (downing==1){ WatLigOF_Max=WatLigOF_Max-10; } } break; case 4: if (WatLigON_Min>=WatLigON_Max-10 && (uping==1) || WatLigON_Min<=0&&(downing==1)){ lcd.blink(); } else{ if (uping==1){ WatLigON_Min=WatLigON_Min+10; } else if (downing==1){ WatLigON_Min=WatLigON_Min-10; } } break; case 5: if (WatLigOF_Min>=WatLigOF_Max-10 && (uping==1) || WatLigOF_Min<=0&&(downing==1)){ lcd.blink(); } else{ if (uping==1){ WatLigOF_Min=WatLigOF_Min+10; } else if (downing==1){ WatLigOF_Min=WatLigOF_Min-10; } } break; case 6://hour if (LigSpace>=23 && (uping==1) || LigSpace<=0&&(downing==1)){ lcd.blink(); } else{ if (uping==1){ LigSpace=LigSpace+1; } else if (downing==1){ LigSpace=LigSpace-1; } } break; case 7://hour if (LigSpinTime>=23 && (uping==1) || LigSpinTime<=0&&(downing==1)){ lcd.blink(); } else{ if (uping==1){ LigSpinTime=LigSpinTime+1; } else if (downing==1){ LigSpinTime=LigSpinTime-1; } } break; } } void LCD_Setpage() { switch(SetMenuSW){ case 0 : SetFed_Disp(); break; case 1: SetWat_Disp(); break; case 2: SetWat2_Disp(); break; case 3: SetLig_Disp(); break; } lcd_blink_en=lcd_blink_en+1; //游標閃爍智能 if (lcd_blink_en%2==0){ switch(SetMode){ case 0: lcd.setCursor(10, 0); break; case 1: lcd.setCursor(10, 1); break; case 2: lcd.setCursor(13, 0); break; case 4: lcd.setCursor(13, 0); break; case 3: lcd.setCursor(13, 1); break; case 5: lcd.setCursor(13, 1); break; case 6: lcd.setCursor(9, 0); break; case 7: lcd.setCursor(9, 1); break; }
lcd.blink(); } else{ lcd.noBlink(); } } void SetFed_Disp(){ lcd.print(“FeedSpace:”); lcd.print(FeedSpace); lcd.setCursor(12, 0); lcd.print(“Hour”); lcd.setCursor(0, 1); lcd.print(“SpinTime :”); lcd.print(FedSpinTime); lcd.setCursor(13, 1); lcd.print(“Sec”); } void SetWat_Disp(){ lcd.print(“WatLigON_Max:”); lcd.print(WatLigON_Max); lcd.setCursor(0, 1); lcd.print(“WatLigOF_Max”); lcd.setCursor(12, 1); lcd.print(”:”); lcd.print(WatLigOF_Max); } void SetWat2_Disp(){ lcd.print(“WatLigON_Min:”); lcd.print(WatLigON_Min); lcd.setCursor(0, 1); lcd.print(“WatLigOF_Min”); lcd.setCursor(12, 1); lcd.print(”:”); lcd.print(WatLigOF_Min); } void SetLig_Disp(){ lcd.print(“LigSpace:”); lcd.print(LigSpace); lcd.setCursor(12, 0); lcd.print(“Hour”); lcd.setCursor(0, 1); lcd.print(“SpinTime:”); lcd.print(LigSpinTime); lcd.setCursor(12, 1); lcd.print(“Hour”); } void LCD_lin2() { if (menuChg==3){ menuChg=0; } else{ menuChg=menuChg+1; }//Change page } void NorFed_Disp(){ lcd.print(“Fed:”); if (Fed_en==1){ lcd.print(” ON”); } else{ lcd.print(“OFF”); } } void NorWat_Disp(){ lcd.print(“Wat:”); if (Wat_en==1){ lcd.print(” ON”); } else{ lcd.print(“OFF”); } lcd.setCursor(9, 1); } void NorLig_Disp(){ lcd.print(“Lig:”); if (Lig_en==1){ lcd.print(” ON”); } else{ lcd.print(“OFF”); } lcd.setCursor(9, 1); } void NorWatLin_Disp(){ lcd.print(“WatLin:”); } void Conter_main() { // counter: if (sec==59) { lcd.clear(); sec=0; if (minu==59){ minu=0; if(hour==23){ hour=0; day=day+1;/*delay (15000); sec=15;*/ } else{ hour=hour+1; } } else{ minu=minu+1; }} else{ sec=sec+1; } } void Debounce_main() { // read the state of the pushbutton value: buttonState = digitalRead(buttonPin); if (digitalRead(Set)==1) { Seting= ~Seting; lcd.clear(); } if (digitalRead(up)||digitalRead(down) ==1) { lcd.clear(); } Nexting= digitalRead(Next); uping= digitalRead(up); downing= digitalRead(down); } void WaterSensor(){ WatlinNow=analogRead(0); } /* Output Enable / void Water_main(){ if (Lig_en==0){//WatLigOFF if (WatlinNow<=WatLigOF_Min){ Wat_en=1; } if (WatlinNow>=WatLigOF_Max){ Wat_en=0; } if (Wat_en==1){//Sent Water digitalWrite(WatSent,1); } else{ digitalWrite(WatSent,0); } } else{//WatLigON if (WatlinNow<=WatLigON_Min){ Wat_en=1; } if (WatlinNow>=WatLigON_Max){ Wat_en=0; } if (Wat_en==1){//Sent Water digitalWrite(WatSent,1); } else{ digitalWrite(WatSent,0); } } if (Wat_en==1){ WatLsTime_day=WatTime_day; WatLsTime_hour=WatTime_hour; WatTime_day=0; WatTime_hour=0; WatTime_minu=0; WatTime_sec=0; } else{ // int WatTimer,WatLsTime,WatTime_hour,WatTime_minu,WatTime_sec; if (WatTime_sec==59) { WatTime_sec=0; if (minu==59){ WatTime_minu=0; if(WatTime_hour==23){ WatTime_hour=0; WatTime_day=WatTime_day+1; } else{ WatTime_hour=WatTime_hour+1; } } else{ WatTime_minu=WatTime_minu+1; } } else{ WatTime_sec=WatTime_sec+1; } } } int test_fed; void Feed_main(){ if (buttonState==1){ digitalWrite(motorPin,1); //Feeding } else{ if (test_fed==1){ test_fed=0; // 設定 LCD 的行列數目 (2 x 16) lcd.begin(16, 2); } FeedTimer=FeedTimer+1; FedRecipro=FeedSpace6060-FeedTimer; if(FeedTimer>=FeedSpace6060){ Fed_en=1; FeedTimer=0; } if(Fed_en==1){ if (SpiningTimer>=FedSpinTime){ SpiningTimer=0; Fed_en=0; } else{ digitalWrite(motorPin,1); //Feeding SpiningTimer=SpiningTimer+1; test_fed=1; }
} else{digitalWrite(motorPin,0);}//Stop Feed } } void Light(){ LigTimer=LigTimer+1; if(Lig_en==1){ digitalWrite(LigPin,1); //Liging if(LigRecipro==0){ Lig_en=0; LigTimer=0; LigRecipro=3600; } else{LigRecipro=LigSpinTime6060-LigTimer; }//倒數 } else{ digitalWrite(LigPin,0);//Stop Lig if(LigRecipro==0){
Lig_en=1; LigTimer=0; LigRecipro=3600; } else{LigRecipro=LigSpace60*60-LigTimer; //倒數 } } }#include <Arduino.h> #include <SoftwareSerial.h> #include “Timer.h” #include <LiquidCrystal.h> Timer t; const int buttonPin = 32; // the number of the pushbutton pin const int motorPin = 13;
const int FeedTime = 10;
const int WatSent = 30; const int LigPin = 34; const byte Set = 22, Next= 24, up = 26, down = 28; // LCD 接腳: rs, enable, d4, d5, d6, d7 // 對應到 Arduino 接腳: 12, 11 , 5, 4, 3, 2 LiquidCrystal lcd(12, 11, 5, 4, 3, 2);// variables will change: byte buttonState,Seting,Nexting,uping,downing = 0;// variable for reading the pushbutton status int outreg=0; int day,hour,minu,sec=0;//conter int menuChg,SetMode,SetMenuSW=0;//Lcd menu int Norlin2_hour,Norlin2_minu,Norlin2_sec=0;//LCD Normal line2 desplay byte Lcd_lin2_En=1; byte lcd_blink_en=0; int Fed_en,Wat_en,Lig_en=0; //Output EN int FeedSpace=8,FedSpinTime=15,WatLigON_Max=500;//Output int WatLigOF_Max=550,WatLigON_Min=0,WatLigOF_Min=250,LigSpace=4,LigSpinTime=4; int WatlinNow,WatING=0; //Water int WatTimer,WatTime_day,WatTime_hour,WatTime_minu,WatTime_sec; int WatLsTime_day,WatLsTime_hour; int FeedTimer,SpiningTimer,FedRecipro;//Feed int LigTimer,LigRecipro=3600,LigSpiningTimer; //Light
void setup() { // initialize the LED pin as an output: pinMode(motorPin, OUTPUT);
pinMode(FeedTime, OUTPUT);
pinMode(WatSent, OUTPUT);
pinMode(LigPin, OUTPUT);
pinMode(buttonPin, INPUT);
pinMode(Set, INPUT); pinMode(Next, INPUT);
pinMode(up, INPUT); pinMode(down, INPUT); // 設定 LCD 的行列數目 (2 x 16) lcd.begin(16, 2); t.every(2000, LCD_lin2); //call LCD function t.every(1000, Conter_main); t.every(1000, WaterSensor); t.every(1000, Water_main); t.every(1000, Feed_main); t.every(1000, Light); t.every(100, LCD_main); //call LCD function t.every(100, Debounce_main); //call LCD function Serial.begin(9600); //串列埠功能使用初始化 }void loop(){ t.update(); } void Project_main() { // check if the pushbutton is pressed. // if it is, the buttonState is HIGH: if (buttonState == HIGH) {
digitalWrite(motorPin,1); digitalWrite(FeedTime,1); } else { analogWrite(FeedTime,map(hour, 0, 7, 0, 255)); digitalWrite(motorPin,0); Conter_main(); //call Conter function } } void LCD_main() { // 將游標設到 column 0, line 0 lcd.setCursor(0, 0); switch(Seting) { case 0: lcd.noBlink(); Lcd_lin2_En=1; LCD_Hompage(); break; case 255: Lcd_lin2_En=0; Setting(); LCD_Setpage(); break; } if (Lcd_lin2_En==1){ // 將游標設到 column 0, line 1 lcd.setCursor(0, 1); lcd.print(” ”); lcd.setCursor(0, 1); switch(menuChg) { case 0: NorFed_Disp(); break; case 1: NorWat_Disp(); break; case 2: NorLig_Disp(); break; case 3: NorWatLin_Disp(); break; } if (menuChg<=2){ switch(menuChg) { case 0://Feed Norlin2_hour=FedRecipro/60 /60; Norlin2_minu=FedRecipro/60 %60; Norlin2_sec =FedRecipro %60 %60; break; case 1://Water Norlin2_hour=0; Norlin2_minu=WatLsTime_day; Norlin2_sec=WatLsTime_hour; break; case 2://Lig Norlin2_hour=LigRecipro/60 /60; Norlin2_minu=LigRecipro/60 %60; Norlin2_sec=LigRecipro %60 %60; break; } lcd.setCursor(7, 1); lcd.print(""); lcd.print(Norlin2_hour); lcd.setCursor(10, 1); lcd.print(”:”); lcd.print(Norlin2_minu); lcd.setCursor(13, 1); lcd.print(”:”); lcd.print(Norlin2_sec); } else{ lcd.print(WatlinNow); } } } void LCD_Hompage() { lcd.print(“Day:”); lcd.print(day); lcd.setCursor(7, 0); lcd.print(""); lcd.print(hour); lcd.setCursor(10, 0); lcd.print(”:”); lcd.print(minu); lcd.setCursor(13, 0); lcd.print(”:”); lcd.print(sec); } void Setting(){ //reflash time = 100ms if (Nexting==1){ lcd.clear(); if (SetMode==7){ SetMode=0; } else{ SetMode=SetMode+1; } Serial.println(SetMode); } SetMenuSW=SetMode/2; switch(SetMode){ case 0: //hour if (FeedSpace>=9 && (uping==1) || (FeedSpace<=0)&&(downing==1)){ lcd.blink(); } else{ if (uping==1){ FeedSpace=FeedSpace+1; } else if (downing==1){ FeedSpace=FeedSpace-1; } } break; case 1://sec if (FedSpinTime>=59 && (uping==1)|| FedSpinTime<=0&&(downing==1)){ lcd.blink(); } else{ if (uping==1){ FedSpinTime=FedSpinTime+1; } else if (downing==1){ FedSpinTime=FedSpinTime-1; } } break; case 2:// if (WatLigON_Max>=999 && (uping==1) || WatLigON_Max<=WatLigON_Min+10&&(downing==1)){ lcd.blink(); } else{ if (uping==1){ WatLigON_Max=WatLigON_Max+10; } else if (downing==1){ WatLigON_Max=WatLigON_Max-10; } } break; case 3: if (WatLigOF_Max>=999 && (uping==1) || WatLigOF_Max<=WatLigOF_Min+10&&(downing==1)){ lcd.blink(); } else{ if (uping==1){ WatLigOF_Max=WatLigOF_Max+10; } else if (downing==1){ WatLigOF_Max=WatLigOF_Max-10; } } break; case 4: if (WatLigON_Min>=WatLigON_Max-10 && (uping==1) || WatLigON_Min<=0&&(downing==1)){ lcd.blink(); } else{ if (uping==1){ WatLigON_Min=WatLigON_Min+10; } else if (downing==1){ WatLigON_Min=WatLigON_Min-10; } } break; case 5: if (WatLigOF_Min>=WatLigOF_Max-10 && (uping==1) || WatLigOF_Min<=0&&(downing==1)){ lcd.blink(); } else{ if (uping==1){ WatLigOF_Min=WatLigOF_Min+10; } else if (downing==1){ WatLigOF_Min=WatLigOF_Min-10; } } break; case 6://hour if (LigSpace>=23 && (uping==1) || LigSpace<=0&&(downing==1)){ lcd.blink(); } else{ if (uping==1){ LigSpace=LigSpace+1; } else if (downing==1){ LigSpace=LigSpace-1; } } break; case 7://hour if (LigSpinTime>=23 && (uping==1) || LigSpinTime<=0&&(downing==1)){ lcd.blink(); } else{ if (uping==1){ LigSpinTime=LigSpinTime+1; } else if (downing==1){ LigSpinTime=LigSpinTime-1; } } break; } } void LCD_Setpage() { switch(SetMenuSW){ case 0 : SetFed_Disp(); break; case 1: SetWat_Disp(); break; case 2: SetWat2_Disp(); break; case 3: SetLig_Disp(); break; } lcd_blink_en=lcd_blink_en+1; //游標閃爍智能 if (lcd_blink_en%2==0){ switch(SetMode){ case 0: lcd.setCursor(10, 0); break; case 1: lcd.setCursor(10, 1); break; case 2: lcd.setCursor(13, 0); break; case 4: lcd.setCursor(13, 0); break; case 3: lcd.setCursor(13, 1); break; case 5: lcd.setCursor(13, 1); break; case 6: lcd.setCursor(9, 0); break; case 7: lcd.setCursor(9, 1); break; }
lcd.blink(); } else{ lcd.noBlink(); } } void SetFed_Disp(){ lcd.print(“FeedSpace:”); lcd.print(FeedSpace); lcd.setCursor(12, 0); lcd.print(“Hour”); lcd.setCursor(0, 1); lcd.print(“SpinTime :”); lcd.print(FedSpinTime); lcd.setCursor(13, 1); lcd.print(“Sec”); } void SetWat_Disp(){ lcd.print(“WatLigON_Max:”); lcd.print(WatLigON_Max); lcd.setCursor(0, 1); lcd.print(“WatLigOF_Max”); lcd.setCursor(12, 1); lcd.print(”:”); lcd.print(WatLigOF_Max); } void SetWat2_Disp(){ lcd.print(“WatLigON_Min:”); lcd.print(WatLigON_Min); lcd.setCursor(0, 1); lcd.print(“WatLigOF_Min”); lcd.setCursor(12, 1); lcd.print(”:”); lcd.print(WatLigOF_Min); } void SetLig_Disp(){ lcd.print(“LigSpace:”); lcd.print(LigSpace); lcd.setCursor(12, 0); lcd.print(“Hour”); lcd.setCursor(0, 1); lcd.print(“SpinTime:”); lcd.print(LigSpinTime); lcd.setCursor(12, 1); lcd.print(“Hour”); } void LCD_lin2() { if (menuChg==3){ menuChg=0; } else{ menuChg=menuChg+1; }//Change page } void NorFed_Disp(){ lcd.print(“Fed:”); if (Fed_en==1){ lcd.print(” ON”); } else{ lcd.print(“OFF”); } } void NorWat_Disp(){ lcd.print(“Wat:”); if (Wat_en==1){ lcd.print(” ON”); } else{ lcd.print(“OFF”); } lcd.setCursor(9, 1); } void NorLig_Disp(){ lcd.print(“Lig:”); if (Lig_en==1){ lcd.print(” ON”); } else{ lcd.print(“OFF”); } lcd.setCursor(9, 1); } void NorWatLin_Disp(){ lcd.print(“WatLin:”); } void Conter_main() { // counter: if (sec==59) { lcd.clear(); sec=0; if (minu==59){ minu=0; if(hour==23){ hour=0; day=day+1;/*delay (15000); sec=15;*/ } else{ hour=hour+1; } } else{ minu=minu+1; }
} else{ sec=sec+1; } } void Debounce_main() { // read the state of the pushbutton value: buttonState = digitalRead(buttonPin); if (digitalRead(Set)==1) { Seting= ~Seting; lcd.clear(); } if (digitalRead(up)||digitalRead(down) ==1) { lcd.clear(); } Nexting= digitalRead(Next); uping= digitalRead(up); downing= digitalRead(down); } void WaterSensor(){ WatlinNow=analogRead(0); } /* Output Enable / void Water_main(){ if (Lig_en==0){//WatLigOFF if (WatlinNow<=WatLigOF_Min){ Wat_en=1; } if (WatlinNow>=WatLigOF_Max){ Wat_en=0; } if (Wat_en==1){//Sent Water digitalWrite(WatSent,1); } else{ digitalWrite(WatSent,0); } } else{//WatLigON if (WatlinNow<=WatLigON_Min){ Wat_en=1; } if (WatlinNow>=WatLigON_Max){ Wat_en=0; } if (Wat_en==1){//Sent Water digitalWrite(WatSent,1); } else{ digitalWrite(WatSent,0); } } if (Wat_en==1){ WatLsTime_day=WatTime_day; WatLsTime_hour=WatTime_hour; WatTime_day=0; WatTime_hour=0; WatTime_minu=0; WatTime_sec=0; } else{ // int WatTimer,WatLsTime,WatTime_hour,WatTime_minu,WatTime_sec; if (WatTime_sec==59) { WatTime_sec=0; if (minu==59){ WatTime_minu=0; if(WatTime_hour==23){ WatTime_hour=0; WatTime_day=WatTime_day+1; } else{ WatTime_hour=WatTime_hour+1; } } else{ WatTime_minu=WatTime_minu+1; } } else{ WatTime_sec=WatTime_sec+1; } } } int test_fed; void Feed_main(){ if (buttonState==1){ digitalWrite(motorPin,1); //Feeding } else{ if (test_fed==1){ test_fed=0; // 設定 LCD 的行列數目 (2 x 16) lcd.begin(16, 2); } FeedTimer=FeedTimer+1; FedRecipro=FeedSpace6060-FeedTimer; if(FeedTimer>=FeedSpace6060){ Fed_en=1; FeedTimer=0; } if(Fed_en==1){ if (SpiningTimer>=FedSpinTime){ SpiningTimer=0; Fed_en=0; } else{ digitalWrite(motorPin,1); //Feeding SpiningTimer=SpiningTimer+1; test_fed=1; }
} else{digitalWrite(motorPin,0);}//Stop Feed } } void Light(){ LigTimer=LigTimer+1; if(Lig_en==1){ digitalWrite(LigPin,1); //Liging if(LigRecipro==0){ Lig_en=0; LigTimer=0; LigRecipro=3600; } else{LigRecipro=LigSpinTime6060-LigTimer; }//倒數 } else{ digitalWrite(LigPin,0);//Stop Lig if(LigRecipro==0){
Lig_en=1; LigTimer=0; LigRecipro=3600; } else{LigRecipro=LigSpace60*60-LigTimer; //倒數 } } }