在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
电子发烧友
开通电子发烧友VIP会员 尊享10大特权
海量资料免费下载
精品直播免费看
优质内容免费畅学
课程9折专享价
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

構建一個基于Arduino的自動寵物喂食器

科技觀察員 ? 來源:circuitdigest ? 作者:潘卡伊·卡特里 ? 2022-11-17 17:28 ? 次閱讀

今天,我們正在構建一個基于Arduino的自動寵物喂食器,它可以及時自動為您的寵物提供食物。它有一個DS3231 RTC(實時時鐘)模塊,用于設置寵物應進食的時間和日期。因此,通過根據寵物的進食時間表設置時間,設備會自動掉落或裝滿食物碗。

在本電路中,我們使用16*2 LCD通過DS3231 RTC模塊和Arduino UNO顯示時間。此外,伺服電機用于旋轉容器以提供食物,4 * 4矩陣鍵盤用于手動設置喂食寵物的時間。您可以根據要提供給寵物的食物數量設置旋轉角度和容器打開持續時間。食物的數量也可能取決于您的寵物,無論是狗、貓還是鳥。

所需材料

Arduino UNO

4*4矩陣鍵盤

16 * 2液晶顯示器

按鈕

伺服電機

電阻器

連接線

面包板

電路圖

在這個基于Arduino的Cat喂食器中,為了獲取時間和日期,我們使用了RTC(實時時鐘)模塊。我們使用 4*4 矩陣鍵盤在 16x2 LCD 的幫助下手動設置寵物的進食時間。伺服電機旋轉容器并在用戶設置的時間內放下食物。液晶屏用于顯示日期和時間。完整的工作可以在最后給出的視頻中找到。

poYBAGN1_raAUb2XAAEla2UuhJA901.png

pYYBAGN1_rmAAgh_AAD20S8PGec555.jpg

3D打印寵物喂食器模型

我們使用3D打印機設計了這款Arduino寵物喂食器容器。用于打印此模型的材料是 PLA。它有四個部分,如下圖所示:

poYBAGN1_rqAFLXdAABZ5JAWsB4743.jpg

組裝四個部件并連接伺服電機,如下圖所示:

pYYBAGN1_ruAPiKUAABsrf8XQdw659.jpg

DS3231 RTC 模塊

DS3231是RTC(實時時鐘)模塊。它用于維護大多數電子項目的日期和時間。該模塊有自己的紐扣電池電源,即使主電源被移除或MCU經過硬復位,它也能保持日期和時間。因此,一旦我們在此模塊中設置了日期和時間,它將始終跟蹤它。在我們的電路中,我們使用DS3231根據寵物主人設置的時間喂寵物,就像鬧鐘一樣。當時鐘達到設定時間時,它操作伺服電機打開容器門,食物掉入寵物的食物碗中。

pYYBAGN1_r2AKMDoAABklFhj4XI898.jpg

注意:首次使用此模塊時,您必須設置日期和時間。

在下面的代碼中,我們定義了庫,RTC模塊的“#include ”,伺服電機的“#include ”,16 * 2 LCD的“#include ”和4 * 4矩陣鍵盤的“#include <鍵盤.h>”。

#include
#include
#include
#include
在下面的代碼中,我們為 4*4 矩陣鍵盤定義鍵盤映射,并為鍵盤的行和列分配 Arduino 引腳。

char keys[ROWS][COLS] = {
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}
};
byte rowPins[ROWS] = { 2, 3, 4, 5 };
byte colPins[COLS] = { 6, 7, 8, 9 };
在這里,我們將使用代碼中的以下命令創建鍵盤。

Keypad kpd = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );
分配 A4 和 A5 Arduino 引腳以連接 DS3231 的 SCL 和 SDA 引腳。此外,將引腳分配給 LCD 并初始化伺服電機。

DS3231 rtc(A4, A5);
Servo servo_test; //initialize a servo object for the connected servo
LiquidCrystal lcd(A0, A1, A2, 11, 12, 13); // Creates an LC object. Parameters: (rs, enable, d4, d5, d6, d7)
在下面的代碼中,我們將 t1 聲明為 t6、鍵和數組 r[6],以及饋送。

