zamanlayıcı

Başlatan hkalaycioglu, 01 Temmuz 2016, 20:10:56

hkalaycioglu

Öncelikle herkesin kadir gecesi mübarek olsun.

Ben ds1302 li lcd li 3 buton ile bunları ayarlayan bir devre yaptım.butonlardan bir değer giriyorum örneğin 30 dk. 30 dakika sonra bir röle çektiricem. Zaman bilgisi olarak ds1302 nin dakikasını alıp girdiğim değerden çıkartmak istiyorum ve 30 dakika sıfır olduğunda röle çekecek.
Fakat bir türlü ds1302 nin zaman bilgisini yani dakikasın 1 arttığında 30 dakika dan düşüremedim bana bu konuda yardımcı olurmusunuz.Teşekkrürler iyi akşamlar..

rexo

Devre nerede ,Program nerede ?bunları buraya koyman gerek , adres olamadan gidilecek yol zor bulunur .

hkalaycioglu

Sizden komple bir program istemiyorum ds1302 nin saat bilgisini başka bir değişkende geri nasıl saydırabilirim mantıksal bir yardım istiyorum bunun için şemaya ihtiyaç olduğunu düşünmüyorum

ete

Bu iş hem çok kolay hemde yerine göre zor bir iş.
İşin kolaylığı şayet okuduğun dak değeri girdiğin dakika (30dk) değerinden küçük ise iş çok kolay. Örnekle açıklayayım.
30:30 şeklinde geri saydırılacak bir değerin var.
RTC deki saati 00:00:00 şeklinde ayarlayıp geri saydırmayı başlatırsan
Ekran_Dak=30-Saat
Ekran_Sn  =30-SN
şeklinde ekrana yazdırırsan saat sıfırlanıncaya kadar geri sayma devam eder.
İşin zor tarafı ise RTC den okunan saat değerinin senin ayarladığın saat değerinden büyük olması durumunda ortaya çıkar.
RTC den okuduğun dak ve sn değeri 48:50 olsa ne yapacaksın.
Ekran_Dak=30-48 = -18
Ekran_SN =30-50 = -20
şeklinde abuk subuk değerler ortaya çıkacaktır.
Bu zorluğu aşmanın yolu ise RTC den saat okuma kısmında kendi değişkenlerini azaltarak yeni değerler elde etmendir.
Bu durumda okunan değerlere aldırış etmeden şayet okunan sn bir önceki okunandan farklı ise 1 sn geçmiş demektir.
Yani, IF ESN=SN then return dersin bir işlem yapmadan dönersin. Bu işe başlamadan evvel aşağıdaki leri saymaya başlamadan set edersin.
Ekran_Dak=30 (Girilen Dak)
Ekran_SN=30 (Girilen SN)
Daha sonra saat (RTC) okuma kısmında;
IF ESN=SN then RETURN

ESN=SN
Ekran_SN=Ekran_SN-1
IF EKRAN_SN=255 Then
   Ekran_Dak=Ekran_Dak-1
   IF Ekran_dak=255 then Süredoldu
Endif
Return
Şeklinde bir kaç satır ile bu işi kolaylıkla halledersin. Tabiiki ekranada
Ekran_dak ve Ekran_Sn değerlerini yazdırarak geri saymayı görebilirsin.

Ete

Powered by EzPortal