冰楓論壇

 找回密碼
 立即註冊
ads_sugarbook
搜索
查看: 475|回覆: 0
打印 上一主題 下一主題

[討論] Atmel ATmega8A-PU 製作自動化養雞

[複製鏈接]

2609

主題

0

好友

948

積分

高級會員

Rank: 4

UID
373967
帖子
7552
主題
2609
精華
0
積分
948
楓幣
1733
威望
927
存款
26000
贊助金額
0
推廣
0
GP
1205
閱讀權限
50
在線時間
411 小時
註冊時間
2023-1-12
最後登入
2024-5-18

2023端午節紀念勳章 2023中秋節紀念勳章 2023聖誕節紀念勳章

跳轉到指定樓層
1
發表於 2023-4-8 08:09:07 |只看該作者 |倒序瀏覽
以下是一些可能需要的零件:

硬體:

ATmega8A-PU 微控制器
溫度感測器(例如 DS18B20)
水位感測器
液位感測器
直流電源
直流馬達
馬達驅動器
伺服馬達
伺服馬達驅動器
繼電器
顯示屏
按鈕
LED
軟體

Arduino IDE
相關的庫(例如 OneWire 庫、DallasTemperature 庫、LiquidCrystal 庫等)
控制自動化養雞系統:


#include <OneWire.h>
#include <DallasTemperature.h>
#include <LiquidCrystal.h>

// 溫度感測器設置
OneWire oneWire(8);
DallasTemperature sensors(&oneWire);
#define TEMPERATURE_SENSOR_INDEX 0
#define MIN_TEMP 20 // 最低溫度
#define MAX_TEMP 30 // 最高溫度

// 水位感測器設置
#define WATER_LEVEL_SENSOR_PIN A0
#define MIN_WATER_LEVEL 100 // 最低水位
#define MAX_WATER_LEVEL 900 // 最高水位

// 液位感測器設置
#define LIQUID_LEVEL_SENSOR_PIN A1
#define MIN_LIQUID_LEVEL 100 // 最低液位
#define MAX_LIQUID_LEVEL 900 // 最高液位

// 馬達控制設置
#define MOTOR_PIN 9
#define MOTOR_SPEED 200

// 伺服馬達控制設置
#include <Servo.h>
Servo feeder;
#define FEEDER_PIN 10
#define FEEDER_OPEN_ANGLE 0
#define FEEDER_CLOSE_ANGLE 90

// 繼電器控制設置
#define RELAY_PIN 7

// 顯示屏設置
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

void setup() {
  // 初始化感測器、馬達、伺服馬達、繼電器和顯示屏
  sensors.begin();
  pinMode(WATER_LEVEL_SENSOR_PIN, INPUT);
  pinMode(LIQUID_LEVEL_SENSOR_PIN, INPUT);
  pinMode(MOTOR_PIN, OUTPUT);
  feeder.attach(FEEDER_PIN);
  pinMode(RELAY_PIN, OUTPUT);
  lcd.begin(16, 2);
  
  // 顯示歡迎信息
  lcd.setCursor(0, 0);
  lcd.print("Chicken Automation");
  lcd.setCursor(0, 1);
  lcd.print("System");
  delay(3000);
}

void loop() {
  // 讀取溫度感測器
  sensors.requestTemperatures();
  float temp = sensors.getTempCByIndex(TEMPERATURE_SENSOR_INDEX);

  // 檢查溫度是否在範圍
if (temp < MIN_TEMP) {
// 溫度太低,開啟繼電器,開啟加熱器
digitalWrite(RELAY_PIN, HIGH);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Heater is ON");
} else if (temp > MAX_TEMP) {
// 溫度太高,關閉繼電器,關閉加熱器
digitalWrite(RELAY_PIN, LOW);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Heater is OFF");
} else {
// 溫度正常
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Temperature:");
lcd.setCursor(0, 1);
lcd.print(temp);
}

// 讀取水位感測器和液位感測器
int waterLevel = analogRead(WATER_LEVEL_SENSOR_PIN);
int liquidLevel = analogRead(LIQUID_LEVEL_SENSOR_PIN);

// 檢查水位是否在範圍
if (waterLevel < MIN_WATER_LEVEL || waterLevel > MAX_WATER_LEVEL) {
// 水位太低或太高,啟動水泵
digitalWrite(MOTOR_PIN, HIGH);
lcd.setCursor(0, 0);
lcd.print("Water Pump is ON");
} else {
// 水位正常
digitalWrite(MOTOR_PIN, LOW);
lcd.setCursor(0, 0);
lcd.print("Water Pump is OFF");
}

// 檢查液位是否在範圍
if (liquidLevel < MIN_LIQUID_LEVEL || liquidLevel > MAX_LIQUID_LEVEL) {
// 液位太低或太高,開啟伺服馬達,開始餵食
feeder.write(FEEDER_OPEN_ANGLE);
lcd.setCursor(0, 1);
lcd.print("Feeding...");
delay(2000);
feeder.write(FEEDER_CLOSE_ANGLE);
}

delay(1000);
}
收藏收藏0 推0 噓0


把本文推薦給朋友或其他網站上,每次被點擊增加您在本站積分: 1骰子
複製連結並發給好友,以賺取推廣點數
簡單兩步驟,註冊、分享網址,即可獲得獎勵! 一起推廣文章換商品、賺$$
高級模式
B Color Image Link Quote Code Smilies |上傳

廣告刊登意見回饋關於我們管群招募本站規範DMCA隱私權政策

Copyright © 2011-2024 冰楓論壇, All rights reserved

免責聲明:本網站是以即時上載留言的方式運作,本站對所有留言的真實性、完整性及立場等,不負任何法律責任。

而一切留言之言論只代表留言者個人意見,並非本網站之立場,用戶不應信賴內容,並應自行判斷內容之真實性。

小黑屋|手機版|冰楓論壇

GMT+8, 2024-5-18 07:55

回頂部