int t1, t2, t3, t4, t5, t6;
boolean feed = true;
char key;
int r[6];
在下面的代碼中,我們正在為啟動設置所有組件。就像在這個代碼“servo_test.attach(10);”伺服器附在 10千Arduino的銷釘。定義 A0、A1 和 A2 作為輸出引腳并初始化 LCD 和 RTC 模塊。

void setup()
{
servo_test.attach(10); // attach the signal pin of servo to pin9 of arduino
rtc.begin();
lcd.begin(16,2);
servo_test.write(55);
Serial.begin(9600);
pinMode(A0, OUTPUT);
pinMode(A1, OUTPUT);
pinMode(A2, OUTPUT);
}
現在,循環如何工作是要理解的重要部分。每當按下按鈕時,它都會變高表示 1,可以通過“按鈕按下 = 數字讀取(A3)”來讀取?,F在它進入“if”語句并調用“setFeedingTime”函數。然后,它將實時時間和用戶輸入的時間進行比較。如果條件為真,這意味著實時時間和輸入的時間相同,則伺服電機旋轉至 100 度并傾斜 0.4 秒后返回其初始位置。

void loop() {
lcd.setCursor(0,0);
int buttonPress;
buttonPress = digitalRead(A3);

if (buttonPress==1)
setFeedingTime();
lcd.print("Time: ");
String t = "";

t = rtc.getTimeStr();
t1 = t.charAt(0)-48;
t2 = t.charAt(1)-48;
t3 = t.charAt(3)-48;
t4 = t.charAt(4)-48;
t5 = t.charAt(6)-48;
t6 = t.charAt(7)-48;

lcd.print(rtc.getTimeStr());
lcd.setCursor(0,1);
lcd.print("Date: ");
lcd.print(rtc.getDateStr());

if (t1==r[0] && t2==r[1] && t3==r[2] && t4==r[3]&& t5<1 && t6<3 && feed==true)
{
servo_test.write(100); //command to rotate the servo to the specified angle
delay(400);
servo_test.write(55);
feed=false;
}
}
在 void setFeedingTime() 函數代碼中,按下按鈕后,我們可以輸入寵物喂食時間,然后我們必須按“D”以節省該時間。當保存的時間與實時匹配時,伺服開始旋轉。

void setFeedingTime()
{
feed = true;
int i=0;

lcd.clear();
lcd.setCursor(0,0);
lcd.print("Set feeding Time");
lcd.clear();
lcd.print("HH:MM");
lcd.setCursor(0,1);
while(1){
key = kpd.getKey();
char j;

if(key!=NO_KEY){
lcd.setCursor(j,1);
lcd.print(key);
r[i] = key-48;
i++;
j++;

if (j==2)
{
lcd.print(":"); j++;
}
delay(500);
}

if (key == 'D')
{key=0; break; }
}
}

自動寵物喂食器的工作原理

poYBAGN1_r6APEWmAACKwqD-fTQ316.jpg

將代碼上傳到Arduino Uno后,時間和日期將顯示在16 * 2 LCD上。當您按下按鈕時,它會詢問寵物的喂食時間,您必須使用 4*4 矩陣鍵盤輸入時間。顯示屏將顯示輸入的時間,當您按“D”時,它會節省時間。當實時時間和輸入時間匹配時,它將伺服電機從其初始位置旋轉 55? 到 100?,并在延遲后再次返回到其初始位置。因此,伺服電機連接到食品容器門,因此當它移動時,門將打開,一些食物落入碗或盤子中。延遲0.4秒后,伺服電機再次旋轉并關閉閘門。整個過程在幾秒鐘內完成。這就是您的寵物在您輸入時自動獲得食物的方式。

#include

#include

#include

#include


const byte ROWS = 4; // Four rows

const byte COLS = 4; // Three columns


// Define the Keymap


char keys[ROWS][COLS] = {


{'1','2','3','A'},


{'4','5','6','B'},


{'7','8','9','C'},


{'*','0','#','D'}


};


// Connect keypad ROW0, ROW1, ROW2 and ROW3 to these Arduino pins.


byte rowPins[ROWS] = { 2, 3, 4, 5 };


// Connect keypad COL0, COL1 and COL2 to these Arduino pins.


byte colPins[COLS] = { 6, 7, 8, 9 };


// Create the Keypad

Keypad kpd = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );





