2023年12月9日 星期六

浪浪的自動餵食器

 

/*
 浪浪自動餵食器
 固定每日 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.");   //輸出餵食完成
}

標籤:

0 個意見:

張貼留言

訂閱 張貼留言 [Atom]

<< 首頁