這是本人在大一的時候做的第一個小東西。也是當時大一寫的第一篇博客。近日重溫舊時光,來此修改。

它的用途:很多时候需要喝温水,然而刚接出来的开水往往很烫,不适合饮用。所以我们会选择把它晾在一边,忙别的事,忙着忙着就把水忘了,等到喝水的时候,它已经不是我们想要的温度了。这个水温监控器就是用来防止这样的现象,用户可以自己来设定温度,当水温比这个温度低的时候,它的蜂鸣器就会响,也就是提醒用户喝水。

它主要由四部分组成:

arduino uno不必赘述。

lcd1602液晶屏也很好在arduino上操作,具体可以参考arduino
官方例程。
LCD硬件电路如图:

值得说明的是,电位计是非常重要的,我一开始使用定值电阻,背光率難以调节到合適情況。

重点就在于如何实现温度传感器测温,这里我选择的是DS18B20,达拉斯公司推出的单总线温度传感器,易于操作而且经典。
它的硬件电路很简单:

写程序伊始,我参考的是一本讲arduino的教程,上面用到了两个头文件,分别是OneWire.h和DallasTemperature.h,结果就是,最初的尝试都没有成功。

在编译的时候,DallasTemperature.c会導致報错,百度后,把Wprogram.h改成arduino.h或者在其下面加一段关于arduino.h的代码,编译不再出错,但是测温会显示一个神奇的数字,127度。这说明DS18B20根本没有测温。

由於教程中使用老版本IDE,懷疑换一个旧版本会不会好,于是去下载了0022版本,结果仍是失望。

最後打开例程中Onewire的文件夹,发现了一个例程,DS18x20_Temperature。它是用来串口显示温度的,拿它来试了一下,在串口监视器成功地顯示温度。

然而在proteus里,仿真的结果仍是127度,所以抱着试一试的想法,在面包板上试了一下,直接在LCD显示出了实时温度。可见,proteus其实还有待改进,且Arduino的老教程也沒有太大看的意義。

以下是目前为止的原理图:

關於仿真,arduino在proteus里有专门的库,且CSDN上就有資源。

克服傳感器后,只剩下蜂鸣器和按键控制。原理图如图:

需要注意的就是按键控制时,电路用了硬件消抖,程序里就不要再有软件消抖了,我过去试过这样做,按键会不起作用的。

至此,这个智能水温监控器就基本做完了,以下是代码:

#include <LiquidCrystal.h>
#include <OneWire.h>
LiquidCrystal lcd(12,11,5,4,3,2);
OneWire  ds(10);  // on pin 10
int beep = 9;
int add = 7;
int minus = 6;
float controline = 25;
void setup() {// put your setup code here, to run once:Serial.begin(9600);lcd.begin(16,2);lcd.print("Hello world");  pinMode(beep, OUTPUT);pinMode(add,INPUT);pinMode(minus,INPUT);
}void loop() {byte i;byte present = 0;byte type_s;byte data[12];byte addr[8];float celsius, fahrenheit;if ( !ds.search(addr)) {ds.reset_search();delay(250);return;}for( i = 0; i < 8; i++) {Serial.write(' ');Serial.print(addr[i], HEX);}if (OneWire::crc8(addr, 7) != addr[7]) {return;}ds.reset();ds.select(addr);ds.write(0x44,1);         // start conversion, with parasite power on at the enddelay(1000);     // maybe 750ms is enough, maybe not// we might do a ds.depower() here, but the reset will take care of it.present = ds.reset();ds.select(addr);    ds.write(0xBE);         // Read Scratchpadfor ( i = 0; i < 9; i++) {           // we need 9 bytesdata[i] = ds.read();}// convert the data to actual temperatureunsigned int raw = (data[1] << 8) | data[0];if (type_s) {raw = raw << 3; // 9 bit resolution defaultif (data[7] == 0x10) {// count remain gives full 12 bit resolutionraw = (raw & 0xFFF0) + 12 - data[6];}} else {byte cfg = (data[4] & 0x60);if (cfg == 0x00) raw = raw << 3;  // 9 bit resolution, 93.75 mselse if (cfg == 0x20) raw = raw << 2; // 10 bit res, 187.5 mselse if (cfg == 0x40) raw = raw << 1; // 11 bit res, 375 ms// default is 12 bit resolution, 750 ms conversion time}celsius = (float)raw / 16.0;if(digitalRead(add) == HIGH) controline += 1;if(digitalRead(minus)==HIGH) controline -= 1;if(celsius < controline) digitalWrite(beep,LOW);else digitalWrite(beep,HIGH);lcd.setCursor(0,0);lcd.print("Temp = ");lcd.print(celsius);lcd.print(" C");lcd.setCursor(0,1);lcd.print("Setting: ");lcd.print(controline);
}

原理圖如下。(画的有些难看)

