浪浪的自動餵食器
/*
浪浪自動餵食器
固定每日 0600 1200 1800 透過SG90 開啟飼料口N秒後關閉
時間部份透過DS1302取得
*/
#include <Servo.h>
#include <RtcDS1302.h>
//建立馬達對象 feederServo
Servo feederServo;
//連接DS1302模組的3線(IO,SCLK,CE) , 引腳配置 4,5,2
ThreeWire myWire(4,5,2);
//使用模ThreeWire配置建立 RtcDS1302 物件
RtcDS1302<ThreeWire> Rtc(myWire);
//伺服馬達的連接在~9 WPM引腳
const int servoPin = 9;
const int openDuration = 5000; //設定每次開啟時間為5秒鐘
void setup() {
Serial.begin(9600); // 初始化串行通信, 用於輸出調適信息
feederServo.attach(servoPin); //將伺服馬達連接到指定的PWM
Rtc.Begin(); //初始化DS1302 模組
}
void loop() {
RtcDateTime now = Rtc.GetDateTime(); //獲取當前的日期和時間
Serial.print(now.Year());
Serial.print("/");
Serial.print(now.Month());
Serial.print("/");
Serial.print(now.Day());
Serial.print(" ");
Serial.print(now.Hour());
Serial.print(":");
Serial.print(now.Minute());
Serial.println();
delay(60000);
//觸發條件 6點、12點、18點
if (now.Hour()==6||now.Hour()==12||now.Hour()==18||now.Hour()==1){
feed();
delay(3600000); //該時段只餵食一次 避免重複在同時段餵食
}
}
void feed(){
Serial.println("Feeding..."); //輸出餵食開始的調適信息
feederServo.write(180); //打開飼料開口
delay(openDuration);
feederServo.write(0); //關閉飼料開口
delay(1000); //等待1秒
Serial.println("Feeding complete."); //輸出餵食完成
}
標籤: Arduino

0 個意見:
張貼留言
訂閱 張貼留言 [Atom]
<< 首頁