Alışveriş sepetiniz boş!
// www.hobidevre.com
// Elektronik Ürün Deponuz
#include <LiquidCrystal.h>
#include <OneWire.h> // OneWire kütüphanesini ekliyoruz. https://www.arduinolibraries.info/libraries/one-wire adresinden indirebilirsiniz.
#include <EEPROM.h>
int addr = 0;
// Initialize the library with the numbers of the interface pins
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
// Sıcaklık sensörünü bağladığımız dijital pini 2 olarak belirliyoruz.
int DS18S20_Pin = 6;
// Sıcaklık Sensörü Giriş-Çıkışı
OneWire ds(DS18S20_Pin); // 6. Dijital pinde.
#define led1 7 // Ledimizi 7 nolu pine baglıyoruz
int SET;
int buton1 = 8;
int buton2 = 9;
int buton3 = 10;
void setup(void) {
lcd.begin(16,2);
pinMode(led1,OUTPUT);
pinMode(buton1,INPUT);
pinMode(buton2,INPUT);
pinMode(buton3,INPUT);
SET = EEPROM.read(0);// enerji verildiğinde set edilen ısı değeri epromdan okunuyor
}
void loop(void) {
// temperature değişkenini sıcaklık değerini alma fonksiyonuna bağlıyoruz.
float temperature = getTemp();
// Sensörden gelen sıcaklık değerini Serial monitörde yazdırıyoruz.
//lcd.clear();
lcd.setCursor(0,0);
lcd.print("SET:");lcd.print(SET);lcd.print(" C");
lcd.setCursor(0,1);
lcd.print("Sicaklik:");
lcd.print(temperature);lcd.print(" C");
if(temperature>=SET){
digitalWrite(led1,HIGH);
}
else{
digitalWrite(led1,LOW);
}
// Burası SET değerini değiştirme
if(digitalRead(buton1)==HIGH)
{
delay(100);
SET++;
delay(50);
}
else if(digitalRead(buton2)==HIGH)
{
delay(100);
SET--;
delay(150);
}
EEPROM.write(0, SET); // burada set değerini eproma kaydediyoruz
// SET değer değiştirme buraya kadar
//delay(100);
// 1 saniye bekliyoruz. Monitörde saniyede 1 sıcaklık değeri yazmaya devam edecek.
}
// Aşağıdaki fonksiyon DS18B20 sıcaklık sensörümüzden gelen verileri
// Celcius cinsinden sıcaklık değerlerine çevirmek için kullanılıyor.
// Herhangi bir değişiklik yapmamız gerekmiyor.
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;
}
if ( OneWire::crc8( addr, 7) != addr[7]) {
lcd.setCursor(0,1);
lcd.print("CRC is not valid!");
return -1000;
}
if ( addr[0] != 0x10 && addr[0] != 0x28) {
lcd.setCursor(0,1);
lcd.print("Device is not recognized");
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;
}