如何用ARDUINO制作一个鸟蛋孵化器

项目背景介绍

经常养宠物的朋友,遇到宠物繁殖很是头疼,特别是鸟类繁殖,更加需要一个恒温恒湿的孵化箱。市面上孵化箱种类繁多,从几十块的到上千块的孵化箱都有,性能参差不齐,有些孵化箱的温度相差3度是常有的事情,有些没有湿度数据,于是决定用自己多年自学的三脚猫功夫做一个孵化箱,把制作过程分享给大家。
孵化箱宽度40CM,用宠物保温箱改造的 作者:rabbie_kent https://www.bilibili.com/read/cv16355536 出处:bilibili

项目开发环境

`
arduino的c语言开发环境,版本1.61


项目硬件设备

名称 型号 数量 用途
单片机 ARDUINO UNO 1 孵化器主要控制芯片
电源 开关电源12V100W 1 给整个孵化箱提供12v供电
照明 LED灯带 1 孵化箱照明用
保温外箱 蜥蜴保温箱40CM 1 保温
发热片 12V50W低压型PTC铝壳250度恒温发热片 2 给孵化箱提供热源
CPU风扇 宽度6厘米厚度1.5厘米 1 恒温箱空气循环用
CPU散热片 散热片 1 把散热片的热量散发到恒温箱空气中
魔术板 EPP发泡板2毫米厚度 若干 制作发热片散热通风管道
电子开关 MOS触发开关12V 2 用于控制散热片和加湿器
加湿器 usb加湿模块 1 控制湿度
温湿度传感器 SHT20 1 温湿度传感器
塑料袋 塑料袋 若干 用于铺于鸟蛋底下,恒温作用
降压模块 12V转5V降压模块 1 用于给usb加湿模块提供5V电源用
液晶显示器 0.96寸OLED显示屏 1 显示温度、湿度、孵化时间和孵化状态

硬件接线图

硬件接线图

代码

tempadmin.cpp

//#include <SHT1x.h>
#include <EEPROM.h>
#include <Servo.h>
#include <Wire.h>
#include "U8glib.h"
#include "TempAdmin.h"
#include "DFRobot_SHT20.h"

//SHT1x sht1x(dataPin, clockPin);
DFRobot_SHT20    sht20;

void inQueue(QUEUE * pQueue,int value)
{
  pQueue->pBase[pQueue->point]=value;
  pQueue->point=++pQueue->point%6;
  //Serial.println(pQueue->point);
}

int traverseQueue(QUEUE * pQueue)
{
  int n=pQueue->point;
  int a=0,b=0,nCount=0;
  do{
    if(nCount<3){
      a+=pQueue->pBase[n];
    }
    else{
      b+=pQueue->pBase[n];
    }
    n=++n%6;
    nCount++;
  }while(n!=pQueue->point);
  return (b-a);
}

void TrunEggs(void)
{
  int nAngle=myservo1.read();
  //Serial.println(nAngle);
 
  • 1
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
首先,你需要准备以下硬件和软件: 硬件: - Arduino UNO开发板 - 16x2字符液晶显示器 - DS3231实时时钟模块 - 杜邦线若干 - 电源线 软件: - Arduino IDE开发环境 接下来,按照以下步骤进行操作: 1. 连接硬件组件 将Arduino UNO开发板、16x2字符液晶显示器和DS3231实时时钟模块进行连接。连接方式如下: - Arduino UNO数字引脚13连接DS3231模块的SCL引脚 - Arduino UNO数字引脚12连接DS3231模块的SDA引脚 - Arduino UNO数字引脚3连接液晶显示器的RS引脚 - Arduino UNO数字引脚2连接液晶显示器的E引脚 - Arduino UNO数字引脚4-7分别连接液晶显示器的D4-D7引脚 2. 编写程序代码 打开Arduino IDE开发环境,并编写以下代码: ``` #include <Wire.h> #include <LiquidCrystal.h> #include "RTClib.h" RTC_DS3231 rtc; LiquidCrystal lcd(3, 2, 4, 5, 6, 7); void setup() { lcd.begin(16, 2); Wire.begin(); rtc.begin(); delay(500); if (! rtc.isrunning()) { lcd.print("RTC is NOT running!"); rtc.adjust(DateTime(F(__DATE__), F(__TIME__))); } lcd.clear(); } void loop() { DateTime now = rtc.now(); lcd.setCursor(0, 0); lcd.print("Time: "); lcd.print(now.hour(), DEC); lcd.print(':'); lcd.print(now.minute(), DEC); lcd.print(':'); lcd.print(now.second(), DEC); lcd.setCursor(0, 1); lcd.print("Date: "); lcd.print(now.day(), DEC); lcd.print('/'); lcd.print(now.month(), DEC); lcd.print('/'); lcd.print(now.year(), DEC); delay(1000); } ``` 3. 上传程序代码到Arduino UNO开发板 将Arduino UNO开发板通过USB接口连接到电脑,并上传程序代码到开发板。 4. 测试 完成代码上传后,将Arduino UNO开发板接通电源。此时液晶显示器将会显示当前的时间和日期。 5. 调整时区 如果需要调整时区,可以通过修改RTC调整时钟的时间来实现。具体操作步骤如下: - 打开Arduino IDE开发环境 - 选择“File” -> “Examples” -> “RTClib” -> “settime” - 修改代码中rtc.adjust()函数的参数,以调整时钟的时间 这样,你就成功制作了一个世界时钟,可以准确显示当前的时间和日期。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值