欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 4610|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

使用Arduino制作自動(dòng)寵物喂食機(jī)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:839588 發(fā)表于 2020-11-6 00:09 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式

今天,我們將要制作一個(gè)基于Arduino開發(fā)板的自動(dòng)寵物喂食機(jī),它可以及時(shí)的自動(dòng)為你的寵物提供食物。該項(xiàng)目采用一個(gè)DS3231的RTC(實(shí)時(shí)時(shí)鐘)模塊,用于設(shè)置寵物需要喂食的時(shí)間和日期。因此,根據(jù)您寵物進(jìn)食的時(shí)刻表,設(shè)備會(huì)自動(dòng)放下或填充食物。


在本項(xiàng)目中,我們使用一個(gè)1602的LCD模塊顯示時(shí)間,通過使用連接到Arduino UNO的DS3231 RTC模塊獲得。此外,它還使用一個(gè)伺服電機(jī)旋轉(zhuǎn)容器以提供食物,同時(shí)還提供一個(gè)4 * 4的矩陣鍵盤,用來手動(dòng)設(shè)置喂食寵物的時(shí)間。您可以根據(jù)您想要喂給寵物的食物量來設(shè)置旋轉(zhuǎn)角度和容器開啟時(shí)間。食物量也可能由于你的寵物是小狗、小貓還是鳥兒而略有不同。

所需的材料

●    Arduino UNO開發(fā)板

●    4 * 4的矩陣鍵盤

●    LCD顯示模塊1602

●    一個(gè)按鈕

●    伺服電機(jī)

●    電阻

●    連接導(dǎo)線

●    面包板

電路原理圖

在這款基于Arduino的寵物喂食機(jī)的項(xiàng)目中,為了獲取時(shí)間和日期,我們使用了RTC(實(shí)時(shí)時(shí)鐘)模塊。我們使用4 * 4矩陣鍵盤以及LCD模塊1602手動(dòng)設(shè)置寵物的喂食時(shí)間。伺服電機(jī)旋轉(zhuǎn)容器并按照用戶設(shè)定的時(shí)間放下食物。 LCD用于顯示日期和時(shí)間。

使用3D打印的寵物喂食機(jī)模型

我們使用3D打印機(jī)設(shè)計(jì)了這款A(yù)rduino寵物喂食機(jī)的容器。您也可以通過從這里下載文件來打印相同的設(shè)計(jì)。用于打印此模型的材料是PLA。它包含四個(gè)部分,如下圖所示:

按照下圖所示組裝四個(gè)部件并連接伺服電機(jī):



DS3231 RTC模塊簡(jiǎn)介

DS3231是一個(gè)RTC(實(shí)時(shí)時(shí)鐘)模塊。在大多數(shù)電子項(xiàng)目中,它用于保持日期和時(shí)間。該模塊自帶了紐扣電池,即使主電源被移除或MCU硬件復(fù)位,也可使用該紐扣電池來保持日期和時(shí)間。所以一旦我們?cè)谶@個(gè)模塊中設(shè)置了日期和時(shí)間,它會(huì)一直保持下去。在我們的電路中,我們使用DS3231根據(jù)寵物主人設(shè)置的時(shí)間來喂寵物,就像鬧鈴一樣。當(dāng)時(shí)鐘達(dá)到設(shè)定的時(shí)間時(shí),它操作伺服電機(jī)打開容器門,食物落入寵物食物碗中。


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


代碼和說明

自動(dòng)寵物喂食機(jī)的完整的Arduino代碼在本章的末尾給出。

Arduino有使用伺服電機(jī)和LCD模塊1602的默認(rèn)的庫(kù)文件。但是對(duì)于Arduino使用RTC模塊DS3231 和4 * 4矩陣鍵盤,您必須下載并安裝這些庫(kù)。這兩個(gè)庫(kù)的下載鏈接如下:

●    DS3231 RTC(實(shí)時(shí)時(shí)鐘)模塊庫(kù)

●    4 * 4矩陣鍵盤庫(kù)


在下面的代碼中,我們定義了庫(kù),“#include <DS3231.h>”用于RTC模塊,“#include <Servo.h>”用于伺服電機(jī),“#include <LiquidCrystal.h>”用于16 * 2 LCD ,以及“#include <Keypad.h>”用于4 * 4矩陣鍵盤。

  • #include <DS3231.h>
  • #include <Servo.h>
  • #include <LiquidCrystal.h>
  • #include <Keypad.h>

