avatar_ete

Alarm Saat (picbasic pro, pic16f877, pcf8583)

Başlatan ete, 28 Ağustos 2011, 14:02:42

Cesar35

HELLO AND YOU'RE ALL RIGHT.
TODAY 11/05/22 IN THE MORNING.
I SET THE ALARM TO ON AT 1:00 PM AND OFF AT 1:30 PM

IT TURNS ON ALARM AT 10:00 AM AND OFF AT 10:30 AM

IF YOU HAVE IT WORKING YOU CAN LEAVE IT
THANK YOU EVENLY

ete

I check the program in simulation and working very well. Your problem most probably is the setting the clock. You should set it according to the 24 hours format.
Ete

Cesar35

hello teacher
How to sim 24 hours ?
I will explain better.
The time here is 16:11 pm.
Your set the alarm to 5:00 am and turn off at 6:00 am
It wakes up at 21:00 at night and clears all alarms.
thank you for your help.

ete

You should give me what you see at LCD screen on 16:11
Ete

Cesar35

Bu eki görüntüleyemezsiniz.Bu eki görüntüleyemezsiniz.Bu eki görüntüleyemezsiniz.   

ete

#50
Pls. consider tghe following on setting the alarms;
- Each alarm must be set absolutely for same date but after the present time. You can not set one alarm to 05:00 06/11/22 if the present time is 16:11 06/11/22 because the alarm time is already passed. You can set the alarm between 16:12 up to 11:59 for 06/11/22.

-If the present time is 16:11 and if you want to set one alarm for 05:00 (AM) you must use the day the next day 07/11/22 not 06/11/22.

If you remember you have told me if one alarm is arrived the off time the alarm should be deleted form the memory and the program is deleting the alarm after off position.

I explain how the program is comparing the present time and alarm time.
SIMDI is variable name in the program it is for calculating total present time.
SIMDI=Hour + Minute + Day + Month  if we calculate it for 05:00 07/11/22
SIMDI=5 +0 +7 +11=23
ZAMAN is another variable and it keeps the total alarm time. Lets calculate it for 05:00 06/11/22 and also 07/11/22
for 06/11/22 .... ZAMAN=5+0+6+11=22
for 07/11/22......ZAMAN=5+0+7+11=23
If SIMDI=ZAMAN the program is setting or closing the alarm according to the YER value.
IF YER=1 and SIMDI=ZAMAN the first alarm output is setting (on position)
IF YER=8 and SIMDI=ZAMAN the first alarm output is LOW and alarm is deleted from eeprom memory.
By this system one alarm can not be on on different time. You can calculate it.

Ete

Cesar35

Hello ETE
please see the video
She's setting the alarm before the time and the day

https://photos.app.goo.gl/HRmWn556XKdEhp1RA

ete

#52
As you know I have not the physically circuit in my hand and I try the program on simulation.

I checked all your pictures and videos and I tried already all your time and alarm settings and I saw that the program is working without any mistake.

I see on the video that you input the alarms in-line like 1-2 and I did not see any input for close alarms.
As you know for open alarms you have to use 1-7 line numbers and for close alarms you have yo use 7-14. For instance, if you use nr.1 alarm for open you have to use line number-1 and to close time for same alarm you have to use Nr.8 I had explain you before I hope you do in right position .You do not need to sen us any picture any video. It will be enough if you say "I have done as you have request".
I will not do anything on the program because I could not see or find any mistake in the program.
Ofcourse can be one or some errors but I could not see them at the moment. I checked all the possible places and according to my mind there is not any arror.

Ete

ete

