kodlarım düzgün çalışmıyo
02.09.2018 - 03:53
Bi proje yapmaya çalışmaya çalışıyom ama kodlar çalışması gerektiği gibi çalışmıyolar. Yardım eder misiniz?
Önce projeyi anlatayım:
bi kuluçka makinası. sıcaklığın 37-38 derece arasında olması lazım
ama sorun şu (sensör olarak dht11 var) sıcaklık yükselince röle kartına bağlı olan ısıtıcı lambayı kapatmıyo. tahminimce if kodunun koşulundaki dht11den aldığımız sıcaklık bilgisini öğrendiğimiz kod [(float)DHT11_sensor.temperature, 2] if koduyla uyumlu değil gibi yani demek isyediğim if kodunda şu var:
if ((float)DHT11_sensor.temperature, 2<=37)
sanırım burdaki 37 ile onun okuduğu kod uyuşmuyo. yani arada virgül mü olmalı? 0.37 gibi bi değer mi yazmalıyım?
Kodlar:
#include <dht11.h>
int DHT11_pin = 9;
dht11 DHT11_sensor;
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 8, 7, 6, 5);
void setup()
{
int lamba = 6;
int led = 13;
int buzzer = 7;
byte o[8] =
{
0b01010,
0b00000,
0b01110,
0b10001,
0b10001,
0b10001,
0b01110,
0b00000
};
byte i[8] =
{
0b00000,
0b00000,
0b00100,
0b00100,
0b00100,
0b00100,
0b00100,
0b00000
};
byte c[8] =
{
0b01111,
0b10000,
0b10000,
0b10000,
0b10000,
0b01111,
0b00000,
0b00110
};
byte derece[8] =
{
0b00110,
0b01001,
0b01001,
0b00110,
0b00000,
0b00000,
0b00000,
0b00000
};
byte yuzde[8] = {
0b00000,
0b00000,
0b10001,
0b00010,
0b00100,
0b01000,
0b10001,
0b00000
};
byte civciv[8] =
{
0b00000,
0b0100,
0b01110,
0b11101,
0b11011,
0b10111,
0b01110,
0b00000
};
pinMode(lamba, OUTPUT);
pinMode(led, OUTPUT);
pinMode(buzzer, OUTPUT);
lcd.begin(16, 2);
lcd.clear();
lcd.blink();
lcd.home();
lcd.print("CivCivMaker 4.0");
lcd.noBlink();
delay(2000);
lcd.blink();
lcd.setCursor(6, 1);
lcd.print("SMG");
lcd.noBlink();
lcd.setCursor(12, 1);
lcd.write(6);
delay(3000);
digitalWrite(led, HIGH);
digitalWrite(buzzer, HIGH);
digitalWrite(lamba, LOW);
delay(1500);
digitalWrite(led, LOW);
digitalWrite(buzzer, LOW);
digitalWrite(lamba, HIGH);
delay(1000);
lcd.createChar(1, o);
lcd.createChar(2, i);
lcd.createChar(3, c);
lcd.createChar(4, derece);
lcd.createChar(5, yuzde);
lcd.createChar(6, civciv);
}
void loop()
{
int chk = DHT11_sensor.read(DHT11_pin);
if (((float)DHT11_sensor.temperature, 2) >= 39) {// else'den bu if koduna geçiş yapmıyo
int chk = DHT11_sensor.read(DHT11_pin);
digitalWrite(6, HIGH);// röle kartı ters çalıştığı için hıgh olunca lamba kapanıyo
lcd.clear();///////////////////////////////
lcd.setCursor(4,0);///////////////////////
lcd.print("S cakl k:");
lcd.setCursor(5, 0);
lcd.write(2);
lcd.setCursor(10, 0);
lcd.write(2);/// lcd kodlarında sorun yok
lcd.setCursor(10, 1);
lcd.write(4);
lcd.setCursor(11, 1);
lcd.write("C");
lcd.setCursor(5, 1);////////////////////////
lcd.print(((float)DHT11_sensor.temperature, 2));
delay(3000);
lcd.clear();
lcd.setCursor(6,0);
lcd.print("Nem:");
lcd.setCursor(5, 1);
lcd.write(5);
lcd.setCursor(6, 1);
lcd.print((float)DHT11_sensor.humidity, 2);
delay(3000);
}
else {
int chk = DHT11_sensor.read(DHT11_pin);
digitalWrite(6, LOW);///// ısıtıcı lamba açık
lcd.clear();
lcd.setCursor(4,0);
lcd.print("S cakl k:");
lcd.setCursor(5, 0);
lcd.write(2);
lcd.setCursor(10, 0);
lcd.write(2);
lcd.setCursor(5, 1);
lcd.print(((float)DHT11_sensor.temperature, 2));
lcd.setCursor(10, 1);
lcd.write(4);
lcd.setCursor(11, 1);
lcd.write("C");
delay(3000);
lcd.clear();
lcd.setCursor(6,0);
lcd.print("Nem:");
lcd.setCursor(5, 1);
lcd.write(5);
lcd.setCursor(6, 1);
lcd.print((float)DHT11_sensor.humidity, 2);
delay(3000);
}
}
37
Görüntülenme
0 Beğeni