[color=rgb(51, 102, 153) !important]復(fù)制代碼


在下面的代碼中,我們定義了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 };

[color=rgb(51, 102, 153) !important]復(fù)制代碼

在這里,我們通過在代碼中使用下面的命令來創(chuàng)建鍵盤。

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

[color=rgb(51, 102, 153) !important]復(fù)制代碼


我們分配Arduino開發(fā)板的A4和A5連接DS3231的SCL和SDA引腳。另外,將引腳分配給LCD并初始化伺服電機(jī)。

  • 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)

[color=rgb(51, 102, 153) !important]復(fù)制代碼


在下面的代碼中,我們聲明了t1到t6、key和數(shù)組r[6]以及feed。

  • int t1, t2, t3, t4, t5, t6;
  • boolean feed = true;
  • char key;
  • int r[6];

[color=rgb(51, 102, 153) !important]復(fù)制代碼


在下面的代碼中,我們?cè)O(shè)置了所有組件用于初始化操作。比如,在代碼“servo_test.attach(10);”中,將伺服電機(jī)連接到Arduino的第10個(gè)引腳。將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);
  • }

[color=rgb(51, 102, 153) !important]復(fù)制代碼


現(xiàn)在,理解的重要部分是loop函數(shù)是如何工作的。無論何時(shí)按下按鈕,它都會(huì)變?yōu)楦愣ㄆ剑簿褪?,可以通過“buttonPress = digitalRead(A3)”的方式來讀取。現(xiàn)在它進(jìn)入'if'語句并調(diào)用'setFeedingTime'函數(shù)。然后比較實(shí)時(shí)時(shí)間和用戶輸入的時(shí)間。如果條件為真,即實(shí)時(shí)時(shí)間和輸入時(shí)間相同,則伺服電機(jī)旋轉(zhuǎn)至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;
  • }
  • }

[color=rgb(51, 102, 153) !important]復(fù)制代碼


void setFeedingTime()函數(shù)代碼中,按下按鈕后,我們可以輸入寵物的喂食時(shí)間,然后我們必須按'D'來保存時(shí)間。當(dāng)保存的時(shí)間與實(shí)時(shí)時(shí)間匹配時(shí),伺服開始旋轉(zhuǎn)。

  • 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 = key-48;
  •     i++;
  •     j++;
  •     if (j==2)
  •     {
  •       lcd.print(":"); j++;
  •     }
  •     delay(500);
  •   }
  •   if (key == 'D')
  •   {key=0; break; }
  •   }
  • }

[color=rgb(51, 102, 153) !important]復(fù)制代碼


自動(dòng)寵物喂食器的工作過程


將代碼上傳到Arduino Uno開發(fā)板后,LCD模塊將會(huì)顯示相應(yīng)的時(shí)間和日期。當(dāng)您按下按鈕時(shí),它會(huì)詢問寵物的喂食時(shí)間,您必須使用4 * 4矩陣鍵盤輸入時(shí)間。顯示屏將顯示輸入的時(shí)間,按'D'鍵可以保存該時(shí)間。當(dāng)實(shí)時(shí)時(shí)間和輸入時(shí)間一致時(shí),伺服電機(jī)從初始位置55⁰旋轉(zhuǎn)到100⁰,并在延遲后再次返回到初始位置。由于伺服馬達(dá)連接到了食品容器門,因此當(dāng)它移動(dòng)時(shí),門打開并且一些食物落入碗或盤中。延時(shí)0.4秒后,伺服電機(jī)再次旋轉(zhuǎn),并關(guān)閉閘門。整個(gè)過程在幾秒鐘內(nèi)完成。這就是您的寵物如何在您輸入的時(shí)間點(diǎn)自動(dòng)獲取食物的方式。


您根據(jù)食物量來改變時(shí)間和旋轉(zhuǎn)角度。如果您在制作類似項(xiàng)目時(shí)遇到問題,歡迎在此貼下進(jìn)行回復(fù)



分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏3 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

無效樓層,該帖已經(jīng)被刪除

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表