Cesar'ın problemini bana yolladığı vidolardan görüp deneyince neler olup bittiğini anladım.
Problem belirli bir saat ve gün için set edilen alarmın gün değişiminden hemen sonra 2 ci dakikada aalrm o saate ayarlanmamkış olsada kendiliğinden set edilmesi idi.
Program biliyorsunuz acemilik zamanlarımda yazdığım bir program. Bu programda mevcut ( o andaki) zaman ile alarm zamanını karşılaştırarak eşitlik bulursa alarmı set etme esasına dayanıyor idi.
Bunu yapmak için sonradan iyi olmadığını anladığım bir sistem kullanmışım.
SIMDI=Saat+Dak+Gün+Ay+Yıl şeklinde değerleri toplayıp aynı şekilde alarm zaman birimlerinide ZAMAN değişkeni üzerinde toplayıp SIMDI ile ZAMAN'ı karşılaştırıyordum.
Ama gördümki bu sistemde SAAT=1 ve dak=0 iken alarm zamanında ise SAAT=0 ve Dak=1 ise aynı toplam sonucunu veriyor ve alarm set ediliyor idi.
Bunu önlemek için sistem değiştirdim. Önce Yıl 'ı hesaptan çıkardım. ve şöyle yaptım.
Simdi=Saat*1000+Ay*100+Dak*10+Gun  Bu yöntemde fayda etmedi yine zamanlar bir birine eşit olmamasına rağmen bazı saatlerde eşitlik ortaya çıktı.
SOnra daha basite indirgedim. Simdi=8*Saat+4*Dak+2*Gun+Ay şeklinde bir mantık kurdum. Bundada maalesef yine tutarsız eşitlikler ortaya çıktı. Şaştım kaldım . Aslında bir IF gurubu kullanarak;
IF (AY=Y_AY) and (GUN=Y_GUN) and (Saat=Y_Saat) and (Dak=Y_DAK) THEN alarmı set et desem olacak ama bu kadar çok if'i bir arada kullanmak istemedim nedense ama sonunda şöyle bir mantık kurdum.
En azından saati dakika bazına indireyim dedim SIMDI=Saat*60+Dak şekline soktum. Sonra Gün ve AY uyumunu if ler ile ayarlayarak (
IF GUN=Y_Gun and AY=Y_AY THEN
  IF SIMDI=ZAMAN THEN Alarmı set et
Endif
şeklinde yapınca sorun ortadan kalkmış oldu.

BU konu hala beni meraklandırıyor. İlk kullandığım yönteme benzer bir şekilde bu olamazmıydı.
Bu konuda fikri olan varsa burada belirtirse üzrinde düşünmek isterim.

Ete

mehmet

(ay x 10000000) + (gün x 100000) + (saat x 1000) + dakika

uygun olmaz mı?
Olan olmuştur,
olacak olan da olmuştur.
Olacak bir şey yoktur.
http://www.mehmetbilgi.net.tr
CC BY

ete

Bu kadar büyük sayılar yerine aynı işi;
(ay x 1000) + (gün x 100) + (saat x 10) + dakika
değişkenlerin yerleri değişik olabilir ama bunu denedik sonuç olumsuz idi.
Sayılar büyüyünce hem BASIC sayı kısıtlaması hemde karşılaştırma işleminin vakit alması gibi sorunlar ortaya çıkar sanırım.

Erol

mehmet

#56
Benzersiz sayı oluşturmak için;
  12000000
  00310000
  00002300
  00000059
+-----------
  12312359
Diğer türlü çakışma olur.
Yıl, ay-gün ve saat-dakika olarak
üç şart ile uygun olur mu?
Olan olmuştur,
olacak olan da olmuştur.
Olacak bir şey yoktur.
http://www.mehmetbilgi.net.tr
CC BY

ete

Şu anda 4 şart ile sorunsuz çalışıyor ama saat+dak ikilisini dakika birimine çevirip Ay ve Gün uyumuna IF ile bakarak yapıyorum. Galiba en iyi yolda bu şekilde oluyor. Hepsini tek sayıya düşürünce işler karışıyor. Zaten 65535 sayısını geçmeme sorunu var. Neyse mevcut halini koruyacağız anlaşılan.


Ete

Serk@n

Hocam şöyle iki alternatif yol daha var ama onlarda da iki integer değişkeni istiyor.

1. YOL:
Burada öncelikle en küçük birim olan dakikayı baz almamız gerekiyor.

İlk integer ile en fazla gün-saat-dakika alınabiliyor.

simdi_dakika=gün*24*60 + saat*60 + dakika

İkinci integer ise en düşük birim olan ay bilgisi kalıyor. Burada da ay bilgisini baz almamız gerekiyor. Dolayısıyla saati 5000'li yıllara bile kurabiliriz.

simdi_ay=yıl*12 + ay

Bu iki integer değerinin başka bir tarihle karışma ihtimali yok. Çünkü en küçük zaman birimlerini baz aldık.
Bildiklerimize göre hareket edersek bilmediklerimizi de öğrenebiliriz.

Serk@n

#59
2 YOL:
Burada da iki integer değişkeni lazım. Yıl bilgisinin son iki hanesini alabiliyoruz.

integer değişkenini 5 digit gibi düşünebiliriz.

simdi1=AAYYG (Gün bilgisi son hane)
simdi2=GSSDD (Gün bilgisi ilk hane)

İlk digitler 6 rakamını geçemeyeceğinden ay ve gün bilgilerinin ilk rakamlarını koymak uygun olacaktır. (Saat ve dakikanın da ilk rakamları olabilir)
Bildiklerimize göre hareket edersek bilmediklerimizi de öğrenebiliriz.

Powered by EzPortal