有个网友提出一个需求“做一个能够显示温度的奶瓶。奶瓶泡好奶后放在底座上,可直接给婴儿喝的绿灯亮,过烫红灯亮,过凉蓝灯亮。”这是他的一个作业,然后我就帮着做了一下。整体思路就是直接使用上一次做的那个红外温度计的方案,我想这样的方案恐怕在网上都是独一无二的吧。
使用到的基本元件有:Arduino Uno + LED + 红外温度传感器(上面有一个激光头用于瞄准)
使用红外温度传感器能够获得下列优点:
1.无需接触,不必考虑卫生的问题
2.准确度在可以接受的范围内
3.速度快,对准之后马上显示
4.兼容性好,各种型号的奶瓶都可以
缺点:
1.贵
2.有人说无法精确得知瓶中奶的温度,测量的是奶瓶温度而已
#include <Arduino.h>
#include <Wire.h>
#include "TN901.h"
TN901 tn;
int RedLed=10; //Red Led Pin10
int GreenLed=7; //Green Led Pin10
int BigRedLed=4; //Big Led Pin4
void setup()
{
Serial.begin(9600);
tn.Init(13,12,11); //初 始 化 data clk ack
pinMode(RedLed,OUTPUT);
digitalWrite(RedLed,LOW);
pinMode(GreenLed,OUTPUT);
digitalWrite(GreenLed,LOW);
pinMode(BigRedLed,OUTPUT);
digitalWrite(BigRedLed,LOW);
}
void loop()
{
tn.Read();
SerialValue();
delay(2000);
}
void SerialValue()
{
String s;
s=">O"+String(tn.OT, DEC)+"E"+String(tn.ET,DEC)+"<";
Serial.println(s);
if (tn.OT>5000) { // Temp too high
digitalWrite(RedLed,HIGH);
digitalWrite(GreenLed,LOW);
digitalWrite(BigRedLed,HIGH);
}
else {
if (tn.OT>2100) {// Temp is OK
digitalWrite(RedLed,LOW);
digitalWrite(GreenLed,HIGH);
digitalWrite(BigRedLed,HIGH);
}
else { //Temp is too Low
digitalWrite(RedLed,HIGH);
digitalWrite(GreenLed,HIGH);
digitalWrite(BigRedLed,LOW);
}
}
}
设计上我们使用了2个LED,一个是小LED双色红色和绿色,一个是单独的大个红色的(手边只有这两种LED,更好的设计应该换个颜色的LED便于区分)。温度传感器是红外温度传感器。
温度区间:
>50 小LED的红色亮起 表示温度过高
50-20 小LED的绿色亮起 表示温度适合
<20 大红色LED亮起 表示温度过低 工作时的视频 首先展示一下电路,然后我们有一瓶大瓶冷水;放在上面的时候温度过低,大红色 LED亮起;然后我们换成奶瓶,其中是热水,温度过高,小红色LED亮起;然后我们将大瓶子的水兑到小瓶子中,温度会变得适中,于是小LED绿色会亮起。
这个方案对于作业来说应该是足够了。就是这样。

