02.恆溫裝置

「ds18b20」的圖片搜尋結果

#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);