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

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取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)”來讀取。現在它進入“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

    瀏覽量

    23867
  • Arduino
    +關注

    關注

    188

    文章

    6477

    瀏覽量

    187826
  • 喂食器
    +關注

    關注

    1

    文章

    24

    瀏覽量

    3155
收藏 人收藏

    評論

    相關推薦

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

    對于寵物定時自動喂食器感興趣的小伙伴看過來了,電路原理圖、程序、元器件資料都給你準備好了,現在就動動你的小手,用手中的單片機板子給自己的寵物設計
    發表于 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 ?5610次閱讀
    制作<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 ?3501次閱讀
    基于物聯網的<b class='flag-5'>寵物</b><b class='flag-5'>喂食器</b>

    設計寵物NFC定時喂食器

    我設計并制造了這款自動喂食器,以幫助我的糖尿病貓控制他的喂食并防止我的另只貓吃他的食物。該喂食器可能對需要監控
    的頭像 發表于 08-06 16:15 ?2614次閱讀
    設計<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 ?4751次閱讀
    用<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 ?443次閱讀
    主站蜘蛛池模板: 在线亚洲欧美性天天影院 | 天天精品 | 91麻豆麻豆 | 国产一级特黄高清免费大片 | 亚洲国产精品久久婷婷 | 视色4se在线视频播放 | 色综合天天综合网国产成人 | 亚洲1234区乱码 | 精品一区二区影院在线 | 国产精品天天看 | 欧美福利二区 | 99热手机在线观看 | 国产在线理论片免费播放 | 免费人成网站在线高清 | 色多多污网站在线观看 | 婷婷免费高清视频在线观看 | 久久午夜免费视频 | 韩彩英三级无删版甜性涩爱 | 成人国产一区二区三区 | 老师叫我下面含着精子去上课 | 久久视频精品线视频在线网站 | 天天操夜夜操夜夜操 | 手机在线观看你懂的 | 一本在线免费视频 | 我想看一级播放片一级的 | 热99精品视频| 久久久综合久久 | 国产伦子一区二区三区 | 天天操狠狠干 | 午夜毛片不卡高清免费 | 亚洲丁香网 | 久久久久久噜噜噜久久久精品 | 男人扒开美女尿口无遮挡图片 | 亚洲夂夂婷婷色拍ww47 | 国内精品久久久久影 | 特黄特色网站 | 黄网站免费视频 | 在线视频精品免费 | 天天摸天天干天天操 | 亚洲黄色录像 | 久久综合视频网 |