步驟1:需要的硬件
DS18B20溫度傳感器
重力:帶有RGB背光顯示的I2C 16x2 Arduino LCD
DFRduino UNO R3(類似于Arduino UNO)
重力:Arduino V7.1的IO擴展屏蔽
步驟2:零件圖
步驟3:電路連接圖
步驟4:操作結(jié)果
當室溫低于25°C時,屏幕顯示綠色。這個溫度是否適合人們?
當室溫超過25°C且低于30°C時,屏幕顯示黃色。顏色表明溫度升高,現(xiàn)在可以使用風(fēng)扇。
當室溫超過30°C時,屏幕顯示紅色。風(fēng)扇對于如此炎熱的變暖沒有任何意義,只有空氣條件才能幫助你在夏天生存。我用3D打印機做了一個外殼,以保護和美化內(nèi)部零件。
步驟5:3D裝配圖
第6步:3D草圖設(shè)計
第7步:裝配圖像
如果你對此項目感興趣,您可以在最后一頁下載3D打印文件。你也可以設(shè)計自己的私人外殼。關(guān)于編程,你也可以添加時間顯示功能。所以它可以是溫度計和時鐘的組合。您的想法將不勝感激。
第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;
}
-
DS18B20
+關(guān)注
關(guān)注
10文章
778瀏覽量
80645 -
溫度計
+關(guān)注
關(guān)注
6文章
404瀏覽量
78400
發(fā)布評論請先 登錄
相關(guān)推薦
評論