Ledin 3dk Boyunca Yanmasını Nasıl Sağlarım?

Başlatan Sıfır, 10 Temmuz 2014, 13:37:16

Sıfır

Arkadaşlar ben pic basic de yeniyim de bir ledin ben tuşa bastıktan sonra 3 dakika boyunca yanmasını sonra da sönmesini istiyorum bunu hangi komutla ve nasıl yapabilirim?

Benim yapabildiğim bu:

Basla:
IF TUS=0
HIGH LED
ELSE
LOW LED
PAUSE 500
GOTO BASLA
ENDIF
END


ama ben tus=0 olduğunda ledin 3 dk yanıp sonra sönmesini istiyorum.Nasıl yapabilirim ve şimdiden teşekkürler.

İlyas KAYA

SAYIM VAR BYTE
SAY VAR BIT

CLEAR
LED=0


BAS:

IF TUS=0 THEN
SAY=1
'SAYIM=0      ' EĞER TEKRAR BUTONA BASTIĞINIZDA SÜREYİ SIFIRLAMAK İSTERSENİZ BUNU EKLEYEBİLİRSİNİZ.
ENDIF


IF SAY=1 THEN

SAYIM=SAYIM+1
PAUSE 1000

IF SAYIM>=180 THEN     
LED=0
SAY=0
SAYIM=0
ENDIF

ENDIF

pause 200

GOTO BAS

END

--------------------------

İşinizi görecektir.
Selametle.
Göz odur ki dağ ardını görsün,
Akıl odur ki başa geleceği bilsin.!

Sıfır

Alıntı yapılan: İlyas KAYA - 10 Temmuz 2014, 14:35:33
SAYIM VAR BYTE
SAY VAR BIT

CLEAR
LED=0


BAS:

IF TUS=0 THEN
SAY=1
'SAYIM=0      ' EĞER TEKRAR BUTONA BASTIĞINIZDA SÜREYİ SIFIRLAMAK İSTERSENİZ BUNU EKLEYEBİLİRSİNİZ.
ENDIF


IF SAY=1 THEN

SAYIM=SAYIM+1
PAUSE 1000

IF SAYIM>=180 THEN     
LED=0
SAY=0
SAYIM=0
ENDIF

ENDIF

pause 200

GOTO BAS

END

--------------------------

İşinizi görecektir.
Selametle.
Teşekkür ederim fakat biraz açıklar mısın çünkü ben bunu motor için kullanacağım da.

Sıfır

Alıntı yapılan: İlyas KAYA - 10 Temmuz 2014, 14:35:33
SAYIM VAR BYTE
SAY VAR BIT

CLEAR
LED=0


BAS:

IF TUS=0 THEN
SAY=1
'SAYIM=0      ' EĞER TEKRAR BUTONA BASTIĞINIZDA SÜREYİ SIFIRLAMAK İSTERSENİZ BUNU EKLEYEBİLİRSİNİZ.
ENDIF


IF SAY=1 THEN

SAYIM=SAYIM+1
PAUSE 1000

IF SAYIM>=180 THEN     
LED=0
SAY=0
SAYIM=0
ENDIF

ENDIF

pause 200

GOTO BAS

END

--------------------------

İşinizi görecektir.
Selametle.
Teşekkür ederim ama IF TUS=0 komudune high led yazmam gerekmiyor mu?Yoksa yanmaz yani.

ete

Elbette tuşa basılınca önce led'in yakılması daha sonra zamanın sayılması gerekir.
Zaman uzun olduğu için tuş deöngüsünde sayılması doğru olmaz. O halde bir işaret biti kullanıp led yanmış ise işaret bitini set etmek ve ana program döngüsünde işaret biti set edilmiş ise zamanı saymak değilse saymamak en doğrusudur.
SAYIM VAR BYTE
SAY VAR BIT

CLEAR
LED=0


BAS:

IF TUS=0 THEN
LED=1
SAY=1'bu işaret biti
'SAYIM=0      ' EĞER TEKRAR BUTONA BASTIĞINIZDA SÜREYİ SIFIRLAMAK İSTERSENİZ BUNU EKLEYEBİLİRSİNİZ.
ENDIF


IF SAY=1 THEN

SAYIM=SAYIM+1
PAUSE 1000

IF SAYIM>=180 THEN     
LED=0
SAY=0
SAYIM=0
ENDIF

ENDIF

pause 200

GOTO BAS

END

İlyas KAYA

Forumda yazdığım için Led=1 demeyi unutmuşum. :)