DS3231 rtc(A4, A5);

Servo servo_test; //initialize a servo object for the connected servo

LiquidCrystal lcd(A0, A1, A2, 11, 12, 13); // Creates an LC object. Parameters: (rs, enable, d4, d5, d6, d7)


//int angle = 0;

// int potentio = A0; // initialize the A0analog pin for potentiometer

int t1, t2, t3, t4, t5, t6;




boolean feed = true; // condition for alarm


char key;

int r[6];



void setup()

{

servo_test.attach(10); // attach the signal pin of servo to pin9 of arduino

rtc.begin();

lcd.begin(16,2);

servo_test.write(55);

Serial.begin(9600);

pinMode(A0, OUTPUT);

pinMode(A1, OUTPUT);

pinMode(A2, OUTPUT);



}



void loop()

{


lcd.setCursor(0,0);

int buttonPress;

buttonPress = digitalRead(A3);


if (buttonPress==1)

setFeedingTime();




//Serial.println(buttonPress);


lcd.print("Time: ");

String t = "";

t = rtc.getTimeStr();

t1 = t.charAt(0)-48;

t2 = t.charAt(1)-48;

t3 = t.charAt(3)-48;

t4 = t.charAt(4)-48;

t5 = t.charAt(6)-48;

t6 = t.charAt(7)-48;



lcd.print(rtc.getTimeStr());

lcd.setCursor(0,1);

lcd.print("Date: ");

lcd.print(rtc.getDateStr());



if (t1==r[0] && t2==r[1] && t3==r[2] && t4==r[3]&& t5<1 && t6<3 && feed==true)

{

servo_test.write(100); //command to rotate the servo to the specified angle

delay(400);

servo_test.write(55);

feed=false;

}

}


void setFeedingTime()

{

feed = true;

int i=0;


lcd.clear();

lcd.setCursor(0,0);

lcd.print("Set feeding Time");

lcd.clear();

lcd.print("HH:MM");

lcd.setCursor(0,1);




while(1){

key = kpd.getKey();


char j;



if(key!=NO_KEY){



lcd.setCursor(j,1);



lcd.print(key);



r[i] = key-48;

i++;

j++;


if (j==2)

{

lcd.print(":"); j++;

}

delay(500);

}


if (key == 'D')

{key=0; break; }

}

}

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • DS3231
    +關注

    關注

    2

    文章

    51

    瀏覽量

    24010
  • Arduino
    +關注

    關注

    188

    文章

    6485

    瀏覽量

    189609
  • 喂食器
    +關注

    關注

    1

    文章

    27

    瀏覽量

    3342
收藏 4人收藏
  • Psychopath1
  • jf_354121731

評論

相關推薦

基于單片機的寵物定時自動喂食器設計(原理圖&程序)

對于寵物定時自動喂食器感興趣的小伙伴看過來了,電路原理圖、程序、元器件資料都給你準備好了,現在就動動你的小手,用手中的單片機板子給自己的寵物設計
發表于 08-25 16:36

怎么實現寵物自動喂食器的設計?

怎么實現寵物自動喂食器的設計?
發表于 06-15 07:01

如何實現寵物喂食器的設計?

如何實現寵物喂食器的設計?
發表于 12-21 07:54

如何設計寵物喂食器?

如何設計寵物喂食器?
發表于 02-09 07:49

自制寵物喂食器

:(劃掉虛假的)你參加了聚會/你工作了/你的孩子不讓你睡覺。這只是遠程饋線派上用場的例子。與您家中的智能系統集成的自動“智能”
發表于 07-22 07:43

自動喂食器的設計原理圖

自己設計的自動喂食器的設計,家庭寵物的需要。
發表于 12-30 15:55 ?36次下載

寵物定時喂食器設計資料

寵物定時喂食器設計資料,很好設計資料,快來學習吧。
發表于 05-09 17:10 ?0次下載

制作易于使用的自動寵物喂食器

這是易于使用的自動寵物喂食器,帶有些 3D 打印部件、可調節的
的頭像 發表于 06-28 17:18 ?5979次閱讀
制作<b class='flag-5'>一</b><b class='flag-5'>個</b>易于使用的<b class='flag-5'>自動</b><b class='flag-5'>寵物</b><b class='flag-5'>喂食器</b>

