butona basılı tutunca 5 sanıye sonra calıssın

Başlatan DEDİM, 17 Temmuz 2015, 23:46:13

DEDİM

kodlar bir yerden alıntıdır.cok düşündüm ama yapamadım.tek tek basınca saydırabiliyorum ama baSILI tutupta 5 sanıye sonra led yansın yapamadım.
If buton =1 Then
SAYAC=sayac+1
If SAYAC>=5000 Then 
GoSub KAPAT
SAYAC=0
EndIf
KAPAT:
high led
delayms 10
low led

ipek


ete

Önce butona basılıp basılmadığı test edilmeli sonra program while-wend döngüsü içine alınarak sayaç saydırılmalı ve sayacın uygun değere gelmesi durumunda ne yapılacak ise yaptırılmalıdır. Senin hatan while wend döngüsü kurmamış olman yada buna benzer başka bir algoritma (aynı iş if-endif) ilede yaptırılabilir) kurmamış olmandır.
If buton=1 then
Sayac=0
While buton=1
Sayac=sayac+1
Pause100
If sayac=50 then
  Led=1
Endif
Wend
Endif

önce butonu test ettik. Basılmış ise sayac değerini sıfırladık. Çünki saydıracağız.
Sonra while döngümüzü kurduk ve içinde pause 100 kullandık. Bu durumda 5 sn için 50 sayaç değeri yeterli olacaktır. Zira 50*100=5000 ms oda 5 sn edecektir.
Sayac 50 olunca ledi yaktık.
Diyelimki butona bastık ama çok beklemedik. Program ledi yakmadan döngüden çıkacaktır.
Program satır takip eder ve aksine bir tedbir almamış isen birsonraki satıra atlar. Senin yazdığın kodda böyle oluyor ve saymayı bitiremeden tuş basılı olsa bile o kısımdan çıkıyor idi. While wend döngüsü tuş bırakılıncaya kadar programı döngü içinde tutar.

Ete
Bilgi hazinedir paylaştıkça büyür.            http://etepic.com

DEDİM

ete usta cok tesekkur ederim yine hızır gibi  yetiştin imdadıma allah razı olsun senden

sayın ipek sizin vermiş oldugunuz program larıda aldım sizede tesekkür ederim.

ergunbt

Umarım işinize yarar.  Ben bu şekilde kullanıyorum.

If ZMN1>150 Then 'ne kadar süre bekleyecekseniz burayı düzeltin
    ZMN1=00
    
    Toggle CIKIS 'yaptırmak istediğiniz ne ise artık buraya yazın ve kesme kullanmalısnız.
   
      
EndIf

KESME:'***********************************************
'***********************************************
If tus=1  Then
  ZMN1=ZMN1+1
  If ZMN1=200 Then ZMN1=00
EndIf