kodda biraz sadeleştirme yaparsanız daha kararlı çalıştırırsınız misal y için -2 degerini atayıp sonra onu kullanmak yerine mevcut ısı ile işlem yapmanız şöyle ki okunan degeri
sicaklik;
istenen_isi;
unsigned int8 x;
if( (istenilen_isi-2)>=sicaklik)
{
kontrol etmek istedin kodlar
}
if ile ayarladın sıcaklık 2 çıkartıp ölçülen sıcaklık büyük yada eşit ise fonksiyona girer hem sınama yapıp hemde fazla degişken kullanmadan sade kod olur
Hocam cevap verdiğiniz için teşekkür ederim. Ben bu şekilde yazdım zaten ama bu şekilde olunca sıcaklık istenen sıcaklığa gelmeden kapanıyor. Benim istediğim;
Mesela LM35'in değeri 35.
İstenen 40
C0 pini Lojik 1 olacak (Bunu rezistansı çalıştıracak röle gibi düşünebiliriz.)
LM35 40'a ulaştığında C0 pini Lojik 0 olacak
LM 35 istenen derecenin 2 derece altına düştüğünde tekrar C0 lojik 1 olacak.
Umarım doğru anlatabilmişimdir. Diğer türlü yazdığım zaman da 40'a gelince duruyor ama 38 yerine 39'da tekrar devreye giriyor.
if( sıcaklik <= (istenilen -2) )
Cevap yazdığınız için teşekkür ederim. Ancak bu şekilde tam olarak istediğim gibi çalışmıyor.
Mesela sıcaklık değeri 35 iken ben istenileni 40 yaptığımda c0 pini lojik 1 olacak, sıcaklık 40 olduğunda lojik 0 olacak, eğer istenilen 2 derece düşerse tekrar lojik 1 olacak şekilde döngü olması gerekiyor.
Bu şekilde 35'ten 38'e geldiği gibi c0 lojik 0 oluyor yani, istenileni görmeden sistem kapanıyor.
Kod:
if(sicaklik<=(program_istenen_isi-2))
{
output_high(pin_c0);
}