avatar_elektro77

12f629 ile tek butonla hemen acilan ve gecikmeli kapanan role

Başlatan elektro77, 27 Haziran 2018, 22:01:56

elektro77

ekteki devre ile açılan ama kapanmayan arızalı bir cihaza modifiye yapacağım.
aynı buton ile, butona basınca, bırakmadan, cihazı önce acan, butona tekrar basınca(butonu bıraktıktan sonra)  bir süre bekledikten sonra kapatan bir devre tasarlamak istiyorum.
yaptığım yazılım calışıyor fakat tusa uzun basınca cihaz açıldıktan sonra tekrar kapanmaya gidiyor.
bu sorunu nasıl cözebilirim.

@ DEVICE pic12F629                      'işlemci 12F629                                
@ DEVICE pic12F629, WDT_Off             'Watch Dog timer açık
@ DEVICE pic12F629, PWRT_ON             'Power on timer açık
@ DEVICE pic12F629, PROTECT_OFF         'Kod Protek kapalı
@ DEVICE pic12F629, MCLR_off            'MCLR pini kullanılMIYOR.
@ DEVICE pic12F629, INTRC_OSC_NOCLKOUT  'Dahili osilatör kullanılacak
'-------------------------------------------------------------------------------
DEFINE OSCCAL_1K 1  'bu komut mutlaka olacak OSCCAL değerini yeniden pice yazdırıyor
'-------------------------------------------------------------------------------
CMCON = 7
'ANSEL = 0
'WPU= %000001
'-------------------------------------------------------------------------------
GPIO=%00000001
TRISIO=%00000011
SAYAC VAR BYTE
SAYAC=0
'-------------------------------------------------------------------------------
symbol GIRIS=GPIO.0
symbol BILGI=GPIO.1
symbol CIKIS=GPIO.5
'-------------------------------------------------------------------------------

BASLA:

IF GIRIS=0 and BILGI=0 THEN
'while GIRIS=0:wend
PAUSE 200
CIKIS=1
ENDIF

IF GIRIS=0 AND BILGI=1 THEN
while GIRIS=0 :WEND
SAYAC=SAYAC+1
PAUSE 200
ENDIF

IF SAYAC=1 THEN
PAUSE 5000
CIKIS=0
SAYAC=0
ENDIF


'--------------------------

     

GOTO basla
END
"Eğer bir konuyu öğrenmek istiyorsan o konunun öğretmeni ol; daha iyi öğrenmek istiyorsan o konuda bir kitap yaz; daha da iyi öğrenmek istiyorsan yazdığın kitabi oku"

MC_Skywalker

Şema resmi görünmemektedir, eğer buton ile ilgili olduğunu düşünüyorsanız debonuce konusuna dikkat etmek gerekli


elektro77

yanlış anlatmısım galiba .aynı mesajı yukarıda düzenleyerek anlattım.
bırakmadan ve bıraktıktan sonra ifadeleri işin kilit noktası
"Eğer bir konuyu öğrenmek istiyorsan o konunun öğretmeni ol; daha iyi öğrenmek istiyorsan o konuda bir kitap yaz; daha da iyi öğrenmek istiyorsan yazdığın kitabi oku"

mg1980

Cihaz açıldıktan sonrasına biraz uzun PAUSE koysanız olmaz mı ?

elektro77

Tusu bırakmıs olma sartını 2. if komutundan sonra aramam gerekiyor ama nasıl yapacağımı bilmiyorum.
BASLA:

IF GIRIS=0 THEN
PAUSE 200
CIKIS=1
ENDIF

IF GIRIS=0 AND BILGI=1 THEN
while GIRIS=0 :WEND
SAYAC=SAYAC+1
PAUSE 200
ENDIF

IF SAYAC=1 THEN
PAUSE 1000
CIKIS=0
POZ=0
ENDIF