基于物聯網的寵物喂食器

我們正在構建簡單、高效且經濟的基于物聯網的寵物喂食器。使用這款自動
的頭像 發表于 07-25 17:29 ?3765次閱讀
基于物聯網的<b class='flag-5'>寵物</b><b class='flag-5'>喂食器</b>

設計寵物NFC定時喂食器

我設計并制造了這款自動喂食器,以幫助我的糖尿病貓控制他的喂食并防止我的另只貓吃他的食物。該喂食器可能對需要監控
的頭像 發表于 08-06 16:15 ?2814次閱讀
設計<b class='flag-5'>一</b><b class='flag-5'>個</b><b class='flag-5'>寵物</b>NFC定時<b class='flag-5'>喂食器</b>

Arduino遙控寵物喂食器

電子發燒友網站提供《Arduino遙控寵物喂食器.zip》資料免費下載
發表于 10-24 10:28 ?4次下載
<b class='flag-5'>Arduino</b>遙控<b class='flag-5'>寵物</b><b class='flag-5'>喂食器</b>

智能自動魚/寵物喂食器開源分享

電子發燒友網站提供《智能自動魚/寵物喂食器開源分享.zip》資料免費下載
發表于 10-24 09:23 ?9次下載
智能<b class='flag-5'>自動</b>魚/<b class='flag-5'>寵物</b><b class='flag-5'>喂食器</b>開源分享

自動寵物喂食器開源硬件

電子發燒友網站提供《自動寵物喂食器開源硬件.zip》資料免費下載
發表于 12-23 17:06 ?3次下載
<b class='flag-5'>自動</b><b class='flag-5'>寵物</b><b class='flag-5'>喂食器</b>開源硬件

Arduino Uno制作智能的自動寵物喂食器

你曾懶得喂你家寵物嗎?我們愛我們的寵物,但有時我們也希望能讓喂寵物這件事變得自動點。今天我們將使用A
的頭像 發表于 02-24 15:12 ?5219次閱讀
用<b class='flag-5'>Arduino</b> Uno制作<b class='flag-5'>一</b><b class='flag-5'>個</b>智能的<b class='flag-5'>自動</b><b class='flag-5'>寵物</b><b class='flag-5'>喂食器</b>

寵物自動喂食器主控芯片DSH3186

寵物在現代人的生活中占有極大的比重,甚至愿意將寵物當做孩子精細地養活。也正因為如此,由寵物而衍生出來的產業鏈涉及方方面面,不但解決了寵物主人的煩惱,也給
的頭像 發表于 11-01 16:26 ?706次閱讀
主站蜘蛛池模板: 免费在线看片网站 | 色综合五月婷婷 | bt天堂电影 | 久操伊人网 | 国产高清区 | 欧美黄色免费网址 | 色欲麻豆国产福利精品 | 免费的黄色片 | 日韩在线视频一区二区三区 | 18美女扒开尿口无遮挡 | 国产1卡2卡三卡四卡网站 | 国内精品91久久久久 | 国产精品视频久久久久久 | 免看一级a一片成人123 | 色偷偷91综合久久噜噜噜男男 | 日韩精品亚洲一级在线观看 | 国产精品久久久久天天影视 | 欧美精品黑人性xxxx | 免费看又爽又黄禁片视频1000 | 萌白酱白丝护士服喷水铁牛tv | 欧美在线高清视频 | 国产伦子系列视频6 | 亚洲欧美日本综合 | 日本欧美午夜 | 一级视频免费观看 | 轻点灬大ji巴太大太深了 | 亚洲狠狠综合久久 | 主人扒开腿揉捏花蒂调教cfh | 青青青青久久精品国产h | 亚洲综人网| 国产三级三级三级 | 深爱激情站 | 国产精品欧美激情在线播放 | 欧美日操 | 波多野结衣的毛片 | 人人干人人舔 | 国产在线黄 | 爽好舒服老师快点 | 男人和女人做a免费视频 | 国产婷婷高清在线观看免费 | 免费人成在线观看网站品爱网 |

電子發燒友

中國電子工程師最喜歡的網站

  • 2931785位工程師會員交流學習
  • 獲取您個性化的科技前沿技術信息
  • 參加活動獲取豐厚的禮品