电子说
步骤1:需要的硬件
DS18B20温度传感器
重力:带有RGB背光显示的I2C 16x2 Arduino LCD
DFRduino UNO R3(类似于Arduino UNO)
重力:Arduino V7.1的IO扩展屏蔽
步骤2:零件图
步骤3:电路连接图
步骤4:操作结果
当室温低于25°C时,屏幕显示绿色。这个温度是否适合人们?
当室温超过25°C且低于30°C时,屏幕显示黄色。颜色表明温度升高,现在可以使用风扇。
当室温超过30°C时,屏幕显示红色。风扇对于如此炎热的变暖没有任何意义,只有空气条件才能帮助你在夏天生存。我用3D打印机做了一个外壳,以保护和美化内部零件。
步骤5:3D装配图
第6步:3D草图设计
第7步:装配图像
如果你对此项目感兴趣,您可以在最后一页下载3D打印文件。你也可以设计自己的私人外壳。关于编程,你也可以添加时间显示功能。所以它可以是温度计和时钟的组合。您的想法将不胜感激。
第8步:代码
#include
#include
#include “DFRobot_RGBLCD.h”
int DS18S20_Pin = 2; //DS18S20 Signal pin on digital 2
DFRobot_RGBLCD lcd(16,2); //16 characters and 2 lines of show
//Temperature chip i/o
OneWire ds(DS18S20_Pin); // on digital pin 2
void setup(void)
{
Serial.begin(9600);
lcd.init();
lcd.setRGB(0, 255, 0);
lcd.setCursor(1, 0 );
lcd.print(“Tep: ”);
}
void loop(void)
{
float temperature = getTemp();
delay(1000);
lcd.setCursor(5,0);
lcd.print(temperature);
if(temperature《25)
{
lcd.setRGB(0, 255, 0);
}
else if (temperature《30)
{
lcd.setRGB(255, 215, 0);
}
else
{
lcd.setRGB(255, 0, 0);
}
lcd.setCursor(10, 0 );
lcd.write(0xdf); //display°
lcd.print(‘C’);
delay(100);
delay(100); //just here to slow down the output so it is easier to read
}
float getTemp()
{
//returns the temperature from one DS18S20 in DEG Celsius
byte data[12];
byte addr[8];
if ( !ds.search(addr)) {
//no more sensors on chain, reset search
ds.reset_search();
return -1000;
}
ds.reset();
ds.select(addr);
ds.write(0x44,1); // start conversion, with parasite power on at the end
byte present = ds.reset();
ds.select(addr);
ds.write(0xBE); // Read Scratchpad
for (int i = 0; i 《 9; i++) { // we need 9 bytes
data[i] = ds.read();
}
ds.reset_search();
byte MSB = data[1];
byte LSB = data[0];
float tempRead = ((MSB 《《 8) | LSB); //using two‘s compliment
float TemperatureSum = tempRead / 16;
return TemperatureSum;
}
全部0条评论
快来发表一下你的评论吧 !