02.恆溫裝置
#include <OneWire.h>
#include <DallasTemperature.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2);
// Arduino類比接腳A0接到1-Wire裝置
#define ONE_WIRE_BUS A0
// 運用程式庫建立物件
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
float T = 40.00 ; //設定恆溫溫度
void setup(void){
Serial.begin(9600);
Serial.println("Temperature Sensor");
sensors.begin();
lcd.init();
lcd.backlight();
pinMode(4,OUTPUT);
}
void loop(void){
// 要求匯流排上的所有感測器進行溫度轉換
sensors.requestTemperatures();
// 取得溫度讀數(攝氏)並輸出,
// 參數0代表匯流排上第0個1-Wire裝置
float x= sensors.getTempCByIndex(0);
Serial.println(x);
lcd.clear();
lcd.print(x);
lcd.print((char) 0xDF);
lcd.print("C");
if(x>=T){
digitalWrite(4,HIGH);
}else{
digitalWrite(4,LOW);
}
delay(500);
}
第二版,可由可變電阻設定目標溫度....
打開Arduino的前七秒可以設定目標溫度,
可控制加熱器,因此目標溫度為一開始的環境溫度往上調整,
若要重新設定新的目標溫度,就重啟Arduino即可
#include <OneWire.h>
#include <DallasTemperature.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2);
int set_T ;
// Arduino類比接腳A0接到1-Wire裝置
#define ONE_WIRE_BUS A0
// 運用程式庫建立物件
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
float x;
unsigned long t1 ;
void setup(void){
Serial.begin(9600);
Serial.println("Temperature Sensor");
sensors.begin();
lcd.init();
lcd.backlight();
pinMode(8,OUTPUT);
sensors.requestTemperatures();
x= sensors.getTempCByIndex(0);
t1 = millis();
do{
set_T = map(1023-analogRead(A7),0,1023,x,125);
lcd.setCursor(0,0);
lcd.print("Set your target T...");
lcd.setCursor(0,1);
lcd.print("Set = ");
lcd.print(set_T);
lcd.print((char) 0xDF);
lcd.print("C");
delay(100);
}while(millis()-t1< 7000);
}
void loop(void){
// 要求匯流排上的所有感測器進行溫度轉換
sensors.requestTemperatures();
x= sensors.getTempCByIndex(0);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Now = ");
lcd.print(x);
lcd.print((char) 0xDF);
lcd.print("C");
lcd.setCursor(0,1);
lcd.print("Set = ");
lcd.print(set_T);
lcd.print((char) 0xDF);
lcd.print("C");
if(x>=set_T){
digitalWrite(8,HIGH);
}else{
digitalWrite(8,LOW);
}
delay(500);
}