Biraz yoğun bir tempoda çalışıyorum size hızlıca cevap yazdım.
Açıklamaları eklemedim çünkü basit bir mantık var.

İşin sevindirici kısmı LED'in yanmadığını bulmuş olmanız.

Kolay gelsin :)
Göz odur ki dağ ardını görsün,
Akıl odur ki başa geleceği bilsin.!

Sıfır

Alıntı yapılan: İlyas KAYA - 10 Temmuz 2014, 17:44:57
Forumda yazdığım için Led=1 demeyi unutmuşum. :)

Biraz yoğun bir tempoda çalışıyorum size hızlıca cevap yazdım.
Açıklamaları eklemedim çünkü basit bir mantık var.

İşin sevindirici kısmı LED'in yanmadığını bulmuş olmanız.

Kolay gelsin :)

Teşekkür ederim siz ve sizin gibi yardımcı kimseler olmasaydı benim gibi yeni başlayanlar ne yapardı bilmiyorum.Şu anda benim için zor bir program üzerinde uğraşıyorum ve verdiğiniz kod ve bilgiler çok işime yarıyor  :).

İlyas KAYA

Bir hata daha var bakalım bulabilecekmisin.

İsis kullanmayı biliyorsan isis den simule edebilirsin.
Göz odur ki dağ ardını görsün,
Akıl odur ki başa geleceği bilsin.!

Sıfır

#8
Alıntı yapılan: İlyas KAYA - 10 Temmuz 2014, 18:32:15
Bir hata daha var bakalım bulabilecekmisin.

İsis kullanmayı biliyorsan isis den simule edebilirsin.

Benim gördüğüm bir başka şey "=>" yerine ">=" koyman oldu ama az önce kendi programımı yazdım ve bütün hataları giderdim bir şey mi atladım acaba  ??? ?

İlyas KAYA

Hayır o değil.  ">="  doğru.

Kronometre tutun bakalım led ne kadar süre sonra sönecek.
Göz odur ki dağ ardını görsün,
Akıl odur ki başa geleceği bilsin.!

Sıfır

Alıntı yapılan: İlyas KAYA - 10 Temmuz 2014, 19:28:38
Hayır o değil.  ">="  doğru.

Kronometre tutun bakalım led ne kadar süre sonra sönecek.

180 mili saniye sonra kapanıyor değil mi?

ete

Sence 180 ms sonramı? Yoksa
(1000+200)*180=216.000 ms=216 sn/60.=3,6 dak. sonramı kapanıyor.

Ete

Sıfır

#12
Alıntı yapılan: ete - 11 Temmuz 2014, 08:17:06
Sence 180 ms sonramı? Yoksa
(1000+200)*180=216.000 ms=216 sn/60.=3,6 dak. sonramı kapanıyor.

Ete

1000 . 180 diye biliyorum.Her 1 artışta 1000 mili saniye durursa 180 e kadar 1000.180 kadar durur sonra 180 olunca da led söner değil mi?Ama onun içinde:

IF SAY=1 THEN
SAYIM=>SAYIM+1
IF SAYIM=SAYIM+1 THEN
PAUSE 1000
IF SAYIM =>180 THEN
LED=0
ENDIF
ENDIF

gibi olması gerekmez miydi?

İlyas KAYA

Kardeş;

SAYIM değişkeni her bir 1000 ms 'de (1000 ms = 1sn) 1 arttığına göre ;

180 çarpı 1000 eşittir 180.000 eder.

180.000 saniye bölü 60 (1 dakika da 60sn var) dersek , bu da 3 dk yapar.
Ancak hata şu ki tuş gecikmesi içinde 200 ms verdik.

Hali ile 1000 ms 'de bir değil , 1200 ms 'de bir artım olacaktır.
Öyle ise ne yapıyoruz ?

PAUSE 1000

komutunu

PAUSE 800

olarak değiştiriyoruz. 800 ms biz verdik , 200 ms 'de tuş gecikmesi verdik , toplamda 1000 ms yani 1sn oldu.

1000 ms = 1 sn
60000 ms =1 dk
180000 ms= 3 dk

eder.
Hesabını buna göre yaparsın.



Not: Arkadaşın yaşı 14'müş bu nedenle fazlaca karmaşık olmadan yazmaya çalışıyorum.
Göz odur ki dağ ardını görsün,
Akıl odur ki başa geleceği bilsin.!

Sıfır

Teşekkür ederim siz bana çok yardımcı oluyorsunuz programımızı buna göre düzenleyeceğim  :).

Powered by EzPortal