基于arduino的智能水温监控器相关推荐

  1. 基于Arduino的智能洗手机

    目录 引言 1 ATMEGA328P 芯片简介 1.1 理论介绍 1.2 芯片引脚定义图 1.3 最小系统制作原理图 2 框架及组成结构 2.1 系统框架 2.2 主要模块介绍 2.2.1 HC-SR ...

  2. 基于Arduino的智能家居系统设计

    基于Arduino的智能家居系统设计 一.设计要求 1.利用DHT11温湿度检测模块和光敏电阻采集环境温度.湿度和光强信息: 2.通过Arduino开发板对DS1302时钟模块进行初始设置,并每隔一定 ...

  3. arduino灯光装置_基于Arduino的智能家居灯控系统设计

    &能应用 ------ T X 阵 W S 2 8 1 2 全 彩 灯 带 R X 工 G N D r 0 引言 智能家居的概念虽然已经有了几十年,但进入我国并取 得一定发展还是最近几年的事, ...

  4. 【毕业设计】基于Arduino的智能灌溉系统 - 嵌入式 单片机 物联网

    文章目录 1 简介 1 硬件要求 2 项目背景 3 实现功能 4 OLDE显示屏 5 IO扩展器 6 系统构建 7 完整代码 8 最后 1 简介 Hi,大家好,这里是丹成学长,今天向大家介绍一个 单片 ...

  5. 基于Arduino的智能晾衣架

    前段时间,由于个人原因没有及时更新,今天准备写一个基于Arduino的智能晾衣架. 摘要: 智能晾衣架是应用物联网工程技术,通过网络和物品的连接得以控制晾衣架的状态.智能晾衣架通过多个传感器来对外界环 ...

  6. 基于arduino单片机智能避障小车

    基于arduino单片机智能避障小车 思路简介 本文简要介绍了基于arduino单片机智能小车可以通过手机端蓝牙助手对其进行遥控操作'可以切换手动操作和自动避障两个模式,避障基于蝙蝠超声波测距的原理, ...

  7. 红外测温枪,超进化 -- 智能温度传感器 基于 arduino 的智能测温模块

    红外测温枪,超进化!--智能温度传感器!基于 arduino 的智能测温模块. 前言 硬件选择 代码讲解 通过 SDDC 协议接入 Spirit 1 部分 配置设备信息 数据获取与发送流程 融合!特殊 ...

  8. 基于Arduino的智能家居语音识别系统设计

    基于Arduino的智能家居语音识别系统设计 前言:       随着这两年深入中国本土企业,在移动智能终端市场疯狂抢食,英特尔早已"摸清"了中国厂商和市场的情况.现在顺势推出智能 ...

  9. 基于Arduino之智能小夜灯项目

    基于Arduino之智能小夜灯项目 目录 基于Arduino之智能小夜灯项目 前言 一.功能介绍 二.实物图 三.设置代码 总结 前言 此小灯是我第一次使用Arduino进行操作的实验,它包含了小夜灯 ...

最新文章

  1. CRUD之delete操作
  2. CCNA-(9)-思科交换机特点
  3. Unity消息简易框架 Advanced C# messenger
  4. 用C语言实现分治方法数组的排序,C语言实现分治法实例
  5. Linux系统编程15:进程控制之如何创建进程和写时拷贝技术
  6. linux系统资格认证,Linux资格认证:Linux操作系统的运行级别
  7. 【自动化测试】在做自动化测试之前你需要知道的
  8. logstash收集nginx日志
  9. 16. go get
  10. Ubuntu/Linux下7款轻量级编辑器推荐
  11. NfcA/NfcB/NfcF/NfcV/IsoDep/Ndef/Mifare/Felica/Pboc/ISOxxxx 都是些什么鸟玩意?
  12. 一步步学习java后台(一)(IDEA, Spring, Maven, MyBatis)
  13. 【计算理论】计算复杂性 ( NP 完全问题 | NP 难 问题 P = NP 的情况 | NP 难 问题 P ≠ NP 的情况 )
  14. 将MATLAB中不显示个别图例,隐藏图中某些图形对象的MATLAB图例条目
  15. Pascal 转 C++ 教程2
  16. MacOS 10.15 Catalina:13个问题和修复
  17. BugKu--------你必须让他停下
  18. 计算机图形学--中点椭圆算法原理及代码实现
  19. win7 64位连接oracle11g,win7 64位系统下使用32位PLSQL连接64位Oracle 11g
  20. 什么是低代码开发,为何大企业都选择低代码来做数字化?

热门文章

  1. QT UTC(T和Z格式)时间转换为北京时间
  2. 撩妹代码html,火热的程序员表白方式,调皮弹窗表白代码,赶紧拿去试试吧
  3. 30岁转行新媒体运营晚不晚?当然不
  4. Python练习篇25-re模块利用正则匹配提取网页邮箱并保存
  5. webpack打包生成的map文件_webpack-sourcemap映射关系
  6. 第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-935 互质数个数
  7. 【unity】关于枪口瞄准的趣事
  8. 微信小程序设置背景图铺满顶部
  9. 《流浪地球2》数字生命与我们的距离
  10. react 进阶必学 hook (一):useState 来一碗大碗宽面