SELAMLAR,
Bu forumda ETE kullanıcı isimli arkadaşımızın DTMF ile ev otomasyonu uygulaması için yazdığı kodları kendi yaptığım uygulamada kullanmak üzere sadeleştirdim. Ama sonuç alamadım. Kodların çalışmayan sade hali aşağıdadır. Sistemin çalışma mantığı şudur: İşlemci ilk programlandığında röle açma şifresi 1453 olarak belirlenmiştir bu değer dahili eproma yazılmıştır. #9 girilip ardından eski şifre ardından yeni şifre girilince şifre değişmektedir. 7676 şifresi master şifredir şifre unutulunca pic işlemcinin ilk programlandığı değere döndürmektedir şifreyi yani 1453'e. Buraya kadar sadece röleyi açmayı denedim yazılma daha kapama kısmını eklemedim çünkü bu noktaya kadar çalıştıramadım. Çalışsaydı Devamını getirecektik.
Bu yazılıma son halini verdiğimde algoritmanın şu şekilde olmasını planlıyorum.
1453 ilk açma şifresi 1numaralı röle için
1071 ilk kapama şifresi 1numaralı röle için
1453#yeni şifre 1numaralı röle için açma şifresi değişti
1071#yeni şifre 1numaralı röle için kapama şifresi değişti
aynı işlemi 2numaralı röle içinde farklı şifrelerle yapmak istiyorum.
Yardımcı olacak arkadaşlara teşekkürler.
Aslı ETE kullanıcı isimli arkadaşa ait olup benim sadeleştirdiğim yazılım.(Bu haliyle çalışmıyor.)
[code]
'************************************************* ***************
'* Name : UNTITLED.BAS *
'* Author : [E.T.E] *
'* Notice : Copyright (c) 2005 Ete] *
'* : All Rights Reserved *
'* Date : 02.06.2005 *
'* Version : 1.0 *
'* Notes : *
'* : *
'************************************************* ***************
PORTA=0:PORTB=0
TRISB=%11111111 'PortB.0 giriş diğerleri çıkış yapıldı.
TRISA=%00000000 'A portu tamamı çıkış yapıldı.
'-----------------------------------------------------------------
@ DEVICE pic16F628A 'işlemci 16F628
@ DEVICE pic16F628A, WDT_OFF 'Watch Dog timer açık
@ DEVICE pic16F628A, PWRT_ON 'Power on timer açık
@ DEVICE pic16F628A, PROTECT_OFF 'Kod Protek kapalı
@ DEVICE pic16F628A, MCLR_OFF 'MCLR pini kullanılıyor.
@ DEVICE pic16F628A, INTRC_OSC_NOCLKOUT 'Dahili osilatör kullanılacak
'-----------------------------------------------------------------
CMCON=7 '16F628 de komparatör pinleri iptal hepsi giriş çıkış
'-----------------------------------------------------------------
SIFRE VAR WORD
RAKAM var WORD
TEMP VAR WORD
BASKA VAR WORD
ZAMAN VAR WORD
SURE VAR word
SAYI VAR BYTE
DURUM VAR BYTE
BIRLER VAR BYTE
ONLAR VAR BYTE
YUZLER VAR BYTE
BINLER VAR BYTE
CIK VAR BIT
SYMBOL CIKIS1=PORTA.1
SYMBOL CIKIS2=PORTA.2
SYMBOL CIKIS3=PORTA.3
symbol CIKIS4=PORTA.4
SYMBOL CIKIS5=PORTA.5
SYMBOL ISD =PORTA.6
SYMBOL ROLE=PORTB.7
SYMBOL VALDAT=PORTB.0
SYMBOL BUZZER=PORTA.7
'--------------------------------------------------------------------------
DATA @ 0,1,4,5,3
PAUSE 200
CLEAR
read 0,SAYI:PAUSE 10
IF SAYI=$FF THEN
SIFRE=1453
GOSUB SIFREYAZ
endIF
READ 0,BINLER
READ 1,YUZLER
READ 2,ONLAR
READ 3,BIRLER
SIFRE=BINLER*1000+YUZLER*100+ONLAR*10+BIRLER
'--------------------------------------ANA--------------------------------------
BASLA:
PASWORD: RAKAM=0:GOSUB SIFREAL
IF CIK=1 THEN BITIR
IF RAKAM=7676 THEN
SIFRE=1453
GOSUB SES2
GOSUB SES1
GOSUB SES2:gosub ses1
GOSUB SIFREYAZ
GOTO ROLEKONTROL
ENDIF
IF RAKAM=SIFRE THEN
GOSUB SES2:pause 50
GOSUB SES1:pause 50
GOSUB SES1:gosub ses1
GOTO ROLEKONTROL
ENDIF
ROLEKONTROL: GOSUB ALBILGI
IF CIK=1 THEN BITIR
IF SAYI=12 THEN ACMA '#
IF SAYI=11 THEN KAPAT '*
gosub ses2
GOTO BASLA
ACMA:
GOSUB ALBILGI
IF CIk=1 THEN BITIR
IF SAYI=0 THEN
gosub ses3
GOSUB EXIT
GOTO BASLA
ENDIF
DURUM=PORTA
IF SAYI=1 THEN
IF durum.1=0 THEN
GOSUB SES1
PORTA=DURUM | %00000001
goto ROLEKONTROL
ENDIF
ENDIF
IF SAYI=2 THEN
IF durum.2=0 THEN
GOSUB SES1:GOSUB SES1
PORTA=DURUM | %00000010
goto ROLEKONTROL
ENDIF
ENDIF
IF SAYI=9 THEN '#9
GOSUB SIFREAL
GOSUB SES1:gosub ses2
IF CIK=1 THEN BITIR
IF RAKAM=SIFRE THEN
GOSUB SES1:GOSUB SES1:GOSUB SES2
GOSUB SIFREAL
IF CIK=1 THEN BITIR
SIFRE=RAKAM
GOSUB SES1:gosub ses2
gosub SIFREYAZ
ENDIF
ENDIF
GOTO ROLEKONTROL
KAPAT: GOSUB ALBILGI
IF CIK=1 THEN BITIR
durum=PORTA
IF SAYI=0 THEN
GOSUB SES3
PORTA=DURUM & %11000000 '*0
ENDIF
IF SAYI=1 THEN
IF durum.1=1 THEN
GOSUB SES2
PORTA=DURUM & %11111110
goto ROLEKONTROL
ENDIF
ENDIF
IF SAYI=2 THEN
IF durum.2=1 THEN
GOSUB SES2:GOSUB SES2
PORTA=DURUM & %11111101
goto ROLEKONTROL
ENDIF
ENDIF
SIFREAL: GOSUB ALBILGI
IF CIK=1 THEN RETURN
RAKAM=SAYI*1000
GOSUB ALBILGI
IF CIK=1 THEN RETURN
RAKAM=RAKAM+SAYI*100
GOSUB ALBILGI
IF CIK=1 THEN RETURN
RAKAM=RAKAM+SAYI*10
GOSUB ALBILGI
IF CIK=1 THEN RETURN
RAKAM=RAKAM+SAYI
RETURN
ALBILGI:
SURE=0:ZAMAN=0
WHILE VALDAT=0
SURE=SURE+1
PAUSEus 270
IF SURE=65500 THEN
CIK=1:RETURN
ENDIF
WEND
SAYIAL: SAYI=0
WHILE VALDAT=1
SAYI.0=PORTA.4
SAYI.1=PORTA.3
SAYI.2=PORTA.2
SAYI.3=PORTA.1
WEND
IF SAYI=10 THEN SAYI=0
RETURN
SIFREYAZ:TEMP=SIFRE
BINLER=TEMP DIG 3
YUZLER=TEMP DIG 2
ONLAR =TEMP DIG 1
BIRLER=TEMP DIG 0
WRITE 0,BINLER:PAUSE 10
WRITE 1,YUZLER:PAUSE 10
WRITE 2,ONLAR :PAUSE 10
WRITE 3,BIRLER:PAUSE 10
RETURN
SES1: SOUND BUZZER,[110,12]:pause 30:RETURN
SES2: SOUND BUZZER,[95,12] :pause 30:RETURN
SES3: SOUND BUZZER,[85,25] :Pause 30:RETURN
BITIR: GOSUB EXIT:GOTO BASLA:RETURN
EXIT : SURE=0
CIK=0
RAKAM=0
LOW ROLE
LOW ISD
gosub ses2
gosub ses2
GOSUB SES3
GOSUB SES3
RETURN
End
Bu forumda ETE kullanıcı isimli arkadaşımızın DTMF ile ev otomasyonu uygulaması için yazdığı kodları kendi yaptığım uygulamada kullanmak üzere sadeleştirdim. Ama sonuç alamadım. Kodların çalışmayan sade hali aşağıdadır. Sistemin çalışma mantığı şudur: İşlemci ilk programlandığında röle açma şifresi 1453 olarak belirlenmiştir bu değer dahili eproma yazılmıştır. #9 girilip ardından eski şifre ardından yeni şifre girilince şifre değişmektedir. 7676 şifresi master şifredir şifre unutulunca pic işlemcinin ilk programlandığı değere döndürmektedir şifreyi yani 1453'e. Buraya kadar sadece röleyi açmayı denedim yazılma daha kapama kısmını eklemedim çünkü bu noktaya kadar çalıştıramadım. Çalışsaydı Devamını getirecektik.
Bu yazılıma son halini verdiğimde algoritmanın şu şekilde olmasını planlıyorum.
1453 ilk açma şifresi 1numaralı röle için
1071 ilk kapama şifresi 1numaralı röle için
1453#yeni şifre 1numaralı röle için açma şifresi değişti
1071#yeni şifre 1numaralı röle için kapama şifresi değişti
aynı işlemi 2numaralı röle içinde farklı şifrelerle yapmak istiyorum.
Yardımcı olacak arkadaşlara teşekkürler.
Aslı ETE kullanıcı isimli arkadaşa ait olup benim sadeleştirdiğim yazılım.(Bu haliyle çalışmıyor.)
[code]
'************************************************* ***************
'* Name : UNTITLED.BAS *
'* Author : [E.T.E] *
'* Notice : Copyright (c) 2005 Ete] *
'* : All Rights Reserved *
'* Date : 02.06.2005 *
'* Version : 1.0 *
'* Notes : *
'* : *
'************************************************* ***************
PORTA=0:PORTB=0
TRISB=%11111111 'PortB.0 giriş diğerleri çıkış yapıldı.
TRISA=%00000000 'A portu tamamı çıkış yapıldı.
'-----------------------------------------------------------------
@ DEVICE pic16F628A 'işlemci 16F628
@ DEVICE pic16F628A, WDT_OFF 'Watch Dog timer açık
@ DEVICE pic16F628A, PWRT_ON 'Power on timer açık
@ DEVICE pic16F628A, PROTECT_OFF 'Kod Protek kapalı
@ DEVICE pic16F628A, MCLR_OFF 'MCLR pini kullanılıyor.
@ DEVICE pic16F628A, INTRC_OSC_NOCLKOUT 'Dahili osilatör kullanılacak
'-----------------------------------------------------------------
CMCON=7 '16F628 de komparatör pinleri iptal hepsi giriş çıkış
'-----------------------------------------------------------------
SIFRE VAR WORD
RAKAM var WORD
TEMP VAR WORD
BASKA VAR WORD
ZAMAN VAR WORD
SURE VAR word
SAYI VAR BYTE
DURUM VAR BYTE
BIRLER VAR BYTE
ONLAR VAR BYTE
YUZLER VAR BYTE
BINLER VAR BYTE
CIK VAR BIT
SYMBOL CIKIS1=PORTA.1
SYMBOL CIKIS2=PORTA.2
SYMBOL CIKIS3=PORTA.3
symbol CIKIS4=PORTA.4
SYMBOL CIKIS5=PORTA.5
SYMBOL ISD =PORTA.6
SYMBOL ROLE=PORTB.7
SYMBOL VALDAT=PORTB.0
SYMBOL BUZZER=PORTA.7
'--------------------------------------------------------------------------
DATA @ 0,1,4,5,3
PAUSE 200
CLEAR
read 0,SAYI:PAUSE 10
IF SAYI=$FF THEN
SIFRE=1453
GOSUB SIFREYAZ
endIF
READ 0,BINLER
READ 1,YUZLER
READ 2,ONLAR
READ 3,BIRLER
SIFRE=BINLER*1000+YUZLER*100+ONLAR*10+BIRLER
'--------------------------------------ANA--------------------------------------
BASLA:
PASWORD: RAKAM=0:GOSUB SIFREAL
IF CIK=1 THEN BITIR
IF RAKAM=7676 THEN
SIFRE=1453
GOSUB SES2
GOSUB SES1
GOSUB SES2:gosub ses1
GOSUB SIFREYAZ
GOTO ROLEKONTROL
ENDIF
IF RAKAM=SIFRE THEN
GOSUB SES2:pause 50
GOSUB SES1:pause 50
GOSUB SES1:gosub ses1
GOTO ROLEKONTROL
ENDIF
ROLEKONTROL: GOSUB ALBILGI
IF CIK=1 THEN BITIR
IF SAYI=12 THEN ACMA '#
IF SAYI=11 THEN KAPAT '*
gosub ses2
GOTO BASLA
ACMA:
GOSUB ALBILGI
IF CIk=1 THEN BITIR
IF SAYI=0 THEN
gosub ses3
GOSUB EXIT
GOTO BASLA
ENDIF
DURUM=PORTA
IF SAYI=1 THEN
IF durum.1=0 THEN
GOSUB SES1
PORTA=DURUM | %00000001
goto ROLEKONTROL
ENDIF
ENDIF
IF SAYI=2 THEN
IF durum.2=0 THEN
GOSUB SES1:GOSUB SES1
PORTA=DURUM | %00000010
goto ROLEKONTROL
ENDIF
ENDIF
IF SAYI=9 THEN '#9
GOSUB SIFREAL
GOSUB SES1:gosub ses2
IF CIK=1 THEN BITIR
IF RAKAM=SIFRE THEN
GOSUB SES1:GOSUB SES1:GOSUB SES2
GOSUB SIFREAL
IF CIK=1 THEN BITIR
SIFRE=RAKAM
GOSUB SES1:gosub ses2
gosub SIFREYAZ
ENDIF
ENDIF
GOTO ROLEKONTROL
KAPAT: GOSUB ALBILGI
IF CIK=1 THEN BITIR
durum=PORTA
IF SAYI=0 THEN
GOSUB SES3
PORTA=DURUM & %11000000 '*0
ENDIF
IF SAYI=1 THEN
IF durum.1=1 THEN
GOSUB SES2
PORTA=DURUM & %11111110
goto ROLEKONTROL
ENDIF
ENDIF
IF SAYI=2 THEN
IF durum.2=1 THEN
GOSUB SES2:GOSUB SES2
PORTA=DURUM & %11111101
goto ROLEKONTROL
ENDIF
ENDIF
SIFREAL: GOSUB ALBILGI
IF CIK=1 THEN RETURN
RAKAM=SAYI*1000
GOSUB ALBILGI
IF CIK=1 THEN RETURN
RAKAM=RAKAM+SAYI*100
GOSUB ALBILGI
IF CIK=1 THEN RETURN
RAKAM=RAKAM+SAYI*10
GOSUB ALBILGI
IF CIK=1 THEN RETURN
RAKAM=RAKAM+SAYI
RETURN
ALBILGI:
SURE=0:ZAMAN=0
WHILE VALDAT=0
SURE=SURE+1
PAUSEus 270
IF SURE=65500 THEN
CIK=1:RETURN
ENDIF
WEND
SAYIAL: SAYI=0
WHILE VALDAT=1
SAYI.0=PORTA.4
SAYI.1=PORTA.3
SAYI.2=PORTA.2
SAYI.3=PORTA.1
WEND
IF SAYI=10 THEN SAYI=0
RETURN
SIFREYAZ:TEMP=SIFRE
BINLER=TEMP DIG 3
YUZLER=TEMP DIG 2
ONLAR =TEMP DIG 1
BIRLER=TEMP DIG 0
WRITE 0,BINLER:PAUSE 10
WRITE 1,YUZLER:PAUSE 10
WRITE 2,ONLAR :PAUSE 10
WRITE 3,BIRLER:PAUSE 10
RETURN
SES1: SOUND BUZZER,[110,12]:pause 30:RETURN
SES2: SOUND BUZZER,[95,12] :pause 30:RETURN
SES3: SOUND BUZZER,[85,25] :Pause 30:RETURN
BITIR: GOSUB EXIT:GOTO BASLA:RETURN
EXIT : SURE=0
CIK=0
RAKAM=0
LOW ROLE
LOW ISD
gosub ses2
gosub ses2
GOSUB SES3
GOSUB SES3
RETURN
End