1.if komutunda tusu bırakmış olma sartına ihtiyacım yok. çünkü tusu basılı iken cihazın açılması gerekli.
"Eğer bir konuyu öğrenmek istiyorsan o konunun öğretmeni ol; daha iyi öğrenmek istiyorsan o konuda bir kitap yaz; daha da iyi öğrenmek istiyorsan yazdığın kitabi oku"

mg1980


IF GIRIS=0 THEN
PAUSE 200
CIKIS=1
ENDIF

IF GIRIS=0 AND BILGI=1 THEN
PAUSE 2000
CIKIS=0
ENDIF

elektro77

Alıntı yapılan: mg1980 - 28 Haziran 2018, 09:42:14

IF GIRIS=0 THEN
PAUSE 200
CIKIS=1
ENDIF

IF GIRIS=0 AND BILGI=1 THEN
PAUSE 2000
CIKIS=0
ENDIF


bu sekilde yaptıgımda tusa uzun basınca veya tusta ripple olunca tekrar kapanmaya gidiyor. sorunda bu zaten.
yapmak istediğim tusu bırakım 2 . kere bastığımda kapanması gerektiği
"Eğer bir konuyu öğrenmek istiyorsan o konunun öğretmeni ol; daha iyi öğrenmek istiyorsan o konuda bir kitap yaz; daha da iyi öğrenmek istiyorsan yazdığın kitabi oku"

mg1980

1. IF'e  AND BILGI=0 ekleyınce ne oluyor ?
Siz GPIO=%.........1 yapmışsınız neden?

elektro77

cunkü o girşte srekli hıgh var
"Eğer bir konuyu öğrenmek istiyorsan o konunun öğretmeni ol; daha iyi öğrenmek istiyorsan o konuda bir kitap yaz; daha da iyi öğrenmek istiyorsan yazdığın kitabi oku"

mg1980

Olsun,en iyisini Ete hocam bilir ama benim bildiğim GPIO=0 gibi komutla başlangıçta port sıfırlanabilir,daha sonra komutlarla istenilen yaptırılır. Bu durumda siz butona bastığınızda "0" olunca bir kargaşa olmasın, gerek yoktu sanırım.


IF GIRIS=0 AND BILGI=0 THEN
PAUSE 200
CIKIS=1
ENDIF

WHILE GIRIS=0 AND BILGI=1
PAUSE 2000
CIKIS=0
WEND

elektro77

sizin dediğiniz gibi düzelttim. gpio yu.
bir soru daha sorucam size role kontaklarındaki ripplerden nasıl kurtuluruz.
"Eğer bir konuyu öğrenmek istiyorsan o konunun öğretmeni ol; daha iyi öğrenmek istiyorsan o konuda bir kitap yaz; daha da iyi öğrenmek istiyorsan yazdığın kitabi oku"

mg1980

Üstadlarımız role kontaklarına paralel kondansatör(kutupsuz) tavsiye ediyorlar...son yazdığım kodu uygulayabildiniz mi..çalışıyor mu ? Yazdığım son kodda WEND'den sonra da bir PAUSE 1000-2000 koyarsanız daha iyi olabilir

elektro77

"Eğer bir konuyu öğrenmek istiyorsan o konunun öğretmeni ol; daha iyi öğrenmek istiyorsan o konuda bir kitap yaz; daha da iyi öğrenmek istiyorsan yazdığın kitabi oku"

mg1980

Yazdığım son kodda WEND'den sonra da bir PAUSE 1000-2000 koyarsanız daha iyi olabilir..Bu durumda çalışmalı diye düşünüyorum.

elektro77

verdiğiniz kodda ilk basmada biraz uzun olursa role tekrar kapanıyor. bence siz sorunu anlamadınız.
"Eğer bir konuyu öğrenmek istiyorsan o konunun öğretmeni ol; daha iyi öğrenmek istiyorsan o konuda bir kitap yaz; daha da iyi öğrenmek istiyorsan yazdığın kitabi oku"

Powered by EzPortal