Picproje Elektronik Sitesi

MİKRODENETLEYİCİLER => Microchip PIC => Konuyu başlatan: Mucit23 - 30 Haziran 2010, 13:09:25

Başlık: otomatik çiçek sulama projesi bazı sorunlar var lütfen yardım edin!
Gönderen: Mucit23 - 30 Haziran 2010, 13:09:25
Merhabalar arkadaşlar
ben kendim bi otomatik çiçek sulama projesi yapıyorum programını bitirdim sayılır ufak tefek sorunlar var bunun için sizlerin fikirlerini ve görüşlerinizi almak istiyorum.
Öncelikle program ve devreden biraz bahsedeyim;
Programını pic basicde yazıyorum işlemci olarak 16F877 ,2x16 lcd, ısı ölçümü için DS18b20 saat içinde RTC olarak DS1302 kullandım.
Programda ısı ölçüm kodları ve ds1302 ile ilgili okuma ve yazma kodları ETE hocamıza aittir.
Devrenin çalışmasından biraz bahsetmek gerekirse şöyle söyliyeyim. Devre haftalık olarak haftanın hangi günlerinde su verilmesini şeçmişsek o günler su verir.Ana çalışma modundaygen menü tuşuna basıp ana menüye girilir ana menüden yukarı ve aşağı butonlarıyla pompa ayarları seçilip tekrar menüye basılıp bu sefer pompanın açıkmı kapılımı olduğu seçilir. açık veya kapalıdan herhangi birini seçtikten sonra tekrar menü tuşuna basarsak bu sefer hangi günler sulanacak bunu seçmemiz gerekir bu menüye girdiğimizde ilk karşımıza çıkan pazartesi olur yukarı tuşuşla pazartesinin yanına çarpı veya onay işareti konulur eğer günün yanında onay işareti varsa o gün sulama yapılır çarpı işareti varsa yapılmaz.sırasıyla bütün günler için bu ayarlar yapılır pazar gününüde yapıp tekrar menüye basarsak bu sefer saat kaçta sulama yapılacağı seçilir.Saat ve dakika cinsinde değerler girilip tekrar menüye basılırsa bu sefer pompanın kaç saniye çalışacağını ayarlamamızı ister saniye cinsinden 0 ile 59 saniye arasında bi değer seçip tekrar menüye basarsak pompa ayar menüsünden çıkar ve ana menüye döner oradanda çıkış yağpılıp normal çalışma moduna geri dönülür .Tabi bu yaptığımız ayarların hepsi epromda saklanır elektrik kesilsede ayarlarımız bozulmaz.

Menülerde bir sorunum yok sorun zamanı geldiğinde pompanın çalışmaması daha doğrusu devreyi çalıtırır çalıştırmaz hemen röle çekiyor bunun olmaması gerekiyor sadece ayarladığım günde saatte ve dakikada çalışması gerekir

ilk önce anlamanız açısında devrenin bütün kodlarını vereyim
DEFINE OSC 4
@ DEVICE pic16F877
@ DEVICE pic16F877, WDT_ON
@ DEVICE pic16F877, PWRT_ON
@ DEVICE pic16F877, PROTECT_OFF
@ DEVICE pic16F877, XT_OSC

TRISA=%00000111
TRISB=%00000000
TRISC=%00001111
TRISD=%00000000
TRISE=%00000000
PORTA=0
PORTB=0
PORTC=0
PORTD=0
PORTE=0

DEFINE LCD_DREG PORTB
DEFINE LCD_DBIT 4
DEFINE LCD_RSREG PORTB
DEFINE LCD_RSBIT 2
DEFINE LCD_EREG PORTB
DEFINE LCD_EBIT 3
DEFINE LCD_BITS 4
DEFINE LCD_LINES 2
ADCON1 = 7

    E       VAR     BYTE
    AY      var     byte
    YIL     var     byte
    SN      VAR     BYTE
    DAK     VAR     BYTE
    SAAT    VAR     BYTE
    GUN     VAR     BYTE
    MEM     VAR     BYTE
    ONLAR   VAR     BYTE
    BIRLER  VAR     BYTE
    SAYAC   VAR     BYTE
    SAYI    VAR     BYTE
    SAAT1   VAR     BYTE
    DAK1    VAR     BYTE
    DUR     VAR     BYTE
    TARIH   VAR     BYTE
    PTESI   VAR     BYTE
    SALI    VAR     BYTE
    CARS    VAR     BYTE
    PERS    VAR     BYTE
    CUMA    VAR     BYTE
    CTESI   VAR     BYTE
    PAZAR   VAR     BYTE
   
    'ISI
    Busy        VAR BIT         ' Busy Status-Bit
    HAM         VAR WORD        ' Sensör HAM okuma değeri
    ISI         VAR WORD        ' Hesaplanmış ISI değeri
    Float       VAR WORD        ' Holds remainder for + temp C display
    X           VAR WORD       
    ISARET_BITI   VAR HAM.Bit11   '   +/- sıcaklık İşaret biti,  1 = olursa eksi sıcaklık
    EKSI_ISI   CON 1           ' Sıfır altında isaret biti=1  oluyor kontrol için
    DERECE     CON 223         ' ° işareti
    ISARET      VAR BYTE       '  ISI değeri için  +/-  işaret
    TEMP        VAR BYTE       ' Div32 bit hesap için geçici değişken
    SYMBOL COMM_PIN=PORTC.3    ' One-wire Data-Pin "DQ" PortB.0 da
   
    MENU        VAR     PORTA.0
    YUKARI      VAR     PORTA.1
    ASAGI       VAR     PORTA.2
    RTC_RST     var     PORTC.0
    RTC_CLK     var     PORTC.1
    RTC_DTA     var     PORTC.2
    SYMBOL ROLE=PORTA.3
   
    PAUSE 300
    LCDOUT $FE,$40,0,1,2,20,8,0,0,0     'LCD 0. KARAKTER HAFIZASI ONAY İŞARETİ
    LCDOUT $FE,$48,0,17,10,4,10,17,0,0  'LCD 1. KARAKTER HAFIZASI ÇARPI İŞARETİ
    LCDOUT $FE,$50,16,8,4,2,4,8,16,0    'LCD 2. KARAKTER HAFIZASI YÖN İŞARETİ
   
    LCDOUT $FE,1," OTOMATIK CICEK "
    LCDOUT $FE,$C0,"    SULAYICI    "
    PAUSE 1500
    LCDOUT $FE,1
    GOSUB SENSOROKU
BASLA:
    GOSUB ZAMAN_OKU
    GOSUB SENSOROKU
    GOSUB EKRANAYAZ
    GOSUB ZAMANA_BAK
   
    IF MENU=1 THEN
    WHILE MENU=1:WEND
    GOTO AYAR_MENUSU
    ENDIF
GOTO BASLA
'---------------------------ALT PROGRAMLAR-------------------------------------
EKRANAYAZ:
READ $10,SAYAC:IF SAYAC=255 THEN SAYAC=0
READ $0,SAYI:IF SAYI=255 THEN SAYI=0
READ $11,DUR:IF DUR=255 THEN DUR=0

LCDOUT $FE,$80,ISARET,DEC ISI,",",DEC1 (Float),Derece,"C ",DEC2 SAAT,":",DEC2 DAK,":",DEC2 SN

IF SN=DUR THEN LOW ROLE

IF SAYI=1 THEN LCDOUT $FE,$C0,"P. ACIK  "
IF SAYI=0 THEN LCDOUT $FE,$C0,"P. KAPALI "

IF SAAT=0 AND DAK=0 AND SN=0 THEN
SAYAC=SAYAC+1
  IF SAYAC=7 THEN SAYAC=0
ENDIF
IF SAYAC=0 THEN
LCDOUT $FE,$CC,"PZTS"
ENDIF
IF SAYAC=1 THEN
LCDOUT $FE,$CC,"SALI"
ENDIF
IF SAYAC=2 THEN
LCDOUT $FE,$CC,"CARS"
ENDIF
IF SAYAC=3 THEN
LCDOUT $FE,$CC,"PERS"
ENDIF
IF SAYAC=4 THEN
LCDOUT $FE,$CC,"CUMA"
ENDIF
IF SAYAC=5 THEN
LCDOUT $FE,$CC,"CTESI"
ENDIF
IF SAYAC=6 THEN
LCDOUT $FE,$CC,"PAZR"
ENDIF

RETURN 

ZAMANA_BAK:
READ $0,SAYI
READ $1,PTESI:IF PTESI=255 THEN PTESI=0
READ $2,SALI:IF SALI=255 THEN SALI=0
READ $3,CARS:IF CARS=255 THEN CARS=0
READ $4,PERS:IF PERS=255 THEN PERS=0
READ $5,CUMA:IF CUMA=255 THEN CUMA=0
READ $6,CTESI:IF CTESI=255 THEN CTESI=0
READ $7,PAZAR:IF PAZAR=255 THEN PAZAR=0

IF SAYI=1 THEN
   IF (PTESI=1) AND SAAT1=SAAT AND DAK1=DAK AND SN=0 THEN HIGH ROLE
   IF (SALI=1) AND SAAT1=SAAT AND DAK1=DAK AND SN=0 THEN HIGH ROLE
   IF (CARS=1) AND SAAT1=SAAT AND DAK1=DAK AND SN=0 THEN HIGH ROLE
   IF (PERS=1) AND SAAT1=SAAT AND DAK1=DAK AND SN=0 THEN HIGH ROLE
   IF (CUMA=1) AND SAAT1=SAAT AND DAK1=DAK AND SN=0 THEN HIGH ROLE
   IF (CTESI=1) AND SAAT1=SAAT AND DAK1=DAK AND SN=0 THEN HIGH ROLE
   IF (PAZAR=1) AND SAAT1=SAAT AND DAK1=DAK AND SN=0 THEN HIGH ROLE
ENDIF 
RETURN         
           

SENSOROKU:
           OWOUT   Comm_Pin, 1, [$CC, $44]' ISI değerini oku
Bekle:
           OWIN    Comm_Pin, 4, [Busy]    ' Busy değerini oku
           IF      Busy = 0 THEN Bekle    ' hala meşgulmü? , evet ise goto Bekle..!
           OWOUT   Comm_Pin, 1, [$CC, $BE]' scratchpad memory oku
           OWIN    Comm_Pin, 2, [HAM.Lowbyte, HAM.Highbyte]' İki byte oku ve okumayı bitir.
           GOSUB   Hesapla
           RETURN
Hesapla:                 ' Ham değerden Santigrat derece hesabı
    ISARET  = "+"
    IF ISARET_BITI = EKSI_ISI THEN
       ISARET   = "-" 
       ham=~ham+2
    endif
    float = (HAM*10)/16        '
    ISI=FLOAT/10 
    RETURN 

TEMIZLE:
LCDOUT $FE,1
RETURN

AYARLANDI:
lcdout $FE,1,"   AYARLANDI   "
PAUSE 1000
GOSUB TEMIZLE
GOTO CIK
   
AYAR_MENUSU:
GOSUB TEMIZLE
SAATAYARI:
LCDOUT $FE,$80,"   SAAT AYARI"
        IF MENU=1 then
        WHILE MENU=1:WEND
         GOTO SAATAYAR1
        ENDIF

           IF ASAGI=1 then
        WHILE ASAGI=1:WEND
         GOTO MOTOR_AYARI
        ENDIF
   
           IF YUKARI=1 then
        WHILE YUKARI=1:WEND
         GOTO CIKIS
        ENDIF
GOTO SAATAYARI

MOTOR_AYARI:
GOSUB TEMIZLE
MOTOAYARI:
LCDOUT $FE,$80,"  POMPA AYARI"
       IF MENU=1 THEN
       WHILE MENU=1:WEND
       GOTO MOTORAYAR
       ENDIF
       
         IF ASAGI=1 then
        WHILE ASAGI=1:WEND
         GOTO GUN_AYARI
        ENDIF
   
           IF YUKARI=1 then
        WHILE YUKARI=1:WEND
         GOTO AYAR_MENUSU
        ENDIF
GOTO MOTOAYARI

GUN_AYARI:
GOSUB TEMIZLE
GUNA:
LCDOUT $FE,$82," GUN AYARI"
      IF MENU=1 THEN
       WHILE MENU=1:WEND
       GOTO GUNAYARI
       ENDIF
       
        IF ASAGI=1 then
        WHILE ASAGI=1:WEND
         GOTO CIK
        ENDIF
   
           IF YUKARI=1 then
        WHILE YUKARI=1:WEND
         GOTO MOTOR_AYARI
        ENDIF
GOTO GUNA     

CIKIS:
GOSUB TEMIZLE
CIK:
LCDOUT $FE,$80," MENUDEN CIKIS"
      IF MENU=1 THEN
       WHILE MENU=1:WEND
       LCDOUT $FE,1
       GOTO BASLA
       ENDIF
       
         IF ASAGI=1 then
        WHILE ASAGI=1:WEND
         GOTO AYAR_MENUSU
        ENDIF
   
           IF YUKARI=1 then
        WHILE YUKARI=1:WEND
         GOTO GUN_AYARI
        ENDIF
GOTO CIK

MOTORAYAR:
GOSUB TEMIZLE
MOTOAYAR:
     READ $0,SAYI
     IF SAYI=255 THEN SAYI=0
     LCDOUT $FE,$80,"  POMPA DURUMU  "
     
      IF MENU=1 THEN
        WHILE MENU=1:WEND
        GOSUB M_ZAMANI
      ENDIF
           IF YUKARI=1 THEN SAYI=SAYI+1
        WHILE YUKARI=1:WEND
           IF SAYI=2 THEN SAYI=0
        WRITE $0,SAYI
       
        IF SAYI=1 THEN lcdout $FE,$C0,"     ACIK       "
        IF SAYI=0 THEN LCDOUT $FE,$C0,"    KAPALI      "
GOTO MOTOAYAR 

M_ZAMANI:
     GOSUB TEMIZLE
P_TESI
     READ $1,PTESI
     IF PTESI=255 THEN PTESI=0
     LCDOUT $FE,$80," SULAMA GUNLERI"
     IF YUKARI=1 THEN
     PTESI=PTESI+1
     IF PTESI=2 THEN PTESI=0
     WHILE YUKARI=1:WEND
     ENDIF
     IF PTESI=1 THEN  LCDOUT $FE,$C0,"PAZARTESI  ",0
     IF PTESI=0 THEN  LCDOUT $FE,$C0,"PAZARTESI  ",1
     WRITE $1,PTESI:PAUSE 10
     IF MENU=1 THEN
     WHILE MENU=1:WEND
     GOTO SALIGUNU
     ENDIF
   
GOTO P_TESI

SALIGUNU:
GOSUB TEMIZLE
SALI_:
     READ $2,SALI
     IF SALI=255 THEN SALI=0
     LCDOUT $FE,$80," SULAMA GUNLERI"
     IF YUKARI=1 THEN
     SALI=SALI+1
     IF SALI=2 THEN SALI=0
     WHILE YUKARI=1:WEND
     ENDIF
     IF SALI=1 THEN  LCDOUT $FE,$C0,"SALI  ",0
     IF SALI=0 THEN  LCDOUT $FE,$C0,"SALI  ",1                                           
     WRITE $2,SALI:PAUSE 10
     IF MENU=1 THEN
     WHILE MENU=1:WEND
     GOTO CARSAMBA
     ENDIF
     
GOTO SALI_

CARSAMBA:
GOSUB TEMIZLE
CARS_:
     READ $3,CARS
     IF CARS=255 THEN CARS=0
     LCDOUT $FE,$80," SULAMA GUNLERI"
     IF YUKARI=1 THEN
     CARS=CARS+1
     IF CARS=2 THEN CARS=0
     WHILE YUKARI=1:WEND
     ENDIF
     IF CARS=1 THEN  LCDOUT $FE,$C0,"CARSAMBA  ",0
     IF CARS=0 THEN  LCDOUT $FE,$C0,"CARSAMBA  ",1                                           
     WRITE $3,CARS:PAUSE 10
     IF MENU=1 THEN
     WHILE MENU=1:WEND
     GOTO PERSEMBE
     ENDIF
     
GOTO CARS_

PERSEMBE:
GOSUB TEMIZLE
PERS_:
     READ $4,PERS
     IF PERS=255 THEN PERS=0
     LCDOUT $FE,$80," SULAMA GUNLERI"
     IF YUKARI=1 THEN
     PERS=PERS+1
     IF PERS=2 THEN PERS=0
     WHILE YUKARI=1:WEND
     ENDIF
     IF PERS=1 THEN  LCDOUT $FE,$C0,"PERSEMBE  ",0
     IF PERS=0 THEN  LCDOUT $FE,$C0,"PERSEMBE  ",1                                           
     WRITE $4,PERS:PAUSE 10
     IF MENU=1 THEN
     WHILE MENU=1:WEND
     GOTO CUMAGUNU
     ENDIF
   
GOTO PERS_

CUMAGUNU:
GOSUB TEMIZLE
CUMA_:
     READ $5,CUMA
     IF CUMA=255 THEN CUMA=0
     LCDOUT $FE,$80," SULAMA GUNLERI"
     IF YUKARI=1 THEN
     CUMA=CUMA+1
     IF CUMA=2 THEN CUMA=0
     WHILE YUKARI=1:WEND
     ENDIF
     IF CUMA=1 THEN  LCDOUT $FE,$C0,"CUMA  ",0
     IF CUMA=0 THEN  LCDOUT $FE,$C0,"CUMA  ",1                                           
     WRITE $5,CUMA:PAUSE 10
     IF MENU=1 THEN
     WHILE MENU=1:WEND
     GOTO CUMARTESI
     ENDIF
     
GOTO CUMA_

CUMARTESI:
GOSUB TEMIZLE
CTESI_:
     READ $6,CTESI
     IF CTESI=255 THEN CTESI=0
     LCDOUT $FE,$80," SULAMA GUNLERI"
     IF YUKARI=1 THEN
     CTESI=CTESI+1
     IF CTESI=2 THEN CTESI=0
     WHILE YUKARI=1:WEND
     ENDIF
     IF CTESI=1 THEN  LCDOUT $FE,$C0,"CUMARTESI  ",0
     IF CTESI=0 THEN  LCDOUT $FE,$C0,"CUMARTESI  ",1                                           
     WRITE $6,CTESI:PAUSE 10
     IF MENU=1 THEN
     WHILE MENU=1:WEND
     GOTO PAZARGUNU
     ENDIF
     
GOTO CTESI_:

PAZARGUNU:
GOSUB TEMIZLE
PAZAR_:
     READ $7,PAZAR
     IF PAZAR=255 THEN PAZAR=0
     LCDOUT $FE,$80," SULAMA GUNLERI"
     IF YUKARI=1 THEN
     PAZAR=PAZAR+1
     IF PAZAR=2 THEN PAZAR=0
     WHILE YUKARI=1:WEND
     ENDIF
     IF PAZAR=1 THEN  LCDOUT $FE,$C0,"PAZAR  ",0
     IF PAZAR=0 THEN  LCDOUT $FE,$C0,"PAZAR  ",1                                           
     WRITE $7,PAZAR:PAUSE 10
     IF MENU=1 THEN
     WHILE MENU=1:WEND
     GOTO M_CALISMA
     ENDIF
GOTO PAZAR_

M_CALISMA:
GOSUB TEMIZLE
SAAT_AYARLA:
     READ $8,SAAT1:IF SAAT1=255 THEN SAAT1=0
     READ $9,DAK1:IF DAK1=255 THEN DAK1=0
     LCDOUT $FE,1
     IF MENU=1 THEN SAAT_AYARLA
SAAT_AYAR:
      LCDOUT $FE,$81,"CALISMA SAATI"
      LCDOUT $FE,$C4,2,DEC2 SAAT1,":",DEC2 DAK1
   
     IF YUKARI=1 THEN
     SAAT1=SAAT1+1
     IF SAAT1=24 THEN SAAT1=0
     WHILE YUKARI=1:WEND
     ENDIF
     IF ASAGI=1 THEN
     SAAT1=SAAT1-1
     IF SAAT1=255 THEN SAAT1=23
     WHILE ASAGI=1:WEND
     ENDIF
     WRITE $8,SAAT1:PAUSE 10
     IF MENU=1 THEN
     WHILE MENU=1:WEND
     GOTO DAK_AYARLA
     ENDIF
GOTO SAAT_AYAR

DAK_AYARLA:
     READ $8,SAAT1
     READ $9,DAK1:IF DAK1=255 THEN DAK1=0
     LCDOUT $FE,1
     IF MENU=1 THEN DAK_AYARLA
DAK_AYAR:
     LCDOUT $FE,$81,"CALISMA SAATI"
     LCDOUT $FE,$C4,DEC2 SAAT1,":",2,DEC2 DAK1
     
     IF YUKARI=1 THEN
     DAK1=DAK1+1
     IF DAK1=59 THEN DAK1=0
     WHILE YUKARI=1:WEND
     ENDIF
     IF ASAGI=1 THEN
     DAK1=DAK1-1
     IF DAK1=255 THEN DAK1=59
     WHILE ASAGI=1:WEND
     ENDIF
     WRITE $9,DAK1:PAUSE 10
     IF MENU=1 THEN
     WHILE MENU=1:WEND
     GOTO M_SURE
     ENDIF
     
GOTO DAK_AYAR

M_SURE:
GOSUB TEMIZLE
MSURE:
       READ $11,DUR
           IF MENU=1 THEN AYARLANDI
        WHILE MENU=1:WEND
       lcdout $fe,$80,"POMPA CALISMA"
       lcdout $FE,$C0,"SURESI:",DEC2 DUR," SANIYE"
           IF YUKARI=1 THEN DUR=DUR+1
        WHILE YUKARI=1:WEND   
           IF DUR=60 THEN DUR=0
           IF ASAGI=1 THEN DUR=DUR-1
        WHILE ASAGI=1:WEND
           IF DUR=255 THEN DUR=59
        WRITE $11,DUR:PAUSE 10
GOTO MSURE   

GUNAYARI:
READ $10,SAYAC
GOSUB TEMIZLE
GUNAYAR:
LCDOUT $FE,$80,"GUNU SEC"

IF MENU=1 THEN
WHILE MENU=1:WEND
GOTO AYARLANDI
ENDIF

IF YUKARI=1 THEN
WHILE YUKARI=1:WEND
SAYAC=SAYAC+1
IF SAYAC=7 THEN SAYAC=0
ENDIF

IF ASAGI=1 THEN
WHILE ASAGI=1:WEND
SAYAC=SAYAC-1
IF SAYAC=255 THEN SAYAC=6
ENDIF

IF SAYAC=0 THEN LCDOUT $FE,$C0,"GUN=PAZARTESI"
IF SAYAC=1 THEN LCDOUT $FE,$C0,"GUN=SALI      "
IF SAYAC=2 THEN LCDOUT $FE,$C0,"GUN=CARSAMBA"
IF SAYAC=3 THEN LCDOUT $FE,$C0,"GUN=PERSEMBE"
IF SAYAC=4 THEN LCDOUT $FE,$C0,"GUN=CUMA     "
IF SAYAC=5 THEN LCDOUT $FE,$C0,"GUN=CUMARTESI"
IF SAYAC=6 THEN LCDOUT $FE,$C0,"GUN=PAZAR     "
WRITE $10,SAYAC:PAUSE 10
GOTO GUNAYAR

SAATAYAR1:
       lcdout $fe,1
           IF MENU=1 then SAATAYAR1
SAATAYAR:
        PAUSE 200
       lcdout $FE,$80,"  SAATi AYARLA  "
       lcdout $FE,$C0,"SAAT :",2,dec2 SAAT,":",dec2 DAK,":",dec2 SN
              E=0

       button MENU, 1, 255, 255, E, 1,DAKIKAAYAR1
       button YUKARI,1,255,255,E,1,SAATIARTIR
       button ASAGI,1,255,255,E,1,SAATIAZALT
         goto SAATAYAR

SAATIARTIR:
           IF YUKARI=1 then SAAT=SAAT+1
           WHILE YUKARI=1:WEND
           IF SAAT=24 then SAAT=0
         goto SAATAYAR

SAATIAZALT:
           IF ASAGI=1 then SAAT=SAAT-1
           WHILE ASAGI=1:WEND
           IF SAAT=255 then SAAT=23
         goto SAATAYAR
DAKIKAAYAR1:
           IF MENU=1 then DAKIKAAYAR1
       lcdout $fe,1
DAKIKAAYAR:
       lcdout $FE,$80,"  SAATi AYARLA  "
       lcdout $FE,$C0,"SAAT :",dec2 SAAT,":",2,dec2 DAK,":",dec2 SN
              E=0
       button MENU, 1, 255, 255, E, 1,ZAMAN_B
       button YUKARI,1,255,255,E,1,DAKARTTIR
       button ASAGI,1,255,255,E,1,DAKAZALT
DAKARTTIR:
           IF YUKARI=1 then DAK=DAK+1
           WHILE YUKARI=1:WEND
           IF DAK=60 then DAK=0
         goto DAKIKAAYAR
DAKAZALT:
           IF ASAGI=1 then DAK=dak-1
           WHILE ASAGI=1:WEND
           IF DAK=255 then DAK=59
         goto DAKIKAAYAR
ZAMAN_B:
           IF MENU=1 then ZAMAN_B
        gosub ZAMAN_YAZ
        GOSUB TEMIZLE
        GOSUB AYARLANDI
         goto CIK       
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
ZAMAN_OKU:
    high RTC_RST:OUTPUT RTC_DTA
shiftout RTC_DTA, RTC_CLK, 0, [$BF]:INPUT RTC_DTA
SHIFTIN RTC_DTA, RTC_CLK, 1, [SN, DAK, SAAT,GUN , AY, MEM, YIL, MEM]  'OKU
         MEM=SN:GOSUB CEVIR:SN=SAYI
         MEM=DAK:GOSUB CEVIR:DAK=SAYI
         MEM=SAAT:GOSUB CEVIR:SAAT=SAYI
         MEM=GUN:GOSUB CEVIR:GUN=SAYI
         MEM=AY:GOSUB CEVIR:AY=SAYI
         MEM=YIL:GOSUB CEVIR:YIL=SAYI
     low RTC_RST
  return

ZAMAN_YAZ:
         MEM=sn:gosub TERSCEVIR:sn=SAYI
         MEM=DAK:gosub TERSCEVIR:DAK=SAYI
         MEM=SAAT:gosub TERSCEVIR:SAAT=SAYI
         MEM=GUN:gosub TERSCEVIR:GUN=SAYI
         MEM=AY:gosub TERSCEVIR:AY=SAYI
         MEM=YIL:gosub TERSCEVIR:YIL=SAYI

    high  RTC_RST
SHIFTOUT RTC_DTA, RTC_CLK, 0, [$8E, 0]    'WRT Protek açıldı
     low RTC_RST:PAUSEUS 10
    high RTC_RST         
SHIFTOUT RTC_DTA, RTC_CLK, 0, [$BE, SN, DAK, SAAT,GUN , AY, 0, YIL, 128]  'YAZ
     low RTC_RST
PAUSEUS 10
  return

CEVIR:
         ONLAR=MEM & %01110000
         ONLAR=ONLAR>>4
         BIRLER=MEM & %00001111
         SAYI=ONLAR*10+BIRLER
  return

TERSCEVIR:
         ONLAR=MEM DIG 1
         ONLAR=ONLAR<<4
         BIRLER=MEM DIG 0
         SAYI=ONLAR+BIRLER
  return
end
 

program epeyce ağır oldu :)
programdada anlaşılacağı gibi röleyi kontrol etmek için aşağıdaki komutları kullandım
ZAMANA_BAK:
READ $0,SAYI
READ $1,PTESI:IF PTESI=255 THEN PTESI=0
READ $2,SALI:IF SALI=255 THEN SALI=0
READ $3,CARS:IF CARS=255 THEN CARS=0
READ $4,PERS:IF PERS=255 THEN PERS=0
READ $5,CUMA:IF CUMA=255 THEN CUMA=0
READ $6,CTESI:IF CTESI=255 THEN CTESI=0
READ $7,PAZAR:IF PAZAR=255 THEN PAZAR=0

IF SAYI=1 THEN
   IF PTESI=1 AND SAAT1=SAAT AND DAK1=DAK AND SN=0 THEN HIGH ROLE
   IF SALI=1 AND SAAT1=SAAT AND DAK1=DAK AND SN=0 THEN HIGH ROLE
   IF CARS=1 AND SAAT1=SAAT AND DAK1=DAK AND SN=0 THEN HIGH ROLE
   IF PERS=1 AND SAAT1=SAAT AND DAK1=DAK AND SN=0 THEN HIGH ROLE
   IF CUMA=1 AND SAAT1=SAAT AND DAK1=DAK AND SN=0 THEN HIGH ROLE
   IF CTESI=1 AND SAAT1=SAAT AND DAK1=DAK AND SN=0 THEN HIGH ROLE
   IF PAZAR=1 AND SAAT1=SAAT AND DAK1=DAK AND SN=0 THEN HIGH ROLE
ENDIF 
RETURN

burada sayı değişkeni pompanın açıkmı kapalımı olduğunu temsil ediyor eğer birse açık sıfırsa pompa kapalıdır
günler i açıklamak gerekirse eğer gün birse o gün sulama yapılır sıfırsa sulama yapılmaz yani menüde onay işareti koymaklar günün 1 veya sıfır olmasını değiştiriyorduk .Motoru kontrol etmek için bu kodları kullandım ama devreyi ilk çalıştırdığımızda hemen röle çekiyor
ve bir sonraki dakikada pompa kaç saniye çalışacaksa o kadar çalışıp röle bırakıyor ayrıca günlerede uymuyor diyelimki sadece pazartesi günü çalışması gerekiyorsa pazartesi dahil hergün boyunca ayarladığım saatte çalışıyor program nedense birtek ayarladığım saat ve dakikayı dikkate alıyor diğer durumları pass geçiyor anlayamadım gitti
Birinci sorununm bu arkadaşlar diğer bir sorun ise Ds1302nin normalden yavaş ilerlemesi yani saniye biraz yavaş ilerliyor bunun sebebi nedir sizce neden saniye yavaş ilerliyor olabilir.

Bide Ds1302den gün okumayla ilgli bir sorum var DS1302den tarih okurken bilgiler hep sayısal olarak geliyor yani diyelimki tarihi okuduk 29/06/2010 gibi bir tarih bilgimiz oluyor ama ben gün okumak istiyorum (ptesi,salı,çars gibi)ds 1302nin böyle bir özelliği varmı yani bu bilgileri okuma istesek nasıl okluyacağız ben şimdilik farklı bir yöntemle günü oraya yazdırdım ama elektrik kesikken gün ilerlemiyor malesef .

programda sizlerinde yardımıyla inşaalah epeyce düzeltmeler yapıcağım belki algoritmada yada yazım tarzında bana daha praik komutlar
söyleyebilirsiniz daha bu işte acemiyim pek fazla tecrübem yok çevremde görüdüğüm devrelerle kendimi geliştiriyorum bu tarz şeyler yapmaya çalışıyorum umarım sorunları çözeriz.Özellikle eğer kendiside müsaitse ETE hocamdan yardım istiyorum kendisi çok ilimli ve bilgili bir insan:)
Arkadaşlar yaptığım proje ile ilgili tüm dosyalar burada isis şeması vs var isiste çalışmasını daha rahat anlayabilirsiniz.Buyrun
http://www.dosya.tc/files/KbA1LQ/_i_eksulama.rar.html
Başlık: Ynt: otomatik çiçek sulama projesi bazı sorunlar var lütfen yardım edin!
Gönderen: JKramer - 30 Haziran 2010, 13:38:51
Alıntı yapılan: mucit23 - 30 Haziran 2010, 13:09:25
...
Bide Ds1302den gün okumayla ilgli bir sorum var DS1302den tarih okurken bilgiler hep sayısal olarak geliyor yani diyelimki tarihi okuduk 29/06/2010 gibi bir tarih bilgimiz oluyor ama ben gün okumak istiyorum (ptesi,salı,çars gibi)ds 1302nin böyle bir özelliği varmı yani bu bilgileri okuma istesek nasıl okluyacağız ben şimdilik farklı bir yöntemle günü oraya yazdırdım ama elektrik kesikken gün ilerlemiyor malesef .
...
Kataloğun dokuzuncu sayfasında "Register Adress/Definition" bölümünde yazdığı gibi 0x8B size haftanın gün bilgisini veriyor.(Yazmak için 0x8A)
Başlık: Ynt: otomatik çiçek sulama projesi bazı sorunlar var lütfen yardım edin!
Gönderen: Mucit23 - 30 Haziran 2010, 14:06:29
Merhabalar cevabın için teşekkür ederim
programda zaman okuma bölümü burası
ZAMAN_OKU:
    high RTC_RST:OUTPUT RTC_DTA
shiftout RTC_DTA, RTC_CLK, 0, [$BF]:INPUT RTC_DTA
SHIFTIN RTC_DTA, RTC_CLK, 1, [SN, DAK, SAAT,GUN , AY, MEM, YIL, MEM]  'OKU
         MEM=SN:GOSUB CEVIR:SN=SAYI
         MEM=DAK:GOSUB CEVIR:DAK=SAYI
         MEM=SAAT:GOSUB CEVIR:SAAT=SAYI
         MEM=GUN:GOSUB CEVIR:GUN=SAYI
         MEM=AY:GOSUB CEVIR:AY=SAYI
         MEM=YIL:GOSUB CEVIR:YIL=SAYI
     low RTC_RST
  return

haftadaki gün bilgisini alabilmek için tam olarak ne yapmam gerekiyor
Başlık: Ynt: otomatik çiçek sulama projesi bazı sorunlar var lütfen yardım edin!
Gönderen: JKramer - 30 Haziran 2010, 14:38:07
SHIFTIN RTC_DTA, RTC_CLK, 1, [SN, DAK, SAAT,GUN , AY, MEM, YIL, MEM]  'OKU

Kırmızıyla gösterdiğimi yeni bir değişkenle değiştirip okumayı dener misiniz?
Başlık: Ynt: otomatik çiçek sulama projesi bazı sorunlar var lütfen yardım edin!
Gönderen: Mucit23 - 02 Temmuz 2010, 13:48:40
JKRAMER;
çok teşekkür ederim sana
dediğin gibi kırmızı olarak gösterdiğin yer hafta adlı bir değişken oluşturum yazınca saattedeki saniyenin geç artması sorunu çözüldü saat çok güzel çalışıyor fakat bununla birlikte birçok sorun ortaya çıktı birinci sorun ısı ölçümü bozuldu anlayamadım doğrusu sıcaklık devamlı
-0,1 derece gösteriyor bunun sebebi ne olabilir acaba ayrıca diğer bir konu ise dediğiniz gibi kırmızı olan yeri hafta değişkeniyle değiştirim diğerleriyle aynı çevirme işlemini yaptım yani zaman okuma bölümü şöyle oldu
ZAMAN_OKU:
    high RTC_RST:OUTPUT RTC_DTA
shiftout RTC_DTA, RTC_CLK, 0, [$BF]:INPUT RTC_DTA
SHIFTIN RTC_DTA, RTC_CLK, 1, [SN, DAK, SAAT,GUN , AY, HAFTA, YIL, MEM]  'OKU
         MEM=SN:GOSUB CEVIR:SN=SAYI
         MEM=DAK:GOSUB CEVIR:DAK=SAYI
         MEM=SAAT:GOSUB CEVIR:SAAT=SAYI
         MEM=GUN:GOSUB CEVIR:GUN=SAYI
         MEM=AY:GOSUB CEVIR:AY=SAYI
         MEM=YIL:GOSUB CEVIR:YIL=SAYI
         MEM=HAFTA:GOSUB CEVIR:HAFTA=SAYI
     low RTC_RST
  return

bu şekilde yapıp hafta değişkenin ekranın bir kösesine yazdırdığımda ekranda 06 rakamını gördüm bu 06 rakamı neyi temsil edyor acaba eğer gün bilgisini bu şekilde okuyabiliyorsak bunu nasıl pazartesi salı çarş çevireceğiz bunu anlayamıyorum şimdilik sorunlar bunlar tabi birde röle çıkışı var ama ilk önce bu sorunları çözmem lazım sizinde yardımlarınız ile sorunları çözüceğiz .
Başlık: Ynt: otomatik çiçek sulama projesi bazı sorunlar var lütfen yardım edin!
Gönderen: JKramer - 02 Temmuz 2010, 14:05:58
Kataloğun yine aynı sayfasında "HAFTA" adını verdiğiniz değişkene atılan değerin 1-7 arasında olduğu yazıyor. Bunu yorumlamak size kalmış; isterseniz 1:Pazartesi, 2:Salı,...,7:Pazar olur, isterseniz 1:Cumartesi, 2:Pazar,...,7:Cuma olur.
Başlık: Ynt: otomatik çiçek sulama projesi bazı sorunlar var lütfen yardım edin!
Gönderen: Mucit23 - 02 Temmuz 2010, 14:15:55
Tekrardan teşekkür ederim
hafta okuma işini anladım
Peki diyelimki ayar yapmak istersek zaman yaz bölümü aşağıdaki gibi yapsam olurmu
ZAMAN_YAZ:
         MEM=sn:gosub TERSCEVIR:sn=SAYI
         MEM=DAK:gosub TERSCEVIR:DAK=SAYI
         MEM=SAAT:gosub TERSCEVIR:SAAT=SAYI
         MEM=GUN:gosub TERSCEVIR:GUN=SAYI
         MEM=AY:gosub TERSCEVIR:AY=SAYI
         MEM=YIL:gosub TERSCEVIR:YIL=SAYI
         MEM=HAFTA:GOSUB TERSCEVIR:HAFTA=SAYI

    high  RTC_RST
SHIFTOUT RTC_DTA, RTC_CLK, 0, [$8E, 0]    'WRT Protek açıldı
     low RTC_RST:PAUSEUS 10
    high RTC_RST         
SHIFTOUT RTC_DTA, RTC_CLK, 0, [$BE, SN, DAK, SAAT,GUN , AY, 0, YIL, HAFTA 128]  'YAZ
     low RTC_RST
PAUSEUS 10
  return
Başlık: Ynt: otomatik çiçek sulama projesi bazı sorunlar var lütfen yardım edin!
Gönderen: JKramer - 02 Temmuz 2010, 14:23:26
...
SHIFTOUT RTC_DTA, RTC_CLK, 0, [$BE, SN, DAK, SAAT,GUN , AY, HAFTA, YIL, 128]  'YAZ
...

Kataloğun yine aynı sayfasına bakarsanız değişkenlerin yazma/okuma sırasını görebilirsiniz. "HAFTA"nın "AY" ile "YIL" arasında olması gerekiyor.
Başlık: Ynt: otomatik çiçek sulama projesi bazı sorunlar var lütfen yardım edin!
Gönderen: Mucit23 - 02 Temmuz 2010, 14:36:01
JKramer;
Sana ne kadar teşekkür etsem azdır Allah senden razı olsun sayende bir sürü şey öğrendim şimdi saatle gün yazma ve okumayla ilgili hiçbir sorunum kalmadı tekrardan teşekkür ederim şimdilik yaptığım projede iki adet sorunum kaldı birisi ısı ölçme sorunu diğeri röle çıkış ile ilgili eğer onlarıda çözersem benim için çok iyi olacak

ısı ölçmeyi ise bi türlü anlam veremiyorum ısı ölçme kodları aşağıdaki gibidir kodlar ete hocaya aittir
SENSOROKU:
           OWOUT   Comm_Pin, 1, [$CC, $44]' ISI değerini oku
Bekle:
           OWIN    Comm_Pin, 4, [Busy]    ' Busy değerini oku
           IF      Busy = 0 THEN Bekle    ' hala meşgulmü? , evet ise goto Bekle..!
           OWOUT   Comm_Pin, 1, [$CC, $BE]' scratchpad memory oku
           OWIN    Comm_Pin, 2, [HAM.Lowbyte, HAM.Highbyte]' İki byte oku ve okumayı bitir.
           GOSUB   Hesapla
           RETURN
Hesapla:                 ' Ham değerden Santigrat derece hesabı
    ISARET  = "+"
    IF ISARET_BITI = EKSI_ISI THEN
       ISARET   = "-" 
       ham=~ham+2
    endif
    float = (HAM*10)/16        '
    ISI=FLOAT/10 
    RETURN 


öncede ısı ölçümü çalışıyordu herşey normaldi ne olduysa bugün oldu

ana programdaki döngü ise şu şekilde yapmışım

BASLA:
    GOSUB ZAMAN_OKU
    GOSUB SENSOROKU
    GOSUB EKRANAYAZ
    GOSUB ZAMANA_BAK
   
    IF MENU=1 THEN
    WHILE MENU=1:WEND
    GOTO AYAR_MENUSU
    ENDIF
GOTO BASLA


ekrana yazdırma kısmında ise

LCDOUT $FE,$80,ISARET,DEC ISI,",",DEC1 (Float),Derece,"C  ",DEC2 SAAT,":",DEC2 DAK,":",DEC2 SN

bu şekilde yaptım ama ısı -0,1 derecede kalıyor sizce sebebi ne olabilir bunun
Başlık: Ynt: otomatik çiçek sulama projesi bazı sorunlar var lütfen yardım edin!
Gönderen: Mucit23 - 02 Temmuz 2010, 15:26:18
Arkadaşlar ne yaptıysam sorunu çözemedim ısı hep -0,1 derece gösteriyor bunun sebebi ne olabilir sizce
Başlık: Ynt: otomatik çiçek sulama projesi bazı sorunlar var lütfen yardım edin!
Gönderen: JKramer - 02 Temmuz 2010, 15:34:34
Önceden çalışan program çalışmamaya başladıysa dediğiniz gibi son yaptığınız değişikliktendir :). Sorunun nerede olduğunu bulabilmek için sadece sensör okuma ve ekrana yazma kalsın, diğerlerini geçici olarak iptal edin.
Başlık: Ynt: otomatik çiçek sulama projesi bazı sorunlar var lütfen yardım edin!
Gönderen: Mucit23 - 05 Temmuz 2010, 16:05:39
merhabalar jkramer
dediğini uyguladım programda sadece ısı okuma bölümünü bıraktım ama değişen bişey olmadı malesef yine eski sorun var enlayamadım gitti acaba başka ne yapabilirim
Başlık: Ynt: otomatik çiçek sulama projesi bazı sorunlar var lütfen yardım edin!
Gönderen: Mucit23 - 05 Temmuz 2010, 16:26:43
merhabalar Jkramer sorunu çözdüm
sorun bendeymiş program bazı yerlerde çok köyüleşiyor diye programda osc frekansını 8 mhz ama şemadaki kristalin frekansı ve picin çalışma frekansı 4mhz ye ayarlımış bu yüzden saat normal ilerliyor ama ısı göstergesi -0,1 derece gösteriyordu bende tüm frekansları 8 mhz yapınca bu sefer ısı ölçümü normale döndü fakat bu seferde saat yavaşladı  aynı şekilde tüm frekansları 4 mhz yapınca yine aynı şekilde davranıyor saatin yavaşlaması benim için çok kötü oluyor acaba normal yaşamdada saatr böyle geç çalışırmı yoksa normal olarakmı çalışır bu konuda bana ne önerirsin
Başlık: Ynt: otomatik çiçek sulama projesi bazı sorunlar var lütfen yardım edin!
Gönderen: JKramer - 05 Temmuz 2010, 16:38:33
Saatin yavaşlaması simulasyondandır, gerçek devrede doğru çalışacağını düşünüyorum. Hatta simulasyonda doğru çalışması için DS18b20'yi geçici olarak iptal edip deneyebilirsiniz ama çok da vakit kaybetmeyin artık, bence devreyi toplayın.
Başlık: Ynt: otomatik çiçek sulama projesi bazı sorunlar var lütfen yardım edin!
Gönderen: Mucit23 - 05 Temmuz 2010, 16:43:57
haklı olabilirsiniz erken zamanda pcb çizimlerine başlamayı düşünüyorum
tek bir sorunum kaldıu oda röle kontrolü hakkında ilk yazımda ayrıntılı bir bilgi vemiştim
Alıntı Yapprogramdada anlaşılacağı gibi röleyi kontrol etmek için aşağıdaki komutları kullandım

ZAMANA_BAK:
READ $0,SAYI
READ $1,PTESI:IF PTESI=255 THEN PTESI=0
READ $2,SALI:IF SALI=255 THEN SALI=0
READ $3,CARS:IF CARS=255 THEN CARS=0
READ $4,PERS:IF PERS=255 THEN PERS=0
READ $5,CUMA:IF CUMA=255 THEN CUMA=0
READ $6,CTESI:IF CTESI=255 THEN CTESI=0
READ $7,PAZAR:IF PAZAR=255 THEN PAZAR=0

IF SAYI=1 THEN
   IF (PTESI=1)AND SAAT1=SAAT AND DAK1=DAK AND SN=0 THEN HIGH ROLE
   IF (SALI=1) AND SAAT1=SAAT AND DAK1=DAK AND SN=0 THEN HIGH ROLE
   IF (CARS=1) AND SAAT1=SAAT AND DAK1=DAK AND SN=0 THEN HIGH ROLE
   IF (PERS=1) AND SAAT1=SAAT AND DAK1=DAK AND SN=0 THEN HIGH ROLE
   IF (CUMA=1) AND SAAT1=SAAT AND DAK1=DAK AND SN=0 THEN HIGH ROLE
   IF (CTESI=1) AND SAAT1=SAAT AND DAK1=DAK AND SN=0 THEN HIGH ROLE
   IF (PAZAR=1) AND SAAT1=SAAT AND DAK1=DAK AND SN=0 THEN HIGH ROLE
ENDIF 
RETURN 

burada sayı değişkeni pompanın açıkmı kapalımı olduğunu temsil ediyor eğer birse açık sıfırsa pompa kapalıdır
günler i açıklamak gerekirse eğer gün birse o gün sulama yapılır sıfırsa sulama yapılmaz yani menüde onay işareti koymaklar günün 1 veya sıfır olmasını değiştiriyorduk .Motoru kontrol etmek için bu kodları kullandım ama devreyi ilk çalıştırdığımızda hemen röle çekiyor
ve bir sonraki dakikada pompa kaç saniye çalışacaksa o kadar çalışıp röle bırakıyor ayrıca günlerede uymuyor diyelimki sadece pazartesi günü çalışması gerekiyorsa pazartesi dahil hergün boyunca ayarladığım saatte çalışıyor program nedense birtek ayarladığım saat ve dakikayı dikkate alıyor diğer durumları pass geçiyor anlayamadım gitti

sorun aynı şekilde devam ediyor acaba ıf sorgulamasınımı yanlış yapıyorum anlayamadım nasıl çözebilirim acaba bu sorunu
Başlık: Ynt: otomatik çiçek sulama projesi bazı sorunlar var lütfen yardım edin!
Gönderen: ete - 05 Temmuz 2010, 20:11:47
Aslında IF satırları doğru çalışıyor.
Başla satırından önce zaman okuması yapmadığından ilk açılışta saat=0, saat1=0 dak=0 ve dak1=0 olduğu için direk gidip röleyi çalıştırıyor. Ama sonra zaman doğru okununca röle açık kalıyor ve bir daha ancak kapanma zamanında kapanıyor sanırım.
Yapılacak işi Başla satırından önce hatta sensör okumadan önce GOSUB ZAMAN_OKU şeklinde bir komut ilave etmen gerek.

Ete
Başlık: Ynt: otomatik çiçek sulama projesi bazı sorunlar var lütfen yardım edin!
Gönderen: Mucit23 - 07 Temmuz 2010, 13:46:51
Merhabalar ete hocam
Sorunu şimdi çözdüm programda ilk başlangıçta sizin dediğiniz gibi zaman okuma bölümüne yönlendirdim ama röleyi kontrol etmeyle ilgili komut bence yinede eksikti çünkü röleyi açmak için haftanın günlerine bakmıyordu önceden sadece hangi gün sulama yapılacak, saate ve dakikaya bakıyordu böyle olunca saat ve dakika ayarladaığım değerlerle eşitlenince hanggi gün olursa olsun o an röleyi açıyordu şimdi kodları aşağıdaki gibi yapınca hiç bir sorun kalmadı tam zamanında röleyi kontrol ediyor
ZAMANA_BAK:
READ $0,SAYI
READ $1,PTESI:IF PTESI=255 THEN PTESI=0
READ $2,SALI:IF SALI=255 THEN SALI=0
READ $3,CARS:IF CARS=255 THEN CARS=0
READ $4,PERS:IF PERS=255 THEN PERS=0
READ $5,CUMA:IF CUMA=255 THEN CUMA=0
READ $6,CTESI:IF CTESI=255 THEN CTESI=0
READ $7,PAZAR:IF PAZAR=255 THEN PAZAR=0

IF SAYI=1 THEN
   IF HAFTA=1 AND PTESI=1 AND SAAT1=SAAT AND DAK1=DAK AND SN=0 THEN HIGH ROLE
   IF HAFTA=2 AND SALI=1 AND SAAT1=SAAT AND DAK1=DAK AND SN=0 THEN HIGH ROLE
   IF HAFTA=3 AND CARS=1 AND SAAT1=SAAT AND DAK1=DAK AND SN=0 THEN HIGH ROLE
   IF HAFTA=4 AND PERS=1 AND SAAT1=SAAT AND DAK1=DAK AND SN=0 THEN HIGH ROLE
   IF HAFTA=5 AND CUMA=1 AND SAAT1=SAAT AND DAK1=DAK AND SN=0 THEN HIGH ROLE
   IF HAFTA=6 AND CTESI=1 AND SAAT1=SAAT AND DAK1=DAK AND SN=0 THEN HIGH ROLE
   IF HAFTA=7 AND PAZAR=1 AND SAAT1=SAAT AND DAK1=DAK AND SN=0 THEN HIGH ROLE
ENDIF 
RETURN         

size danışmak istediğim bi konu daha var şu saatin geç ilerlemesiyle ilgili bu konuyla ilgili bana önereceğiniz bişey varmı yani biliyorum simülasyonla gereçk hayat çok farklı acaba gereçk hayattada bu sorun yaşanırmı
ben şöyle bi deneme yaptım programdaki osc değerini 8 mhz ye çıkartıp simülasyondaki kristal değerleride 4 mhz olunca saat çok normal çalışıyor ama bu sefer derecede -0,1 derecede kalıyor dderece kısmı çalışmıyor ama hem osc değerini hemde şemadaki kristal değerlerini 8 mehz veya 4 mhz yapınca yine eskisi gibi saat yavaş derece düzgün çalışıyor bunun sebeni ne olabilir acaba yani normalde kristal değerini 8 yaparsak saattaki yavaşlama sorunu çözülürmü
Başlık: Ynt: otomatik çiçek sulama projesi bazı sorunlar var lütfen yardım edin!
Gönderen: ete - 07 Temmuz 2010, 14:48:42
Saatin geç ilerlemesi simulasyondandır. Anlamak için;
İsis ekranının en altında gerçek zaman saati bulunmaktadır. Kısaca zaman artımı oradan takip edilebilir.
Saniye artışı orası ile aynı ise gerçekte sorunsuz çalışacak anlamınadır.
Gerçek devrede bakmadan saating geç ilerlediği hakkında hüküm verme bence. Bu sık sık olan bir şeydir.
İsis gerçekten bir sürü işi bir arada ypmakta bazen süre onun için yetersiz kalmaktadır. Olayın takibi ise gerçek zaman saatinden yapılabilir.

Ete

Başlık: Ynt: otomatik çiçek sulama projesi bazı sorunlar var lütfen yardım edin!
Gönderen: Mucit23 - 07 Temmuz 2010, 14:56:56
Hocam simülasyonda devreye ilk enerji verdiğim zaman bilgisayarın saatini alıyor ona göre ilerliyor ama isisin altındaki kronometre gibi bişey galiba
bide devreyi ilk çalıştırdığımızda DS1302 clock diye ufak bir pencere açılıyor oarda ds1302 içerisindeki saat ve tarih bilgilerini gösteriyor eğer dediğiniz şey buysa ozaman gerçekte doğru çalışır çünkü bu küçük pencerede yazanlarla lcd ekranda yazan saat bilgileri aynı
Başlık: Ynt: otomatik çiçek sulama projesi bazı sorunlar var lütfen yardım edin!
Gönderen: ete - 07 Temmuz 2010, 18:07:18
Aşağıda kronometre gibi şey dediğin şey aslında gerçek zaman saatidir. Orda saniyenin bir artması demek gerçek zamanda program çalıştığında 1 sn geçecek anlamındadır. Bazen oradaki sn değeri kolundaki saate nazaran 3 sn de bir sn bazen 5 sn de bir saniye atar. Bunun anlamı simulasyon yavaş çalışıyor ancak gerçekte normal çalışacak demektir.

Sen dosyaları bana bir yolla ben bakayım.

Ete
Başlık: Ynt: otomatik çiçek sulama projesi bazı sorunlar var lütfen yardım edin!
Gönderen: Mucit23 - 10 Temmuz 2010, 17:04:25
merhabalar ete hocam kusura bakmayın cevap yazmakta biraz geciktim
hocam dosyaları bu adresten indirebilirsiniz
http://s1.dosya.tc/HyNkxG/_i_eksulama.rar.html
Başlık: Ynt: otomatik çiçek sulama projesi bazı sorunlar var lütfen yardım edin!
Gönderen: ete - 10 Temmuz 2010, 18:13:39
Aslında önceki dosya bende var idi oradan baktım. Dediğim gibi sistem saati normal çalışıyor. Anlayacağın gerçek devre doğru çalışacak. Aşağıda gördüğün gerçek zaman saatidir ve o saat DS1302 ile doğru çalışıyor.

Ete
Başlık: Ynt: otomatik çiçek sulama projesi bazı sorunlar var lütfen yardım edin!
Gönderen: Mucit23 - 12 Temmuz 2010, 14:31:20
tamam hocam teşekkürler devrenin pcb sini çiziyorum en kısa zzamanda devreyi kuracam
Sağlıcakla kalın :)
Başlık: Ynt: otomatik çiçek sulama projesi bazı sorunlar var lütfen yardım edin!
Gönderen: Mucit23 - 13 Temmuz 2010, 14:37:37
merhabalar hocam size sormak istediğim bişey daha var projem ile ilgili görüşlerinizi almak istiyorum gerek program yazma mantığı gerekse devrenin çalışması ile ilgili sizce ne olsaydı güzel olurdu.Biliyorum sizin program yazma mantığınız çok farklı çok karmaşık işleri bile kısa yollardan halledebiliyorsunuz.Bu özelliğiniz benim çok hoşuma gidiyor nede olsizin sayenizde öğrendim program yazmayı şimdide ufak tefek işlerle uğraşıyorum .
Başlık: Ynt: otomatik çiçek sulama projesi bazı sorunlar var lütfen yardım edin!
Gönderen: ete - 13 Temmuz 2010, 14:45:49
Aslında bu soruyu cevaplayacak kadar çok detaylı incelemedim bu programı.
Ancak yinede söyleyebileceğim bir şey var. Programda hem değişken kullanılıyor hemde bu değişkendeğerleri eeproma kayıt ediliyor.
Değişken değeri zaten hafızada iken birkerede eepromdan okunuyor ve o şekilde kullanılıyor. Keşke bu kadar eeproma yazılıp okunan bir program olmasaydı diyorum. Benim kullanmadığım ve kullanmakda istemediğim bir mantık bu. Eepromların belirli sayıda yazma ömrü olduğunu düşünürsek programın çalışması anında bir çok kereler eeproma yazılıp okunmaktdaır. Bu eepromun ömrünü kısa sürede bitirebilir diye düşünüyorum. Birde lüzumsuz geciklemelere sebep olan bir husus.

Ete
Başlık: Ynt: otomatik çiçek sulama projesi bazı sorunlar var lütfen yardım edin!
Gönderen: Mucit23 - 13 Temmuz 2010, 15:27:56
tamam hocam teşekkürler
Başlık: Ynt: otomatik çiçek sulama projesi bazı sorunlar var lütfen yardım edin!
Gönderen: Mucit23 - 15 Temmuz 2010, 12:40:44
merhabalar hocam nasılsınız iyimisiniz
hocam geçen gün kuluçka makinamdan ilk civcivler çıktı :)
Ama bu sefer verim çok kötü oldu :( 10 yumurtadan sadece 5i çıkabildi :( buduruma biraz üzüldüm doğrusu civcivleri o halde görmek insanı üzüyor .
Bende hemen sebebini araştırmaya koyuldum
makina içerisinde yumurtalıkların üzerine çeşitli termometreler koyup ısı öçümleri aldım ve sonuç genelde devrenin gösterdiği ısıdan 2-3 derece düşük kalıyor bunun sebebide aslında basit makinada ısıtıcılar çalışınca ısınan hava makinanın üst taraflarına doğru ilerliyor sht 11 de üst taraflarda olduğu için makina nomalden daha yüksek ölçüyor.Ben çözümümü buldum, aslında sht 11 i alt tarafa alınarak belki sorun çözülebilir ama bence böyleside verimli olmaytacaktır.Bunun yerine devreye 1 adet DS18B20 daha ekledim.burada sorun yok.Şimdi makinanın iki yn tarafında iki adet fan var makina içerisindeki hava silkülasyonunu sağlamak için yapmak istediğim şey iki sensör arasındaki ısı farkı sıfır olanakadar yandaki fanlar çalışacak alt ve üst ısılar eşitlenince yandaki fanlar kapanacak aslında hasasiyet ayarıda eklenebilir buna ama hassaiyetin nasılyapıldığını bilmiorum.diğer karşılaştırma işlemini yapabilirim.
Set değeri ise bu iki sensörün ortalaması alınarak çıkan değerle karşılaştırılacak işte burada tıkandım kaldım ortalama için nasıl bir formül kullanmalıyım bunu bilmiyorum
ben örnek olarak şöyle bir uygulama yaptım ;Diyelimki iki adet ISI1 ve ISI2 adında değişkenimizolsun bunlar sensörlere ait ısı bilgilerini tutuyor biz ikisinin ortalamasını almak için aşağıdaki gibi bi formül kullanabilirmiyim

ORTISI=(ISI1*10)+(ISI2*10)/20  gibi bi formül kullansam aslında oluyor ama pic ondalıklı işlemleri yapmıyor net değeri veriyor acaba ondalıklı bi işlem yapabilmek için nasıl bi formul kullanmalıyım.

Şimdilik devreyi çok geliştirecem tam otomatik bir sistem haline getirecem elimde bir sürü malzeme var onları değerlendiriyorum. LCD boyutunu 20x4 lcd yapıcam eğer aşağıdakinin bir 20x4 lcd olduğunu düşünürsek aklımda şöyle bi ekran görüntüsü var

                                   Ü=25,7  A=23,8  S=37,8
                                   ORTISI=24,7    NEM%70
                                   SAAT 12:12:00   01.GUN
                                   TARIH 01/01/10    CTESI

Biraz açıklamak gerekirse
Ü= üst ısı
A= alt ısı
S= ısı set değeri
ortısı=ortalama ısı

bu işe çok heves verdim umarım projemi sağ sağlim bitiririm
Ayrıca işlemci olarak verim açısından 18F452 ye geçmek istiyorum elimde bu işlemciden çok var kristal frekansınıda 20 mhz ye çıkartmayı düşünüyorum çünkü ana programda birçok gosub komutu olduğu için ana menüye girmek için butona biraz basılı tutmak gerekiyor .

micro code studioda 18 f serisi için bi program yazmak için mpasm ile bi bağlantı kurmak gerekiyor bunun nasıl yapıldığını bilmiyorum daha önce hiç 18 f serisi için bi program yazmadım bunun nasıl yapıldığınıda eğerbi bilginiz varsa söylerseniz çok memnun olurum.

Umarım sizi çok rahatsız etmiyorumdur gözümde çok değerlisiniz benim için bi isteğiniz olursa herzaman budayım.
Lazımsa civcivde gönderebilirim sizin o civcivlerde emeğiniz çok :)
Başlık: Ynt: otomatik çiçek sulama projesi bazı sorunlar var lütfen yardım edin!
Gönderen: ete - 15 Temmuz 2010, 14:38:17
Öncelikle hemen belirteyim farklı sensörler sıcaklık oynamalarına farklı tepki verirler. Ancak stabil ortamda aynı sıcaklığı gösterebilirler. Bu nedenle bana kalırsa ortalama vermek yerine aralık vermek daha uygun olur gibime geliyor.
Örnek vermek gerekir ise ;
IF ALTISI=>(USTISI-1) AND ALTISI<=(USTISI+1) THEN
   FAN=0
ELSE
   FAN=1
ENDIF
Rakamla açıklamak gerekir ise ALTISI 24 derece ise ÜSTISI 23-24-25 derecelerde iken fan çalışmayacak bunun dışındaki derecelerde fan çalışacaktır.
Bir derecelik fark hem altta hem üstte fanın sürekli dur kalk yapmasını önleyecek ve nispeten sıcaklığı sabit tutmaya çalışmasına sebep olacaktır.
Başka bir deyişle, alt ısı 23 derece ye gelince fan duracak ve bu durma üst ısı ile alt ısıs arasındaki farkın 3 dereceyi aşmasına kadar devam edecektir.

Başka bir yöntemde fark alarak işlem yapılabilir. FARK isimli değişken WORD tipinde olacak
FARK=USTISI-ALTISI
IF FARK.Bit15=1 then FARK=~FARK  (Şayet USTISI<ALTISI ise FARK=ALTISI-USTISI demek gerekir ki bu komut bu işlemi yerine getiriyor)
IF FARK>2 then '(ben fark olarak 2 kabul ettim sen 3 yada 4 yada 1 alabilirsin)
   FAN=1
ELSE
   FAN=0
ENDIF
belkide bu daha iyi bir yöntemdir. Denemek gerekir.

Gelelim ondalık meselesine. Hesaplanmış bir ısıs değerini 10 ile çarparak ondalık işlemi yapamazsın. Asıl işlem sensörden ilk sıcaklığı hesaplarken sonuç 10 ile çarpılmış olarak bulunmalıdır. Dolayısıyla karşılaştırmalar bu değerler üzerinden yapılırsa ondalıkl aişlem yapmış olacaksın. Bunada örnek vereyim.
Üst sensör bilgisini 238 (aslında 23,8 derece) olarak hesapladın. Alt sensör bilgisinide 224 olarak hesapladın. Burada karşılaştırmalar 238 ve 224 ile yapılarak ondalıklarıda devreye almış olursun. SOnuç olarak,  IF 23,8>22,4 demek ile if 238>224 demek arasında fark yoktur.

Ete
Başlık: Ynt: otomatik çiçek sulama projesi bazı sorunlar var lütfen yardım edin!
Gönderen: Mucit23 - 15 Temmuz 2010, 14:45:30
Tamam hocam dediklerinizi çok iyi anladım ne yapacağımı biliyorum
Peki şu 18F serisi için program yazma hakkında bilginiz varmıydı nasıl yapmam gerekiyor
Başlık: Ynt: otomatik çiçek sulama projesi bazı sorunlar var lütfen yardım edin!
Gönderen: ete - 15 Temmuz 2010, 14:56:09
18F serisi için yapılacak işlem sırası ile şöyle,

Önce aşağıdaki sigorta ayarlarını programın başına ekle,
'    device, 18F452
asm
    __CONFIG _CONFIG1H, _OSCS_OFF_1H & _HS_OSC_1H
    __CONFIG _CONFIG2L, _BOR_On_2L & _BORV_20_2L & _PWRT_OFF_2L
    __CONFIG _CONFIG2H, _WDT_ON_2H & _WDTPS_128_2H
    __CONFIG _CONFIG3H, _CCP2MX_On_3H
    __CONFIG _CONFIG4L, _STVR_ON_4L & _LVP_OFF_4L & _DEBUG_OFF_4L
    __CONFIG _CONFIG5L, _CP0_OFF_5L & _CP1_OFF_5L & _CP2_OFF_5L & _CP3_OFF_5L
    __CONFIG _CONFIG5H, _CPB_OFF_5H & _CPD_OFF_5H
    __CONFIG _CONFIG6L, _WRT0_OFF_6L & _WRT1_OFF_6L & _WRT2_OFF_6L & _WRT3_OFF_6L
    __CONFIG _CONFIG6H, _WRTC_OFF_6H & _WRTB_OFF_6H & _WRTD_OFF_6H
    __CONFIG _CONFIG7L, _EBTR0_OFF_7L & _EBTR1_OFF_7L & _EBTR2_OFF_7L & _EBTR3_OFF_7L
    __CONFIG _CONFIG7H, _EBTRB_OFF_7H
endasm

20 MHz kristale göre verdim ayarları. daha düşük kullanırsan HS yerine XT seçilmesi gerekir.

Sonra MCS de  View menüsünde "Compile & Program Options" seçeneğini seç
Gelen ekranda ortada yer alan Assembler butonuna tıkla ve çıkan ekranda  Use MPASM kutucuğuna tıklayarak seçili hale getir.
Bundan sonra derlediğin işlemci 18F serisi olmalıdır. Diğer işlemciler için bu seçeneği yeniden iptal edip eskiye dönmelisin.
Bu şekilde programı derleyebilirsin.

Bir önceki mesajımda bir fark alma seçeneği daha ilave ettim gözünden kaçtı ise yeniden bakıver.

Ete
Başlık: Ynt: otomatik çiçek sulama projesi bazı sorunlar var lütfen yardım edin!
Gönderen: Mucit23 - 15 Temmuz 2010, 15:00:31
tamam hocam dediklerinizi anladım aslında ikinci formül birazdaha kafama yattı gerçi en iyisini deneyerek bulacağım elbette
18 f serisi için program yazmayıda anladım sigorta ayrları felan tabi bunun için bilgisayarda mpasm yüklü olması lazım galiba
Başlık: Ynt: otomatik çiçek sulama projesi bazı sorunlar var lütfen yardım edin!
Gönderen: ete - 15 Temmuz 2010, 15:07:27
Makinanda Proteus yüklü ise onun Tools klasörün de MPASM klasörü mevcuttur.  Orayı gösterebilirsin.
Ben onu kullanırım daima.

Ete
Başlık: Ynt: otomatik çiçek sulama projesi bazı sorunlar var lütfen yardım edin!
Gönderen: Mucit23 - 15 Temmuz 2010, 16:18:19
hocam dediğiniz gibi yaptım derleyebiliyorum fakat program nedense çalışmıyor anlayamadım program derlenirken birsürü asm hatası veriyor
ama hexe çeviriyor nerede hata yapmış olabilirim hocam dosyaları ekliyeyim müsaitseniz bi bakın

sigorta ayarları aşağıdaki gibi
asm
       __CONFIG _CONFIG1H, _OSCS_OFF_1H & _XT_OSC_1H     
       __CONFIG _CONFIG2L, _BOR_On_2L & _BORV_20_2L & _PWRT_OFF_2L   
       __CONFIG _CONFIG2H, _WDT_ON_2H & _WDTPS_128_2H   
       __CONFIG _CONFIG3H, _CCP2MX_On_3H   
       __CONFIG _CONFIG4L, _STVR_ON_4L & _LVP_OFF_4L & _DEBUG_OFF_4L   
       __CONFIG _CONFIG5L, _CP0_OFF_5L & _CP1_OFF_5L & _CP2_OFF_5L & _CP3_OFF_5L   
       __CONFIG _CONFIG5H, _CPB_OFF_5H & _CPD_OFF_5H   
       __CONFIG _CONFIG6L, _WRT0_OFF_6L & _WRT1_OFF_6L & _WRT2_OFF_6L & _WRT3_OFF_6L   
       __CONFIG _CONFIG6H, _WRTC_OFF_6H & _WRTB_OFF_6H & _WRTD_OFF_6H   
       __CONFIG _CONFIG7L, _EBTR0_OFF_7L & _EBTR1_OFF_7L & _EBTR2_OFF_7L & _EBTR3_OFF_7L   
       __CONFIG _CONFIG7H, _EBTRB_OFF_7H

endasm

ama programın başına sizin gönderdiğiniz gibi device 18F452 yazınca orada hata veriyor

dosyalar
http://s1.dosya.tc/ieJ2ug/kulu_kaikisens_rl.rar.html
Başlık: Ynt: otomatik çiçek sulama projesi bazı sorunlar var lütfen yardım edin!
Gönderen: ete - 15 Temmuz 2010, 19:01:06
MPASM kullanınca işin içine protokol giriyor. Nedir bu dersen, P18F452.INC dosyasında sigorta ayarları ne şekilde yer alıyorsa senin programdakilerde aynı olmalı.
Bu yüzden ben hemen P18F452.INC dosyasına baktım (MPASM klasöründe yer almaktadır sonlara bakman gerek).
Bizim listede On yazan yer orada ON şeklinde yazılmış ve MPASM bunu hata olarak nitelendiriyor.
Bu hataları düzeltince hatasız derledi bende. Benim verdiğim liste Proteus 7.6 SP2 de yer alan MPASM ile ilgili idi.

asm   
       __CONFIG _CONFIG1H, _OSCS_OFF_1H & _XT_OSC_1H   
       __CONFIG _CONFIG2L, _BOR_ON_2L & _BORV_20_2L & _PWRT_OFF_2L       
       __CONFIG _CONFIG2H, _WDT_ON_2H & _WDTPS_128_2H     
       __CONFIG _CONFIG3H, _CCP2MX_OFF_3H 
       __CONFIG _CONFIG4L, _STVR_ON_4L & _LVP_OFF_4L & _DEBUG_OFF_4L   
       __CONFIG _CONFIG5L, _CP0_OFF_5L & _CP1_OFF_5L & _CP2_OFF_5L & _CP3_OFF_5L   
       __CONFIG _CONFIG5H, _CPB_OFF_5H & _CPD_OFF_5H   
       __CONFIG _CONFIG6L, _WRT0_OFF_6L & _WRT1_OFF_6L & _WRT2_OFF_6L & _WRT3_OFF_6L   
       __CONFIG _CONFIG6H, _WRTC_OFF_6H & _WRTB_OFF_6H & _WRTD_OFF_6H   
       __CONFIG _CONFIG7L, _EBTR0_OFF_7L & _EBTR1_OFF_7L & _EBTR2_OFF_7L & _EBTR3_OFF_7L   
       __CONFIG _CONFIG7H, _EBTRB_OFF_7H
endasm

Bu arada program isimlerinde Türkçe karekter kullanma ayrıca program adlarında iki kelime arasında boşluk olmasın alttan çizgi ile birleştir en azından. CIFT_SENSOR şeklinde

Bu arada LCD portun program ile verdiğin şemada çakışmıyor. Birinde PortB şemada ise PortC kullanılmış. Bunları yada benzer hataları düzeltmen gerek.
Ete
Başlık: Ynt: otomatik çiçek sulama projesi bazı sorunlar var lütfen yardım edin!
Gönderen: Mucit23 - 20 Temmuz 2010, 16:17:08
merhabalar ete hocam kusura bakmayın mesaj yazmakta biraz geciktim
Hocam hala olmadı ben proteus 7.6 sp0 kullanıyorum sorun bundan olabilir diye microchipten mpasm indirip kurdum ve mcs ye gösterdim ama yine derlemedi hata veriyor nerede hata yapıyorum anlayamadım

bide şu ortalama alma işini anlayamadım sadece net ısı değerlerinin ortalamasını alabiliyorum ama virgülden sonraki değerle birlikte nasılortalama alınır bilmiyorum acaba virgülden önceki değerle sonraki değerlerin ayrı ayrımı ortalaması alınması gerek bu konuda bana yardımcı olurmusunuz sizin bildiğiniz bi formül varmı
Başlık: Ynt: otomatik çiçek sulama projesi bazı sorunlar var lütfen yardım edin!
Gönderen: ete - 20 Temmuz 2010, 19:19:37
Mucit,

Öncelikle nasıl bi,r hata çıkıyor görmem gerekiyor. Ona göre sorunu bulabiliriz. Yoksa tarifle bulmak zor. Gerekirse otur yaz yada ekran resmini kayıt et ve yolla bana.

Ortalama alma işine gelince, söylemiştim ondalıklı haneyide hesaba katmak istersen programındaki ısı hesp alt programına göre açıklama yapacağım.
Aşağıdaki satırlara bakarsan yanına' ********* şeklinde işaret koyduğum satırda ısı değerinin 10'a bölünmemiş hali yer almaktadır. İşte bu değeri kullanırsan ondalık hanesinide hesaba katmış olursun. Aynı şeyi diğer sensör içinde yapabilirsin aynı mantık 18B20 sensörünün hesabında da mevcut.
           T1=(-4000+RAW)/100
           T2=((-4000+RAW)//100)/10

Bu örnekte SHT11 den sıcaklık okuması yapılıyor ve sıcaklık değeri tam sayı kısmı T1 ve ondalık kısmıda T2 değişkenlerine yarleştiriliyor.
RAW değerinin 7550 olduğunu var sayarsak;
T1=(-4000+7550)/100=35 değerini buluruz. Bu hesabı şöyle yaparsak;
T1=(-4000+7550)/10= 355 değerini buluruz. İşte bizim ondalık hanesinide hesaba katacağımız değer bu olacaktır.
Çünki normal hesapta sıcaklık 35,5 derece olarak bulunacak idi. Bu şekilde elimizde 355 değeri bulunmakta ve bunu kullanarak ondalık hesabınıda devreye almış olacağız.

İstersen DS18B20 hesabınıda vereyim, Formülü ISI=HAM/16 şeklinde kullanırsak direk sıcaklığın tam sayı kısmını elde ederiz.
Ama şöyle kullanırsak;
ISI = (HAM*10)/16   sıcaklığın 10 ile çarpılmış halini dolayısıyla ondalık kısmınıda kullanmış oluruz. Dikkat edersen ham değeri 10 ile çarptığımız için ondalık hesabını yapabiliriz değilse seıcaklığı 10 kat artırmış oluruz yalnızca. Ama formatımız bu şekilde olmalıdır.

Ete
Başlık: Ynt: otomatik çiçek sulama projesi bazı sorunlar var lütfen yardım edin!
Gönderen: Mucit23 - 23 Temmuz 2010, 15:31:43
Merhabalar ete hocam hocam ortalama alma işini anladım artık buradan sorunum yok artık gerisin ben yaparım
18F derleme sorunuyla ilgilide hatanın resmini çekip vereyim 18F serisi için basit bi  program yazdım
http://img94.imageshack.us/img94/2137/adszsae.jpg
Başlık: Ynt: otomatik çiçek sulama projesi bazı sorunlar var lütfen yardım edin!
Gönderen: Mucit23 - 23 Temmuz 2010, 15:38:08
Bide hocam size RB0 kesmesiyle ilgili bi sorum vardı şimdi kuluçka makinası projesinde  ana programda çok fazla gosub komutu olduğu için yani program çok fazla şeye baktığı için menu tuşuna basar basmaz menüye girmiyor en az 3-4 saniye basılı tutmamız gerekiyorki girsin bu çok sinir bozucu bişey
Bende şöyle bişey yaptım menu tuşunu portb.0 a bağladım bu şekilde Rb0 kesmesiyle programı mana menü bölümüne yönlendirdim burada sorunum yoktu menude kesme pasif durumda olacak yine menü tuşunu normal olarak kullanmayı düşünüyordum menüye girebiliyorum ama menüden çıkamıyorum menüden çıktığım anda tekrar kesme oluşuyor ve yine menüye giriyor yani kesme oluşuyor bunu önlemek için ne yapmalıyım kesme ile ana menüye girdiğimde kesme pasif olacak ana menüde çıkıpm ana programa gere döndüğümde tekrar kesme aktif hale gelmesi lazım sizin bu konuda bi fikriniz varmı
Başlık: Ynt: otomatik çiçek sulama projesi bazı sorunlar var lütfen yardım edin!
Gönderen: ete - 23 Temmuz 2010, 17:17:55
Öncelikle 18F derleme ile ilgili problemini çözmeye çalışalım.
MCS de sanki yeni bir bas dosyası yüklermiş gibi,
PBP klasörü içinde bulunan 18F452,INC dosyasını yükle,
Muhtemelen aşağıdaki dosya ekrana gelecektir.
;****************************************************************
;*  18F452.INC                                                  *
;*                                                              *
;*  By        : Leonard Zerman, Jeff Schmoyer                   *
;*  Notice    : Copyright (c) 2005 microEngineering Labs, Inc.  *
;*              All Rights Reserved                             *
;*  Date      : 12/16/05                                        *
;*  Version   : 2.47                                            *
;*  Notes     :                                                 *
;****************************************************************
        NOLIST
    ifdef PM_USED
        LIST
        "Error: PM does not support this device.  Use MPASM."
        NOLIST
    else
        LIST
        LIST p = 18F452, r = dec, w = -311, w = -230, f = inhx32
        INCLUDE "P18F452.INC"   ; MPASM  Header
;        __CONFIG    _CONFIG1H, _OSCS_OFF_1H & _XT_OSC_1H
;        __CONFIG    _CONFIG2H, _WDT_ON_2H & _WDTPS_128_2H
;        __CONFIG    _CONFIG4L, _LVP_OFF_4L
        NOLIST
    endif
        LIST
EEPROM_START EQU 0F00000h
BLOCK_SIZE EQU 8

Bu dosyada görülen __CONFIG ..... ile başlayan bütün satırları yukarıda da gördüğün şekilde satır başına ; koyarak iptal et (silme)
sonra aynı dosyayı tekrar geri kayıt et.
Derleme esnasında hem bu INC dosyası hemde Proteusdaki INC dosyası kullanıldığı için çift işlem oluyor. Bu nedenle PBP içindeki config ayarlarını kapatıyoruz.

RB0 kesmesi kullanımına gelince, Programı vermemişsin bu nedenle sanal olarak yorum yapacağım.
Öncelikle Kesme alt programından ana program içine yönlendirme yapılamaz. RESUME (Etiket) şeklinde bir çıkış yapılabilir. Ancak pek tavsiye etmem. Bunun yerine bir işaret biti kullanırsan daha iyi çalışır.
PortB0 kesmesine girilince Menü (veya başka bir bit değişkenini set et (Menu=1) . Daha sonra kesmeden (RB0 kesme bayrağını sıfırlayarak) çık. Çalıştığın program içinde şayet Menu=1 ise Goto ANAMENU gibi bir satır ekle. Bu şekilde kesme içinde menüye dönüleceğini bir bit değişkeni ile belirlemiş olursun.
Programda da yapılan iş bitince ana menüye dönülmüş olur.

Kesme den sonra yeniden kesme oluşması demek kesme bayrağının sıfırlanmaması demektir yada yeniden kesme oluşturacak bir sebep yaratılmış demektir. Bu ihtimalleride elemelisin.

Ete
Başlık: Ynt: otomatik çiçek sulama projesi bazı sorunlar var lütfen yardım edin!
Gönderen: Mucit23 - 23 Temmuz 2010, 18:28:54
Hocam Allah sizden razı olsun siz olmasaydınız bunu çözmem imkansızdı.
şimdi hiç sorun çıkartmadan Derleniyor..

kuluçka makinasının ise son haliyle vereyim
'****************************************************************
'*  Name    : KULUÇKA.BAS                                      *
'*  Author  : [select VIEW...EDITOR OPTIONS]                    *
'*  Notice  : Copyright (c) 2010 [Desıgn by Ferhat YOL]         *
'*          : All Rights Reserved                               *
'*  Date    : 21.07.2010                                        *
'*  Version : 2.0                                               *
'*  Notes   :Bu program Kuluçka makinesi için Ferhat YOL        *
'*           Tarafından yazılmıştır                           *                                 
'****************************************************************
DEFINE OSC 8
@ DEVICE pic16F877
@ DEVICE pic16F877, WDT_ON
@ DEVICE pic16F877, PWRT_ON
@ DEVICE pic16F877, PROTECT_OFF
@ DEVICE pic16F877, XT_OSC

TRISA=%111111
TRISB=%00000001
TRISC=%11110000
PORTA=0
PORTB=0
PORTC=0

DEFINE LCD_DREG PORTB
DEFINE LCD_DBIT 4
DEFINE LCD_RSREG PORTB
DEFINE LCD_RSBIT 2
DEFINE LCD_EREG PORTB
DEFINE LCD_EBIT 3
DEFINE LCD_BITS 4
DEFINE LCD_LINES 4
ADCON1 = 7     
'---------------------------değişkenler-----------------------------------------
    A        VAR    BYTE
    D        VAR    BYTE
    E        var    byte
    SYC      VAR    BYTE
    AY       var    byte
    YIL      var    byte
    SN       VAR    BYTE
    DAK      VAR    BYTE
    SAAT     VAR    BYTE
    HAFTA    VAR    BYTE
    GUN      VAR    BYTE
    GUN1     VAR    BYTE
    MEM      var    byte
    ONLAR    VAR    BYTE
    BIRLER   VAR    BYTE
    Y        VAR    BIT
    SAYAC    VAR    BYTE
    AYAR     VAR    BYTE
    TERM     VAR    BYTE
    NEM      VAR    BYTE
    KONTROL  VAR    BYTE
    ORTAK    VAR    BYTE    
    ISI1     VAR    BYTE       
    ISI2     VAR    BYTE       
    U1       VAR    BYTE         
    U2       VAR    BYTE
    C0       VAR    BYTE
    Z        VAR    BYTE
    SAYI     VAR    BYTE
    SAY      VAR    BYTE
    ZAM      VAR    BYTE
    H0       VAR    HAMISI.BYTE0
    H1       VAR    HAMISI.BYTE1
    HAMISI VAR    WORD
    RAW      var    word
    ISISHT   VAR    WORD
    RUT      VAR    WORD
    P1       VAR    WORD
    P2       VAR    WORD
    P3       VAR    WORD             
    C        VAR    WORD
    B        VAR    WORD
    W        VAR    WORD
    ORTAISI  VAR    WORD
    FARK     VAR    WORD
    DUR      VAR    BYTE
    CLK     VAR     PORTA.5
    DTA     VAR     PORTA.3 
    ISARETSHT  VAR     BIT   'sensor değeri 0 ise artı, 1 ise eksi
    SIGN    VAR     BIT      'ısı isareti 0 ise artı 1 ise eksi
    HATA    var     BIT
    MENU    VAR     PORTB.0
    CIKIS   VAR     PORTA.0
    YUKARI  VAR     PORTA.1
    ASAGI   VAR     PORTA.2
   
        'ISI
Busy        VAR BIT         ' Busy Status-Bit
HAM         VAR WORD        ' Sensör HAM okuma değeri
ISI         VAR WORD        ' Hesaplanmış ISI değeri
Float       VAR WORD        ' Holds remainder for + temp C display
X           VAR WORD       
ISARET_BITI   VAR HAM.Bit11   '   +/- sıcaklık İşaret biti,  1 = olursa eksi sıcaklık
EKSI_ISI   CON 1           ' Sıfır altında isaret biti=1  oluyor kontrol için
DERECE     CON 223         ' ° işareti
ISARET     VAR BYTE        '  ISI değeri için  +/-  işaret
TEMP        VAR BYTE       ' Div32 bit hesap için geçici değişken
SYMBOL COMM_PIN=PORTB.1   ' One-wire Data-Pin "DQ" PortB.0 da

   
    symbol ROLE1=PORTC.0
    symbol ROLE2=PORTC.1
    symbol ROLE3=PORTC.2
    SYMBOL ROLE4=PORTC.3
    SYMBOL BUZER=PORTC.7
   
    RTC_RST     var PORTC.5
    RTC_CLK     var PORTC.6
    RTC_DTA     var PORTC.4
'-----------------------------B A Ş L A N G I Ç ------------------------------   
          LOW ROLE1
          LOW ROLE2
          LOW ROLE3
        PAUSE 20
    ' CLEAR: 'TRISA=%00111111:TRISB=0
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       
         PAUSE 500:ISARET=0
        LCDOUT $FE,$40,$6,$9,$9,$6,$0,$0,$0,$0        'derece işareti dataları   
        LCDOUT $FE,$48,$04,$0e,$0e,$0e,$1f,$04,$04,$0
        LCDOUT $FE,$50,10,0,17,17,17,17,14,0 'LCD 2. KARAKTER HAFIZASI Ü HARFİ
        LCDOUT $FE,$58,16,8,4,2,4,8,16,0     'LCD 3. KARAKTER HAFIZASI YON İŞARETİ   
GIRIS:
         LCDOUT $FE,$82, "OTOMATIK KULUCKA"           
         lcdout $FE,$C5,"MAKINESI"
         lcdout $FE,$95,"TASARIM ve YAZILIM"
         lcdout $FE,$D9,"FERHAT YOL"
         PAUSE 2000
         LCDOUT $FE,1
         
'-------------------------------------------------------------------------------
BASLANGIC:
READ $07,GUN:IF GUN=255 THEN GUN=1
READ $01,TERM:IF TERM=255 THEN TERM=0
READ $09,DUR:IF DUR=255 THEN DUR=0
READ $02,NEM:IF NEM=255 THEN NEM=0
READ $0,SAYI:IF SAYI=255 THEN SAYI=0
READ $10,ZAM:IF ZAM=255 THEN ZAM=0
READ $11,A:IF A=255 THEN A=1
gosub ZAMAN_OKU
           HIGH BUZER:PAUSE 50:LOW BUZER

           
BASLA: 
              KONTROL=%00000011:HAMISI=0   'SICAKLIK ÖLÇME
        GOSUB OLCUMAL
        Gosub ISIHESAP
              KONTROL=%00000101:HAMISI=0 'RUTUBET ÖLÇME
        GOSUB OLCUMAL
        GOSUB RUTHESAP:GOSUB SENSOROKU
        GOSUB ORTISI:GOSUB EKRAN1
        GOSUB HAVAKONTROL
        GOSUB ISIKONTROL
        GOSUB RUTKONTROL
        IF MENU=1 THEN AYARMENUSU
       
goto BASLA       
'---------------------------------------EKRANA YAZ -----------------------------
EKRAN1:
         GOSUB ZAMAN_OKU
         GOSUB DONUSEBAK
         GOSUB GUNEBAK
        lcdout $FE,$80,2,"=",DEC2 ISI1,",",DEC1 ISI2," A=",DEC2 ISI,",",DEC1 (FLOAT)," S=",DEC2 TERM,",",DEC1 A
        lcdout $FE,$C0,"ORTISI=",DEC2 ORTAISI,0,"C  NEM=%",DEC2 U1
        LCDOUT $FE,$94,"SAAT ",DEC2 SAAT,":",DEC2 DAK,":",DEC2 SN," ",DEC2 GUN,".GUN"
        LCDOUT $FE,$D4,"TARIH ",DEC2 GUN1,"/",DEC2 AY,"/",DEC2 YIL
            IF SN=DUR THEN LOW ROLE3
            IF SAAT=0 AND DAK=0 AND SN=0 THEN
               GUN=GUN+1
            IF GUN=31 THEN GUN=1
            WRITE $07,GUN
         ENDIF
        RETURN
'''''''''''''''''MOTOR ÇALIŞ '''''''''''''''''             
DONUSEBAK:
         
         READ $10,ZAM
         IF ZAM=255 THEN ZAM=1
         
                 IF ZAM=1 AND DAK=0 AND SN=0 THEN
                 HIGH ROLE3
                 ENDIF

        IF ZAM=2 THEN
                 
                 IF SAAT=0 AND DAK=0 AND sn=0 THEN
                 HIGH ROLE3
                 ENDIF               
                 
                 IF SAAT=2 AND DAK=0 AND sn=0 THEN
                 HIGH ROLE3
                 ENDIf                 
                 
                 IF SAAT=4 AND DAK=0 AND sn=0 THEN
                 HIGH ROLE3
                 ENDIF               
                 
                 IF SAAT=6 AND DAK=0 AND sn=0 THEN
                 HIGH ROLE3
                 ENDIF                 

                 IF SAAT=8 AND DAK=0 AND sn=0 THEN 
                 HIGH ROLE3
                 ENDIF

                 IF SAAT=10 AND DAK=0 AND sn=0 THEN 
                 HIGH ROLE3
                 ENDIF               

                 IF SAAT=12 AND DAK=0 AND sn=0 THEN 
                 HIGH ROLE3
                 ENDIF               

                 IF SAAT=14 AND DAK=0 AND sn=0 THEN 
                 HIGH ROLE3
                 ENDIF           

                 IF SAAT=16 AND DAK=0 AND sn=0 THEN 
                 HIGH ROLE3
                 ENDIF                 

                 IF SAAT=18 AND DAK=0 AND sn=0 THEN 
                 HIGH ROLE3
                 ENDIF             

                 IF SAAT=20 AND DAK=0 AND sn=0 THEN 
                 HIGH ROLE3
                 ENDIF

                 IF SAAT=22 AND DAK=0 AND sn=0 THEN 
                 HIGH ROLE3
                 ENDIF
        ENDIF
       
        IF ZAM=3 THEN
                 IF SAAT=0 AND DAK=0 AND sn=0 THEN
                 HIGH ROLE3
                 ENDIF               
                 
                 IF SAAT=3 AND DAK=0 AND sn=0 THEN
                 HIGH ROLE3
                 ENDIf                 
                 
                 IF SAAT=6 AND DAK=0 AND sn=0 THEN
                 HIGH ROLE3
                 ENDIF               
                 
                 IF SAAT=9 AND DAK=0 AND sn=0 THEN
                 HIGH ROLE3
                 ENDIF                 
                 
                 IF SAAT=12 AND DAK=0 AND sn=0 THEN 
                 HIGH ROLE3
                 ENDIF
                   
                 IF SAAT=15 AND DAK=0 AND sn=0 THEN 
                 HIGH ROLE3
                 ENDIF               
                 
                 IF SAAT=18 AND DAK=0 AND sn=0 THEN 
                 HIGH ROLE3
                 ENDIF               
                 
                 IF SAAT=21 AND DAK=0 AND sn=0 THEN 
                 HIGH ROLE3
                 ENDIF
        ENDIF
                           
        IF ZAM=4 THEN
                 IF SAAT=0 AND DAK=0 AND sn=0 THEN
                 HIGH ROLE3
                 ENDIF               
                 
                 IF SAAT=4 AND DAK=0 AND sn=0 THEN
                 HIGH ROLE3
                 ENDIf                 
                 
                 IF SAAT=8 AND DAK=0 AND sn=0 THEN
                 HIGH ROLE3
                 ENDIF               
                 
                 IF SAAT=12 AND DAK=0 AND sn=0 THEN
                 HIGH ROLE3
                 ENDIF                 
                 
                 IF SAAT=16 AND DAK=0 AND sn=0 THEN 
                 HIGH ROLE3
                 ENDIF
                 
                 IF SAAT=20 AND DAK=0 AND sn=0 THEN 
                 HIGH ROLE3
                 ENDIF           
        ENDIF
       
             
RETURN

GUNEBAK:
SELECT CASE HAFTA
CASE 1
LCDOUT $FE,$E3,"PTESI"
CASE 2
LCDOUT $FE,$E3," SALI"
CASE 3
LCDOUT $FE,$E3," CARS"
CASE 4
LCDOUT $FE,$E3," PERS"
CASE 5
LCDOUT $FE,$E3," CUMA"
CASE 6
LCDOUT $FE,$E3,"CTESI"
CASE 7
LCDOUT $FE,$E3," PAZR"
END SELECT
RETURN
 
SENSOROKU:
           OWOUT   Comm_Pin, 1, [$CC, $44]' ISI değerini oku
Bekle:
           OWIN    Comm_Pin, 4, [Busy]    ' Busy değerini oku
           IF      Busy = 0 THEN Bekle    ' hala meşgulmü? , evet ise goto Bekle..!
           OWOUT   Comm_Pin, 1, [$CC, $BE]' scratchpad memory oku
           OWIN    Comm_Pin, 2, [HAM.Lowbyte, HAM.Highbyte]' İki byte oku ve okumayı bitir.
           GOSUB   Hesapla
           RETURN
Hesapla:                 ' Ham değerden Santigrat derece hesabı
    ISARET  = "+"
    IF ISARET_BITI = EKSI_ISI THEN
       ISARET   = "-" 
       ham=~ham+2
    endif
    float = (HAM*10)/16        '
    ISI=FLOAT/10 
    RETURN 
'------------------------------- İŞLEM START -----------------------------------
T_START:
      OUTPUT DTA:OUTPUT CLK
        HIGH DTA
         LOW CLK
       PAUSE 1
        HIGH CLK
         LOW DTA
       PAUSE 1
         LOW CLK
       PAUSE 1
        HIGH CLK
       PAUSE 1
        HIGH DTA
         LOW CLK
RETURN
'-----------------------SENSORE KOMUT GÖNDER -----------------------------------
OLCUMAL:
           GOSUB T_Start
        SHIFTOUT DTA,CLK,1,[KONTROL]
           INPUT DTA
         PULSOUT CLK,10
                 HATA=0
             FOR W=0 to 65500
              IF DTA=0 then GIT
            NEXT W
                 HATA=1
GIT:         
              IF HATA=1 then
           endif
         SHIFTIN DTA,CLK,0,[H1]
          OUTPUT DTA
             LOW DTA
         PULSOUT CLK,10
           INPUT DTA
         SHIFTIN DTA,CLK,0,[H0]
         PULSOUT CLK,10
RETURN
'----------------------ISI HESAP ALT PROGRAMI-----------------------------------     
ISIHESAP: 
           If HAMISI<4000 then
              ISARETSHT=1 'sıcaklık eksi değerde demek
              ISI1=(4000-HAMISI)/100
              ISI2=((4000-HAMISI)//100)/10   
         goto ISISON
        endif
              ISI1=(HAMISI-4000)/100
              ISI2=((HAMISI-4000)//100)/10
ISISON:   
           
           ISI1=(HAMISI-4000)/100
           ISI2=((HAMISI-4000)//100)/10
RETURN       
'-------------------------RUTUBET HESAP ALT PROGRAMI----------------------------
RUTHESAP:
              'ISI=ISI1*10+ISI2
              p1=(26542-(54722**HAMISI+hamISI))**HAMISI-25     
              P2=655+(HAMISI*5)+(HAMISI**15917)      
              P3=(P2**(ISISHT*10+2480))-(P2**2730)+P1   
              U1=p3/10:U2=p3//10
           IF HAMISI>3710 THEN
              U1=0:U2=0
        ENDIF 
return

ORTISI:
ORTAISI=(ISI1*10+ISI*10)/20
RETURN
'----------------------------ISI KONTROL----------------------------------------
ISIKONTROL:
         if TERM<ISI then   
          LOW Role1
        ENDIF
        if ISI<TERM then         
         HIGH ROLE1               
       Endif
           
RETURN
'----------------------------RUTKONTROL-----------------------------------------         
RUTKONTROL:
           if NEM<U1 then   
         HIGH Role2
         ELSE               
          LOW ROLE2
        ENDIF
RETURN

HAVAKONTROL:
FARK=ISI1-ISI
IF FARK.Bit15=1 then FARK=~FARK
IF FARK>1 then
   ROLE4=1
ELSE
   ROLE4=0
ENDIF

RETURN
'-------------------------------------------------------------------------------
AYARMENUSU:
       WHILE MENU=1:WEND
       GOSUB TEMIZLE
SYC=0
AYARLAR:
IF YUKARI=1 THEN
WHILE YUKARI=1:WEND
SYC=SYC+1
  IF SYC=6 THEN SYC=0
ENDIF

IF ASAGI=1 THEN
WHILE ASAGI=1:WEND
SYC=SYC-1
  IF SYC=255 THEN SYC=5
ENDIF
GOSUB DURUM
IF CIKIS=1 THEN GOTO BASLANGIC
GOTO AYARLAR

DURUM:
SELECT CASE SYC
CASE 0
lcdout $fe,$c0,"  ISITICI AYARLARI  "
LCDOUT $FE,$94,"                    "
IF MENU=1 then
WHILE MENU=1:WEND
GOTO TERM_KONTROL
ENDIF
CASE 1
lcdout $fe,$c0,"    NEM AYALARI     "
LCDOUT $FE,$94,"                    "
IF MENU=1 then
WHILE MENU=1:WEND
GOTO NEM_KONTROL
ENDIF
CASE 2
lcdout $fe,$c0,"   CEViRiCi MOTOR   "
LCDOUT $FE,$94,"       AYARI       "
IF MENU=1 then
WHILE MENU=1:WEND
GOTO MOT_AYAR
ENDIF
CASE 3
lcdout $fe,$c0,"   SAAT-TARiH-GUN   "
LCDOUT $FE,$94,"        AYARI       "   
IF MENU=1 then
WHILE MENU=1:WEND
GOTO ZAMANAYARI
ENDIF
CASE 4
lcdout $fe,$C0,"   MANUEL OLARAK    "
lcdout $fe,$94,"   MOTORU CEVIRME   "
IF MENU=1 then
WHILE MENU=1:WEND
GOTO MANUEL
ENDIF
CASE 5
lcdout $fe,$c0,"     GUN AYARI      "
LCDOUT $FE,$94,"                    "     
IF MENU=1 then
WHILE MENU=1:WEND
GOTO GUNAYARI
ENDIF
END SELECT
RETURN

MANUEL:
GOSUB TEMIZLE
MANU:
lcdout $fe,$80,"MOTORU CALISTIRMAK "
LCDOUT $FE,$C0,"iCiN YUKLARIYA     "
LCDOUT $FE,$94,"BASINIZ...          "
       IF CIKIS=1 then             
        WHILE CIKIS=1:WEND
         GOTO AYARLANDI
        ENDIF

        IF YUKARI=1 THEN
         lcdout $fe,$D4,"MOTOR CALISIYOR  "
        HIGH ROLE3
        ELSE
        lcdout $fe,$D4,"MOTOR KAPALI    "
        LOW ROLE3
        ENDIF
       
GOTO MANU

GUNAYARI:
       GOSUB TEMIZLE
       WHILE MENU=1:WEND
       READ $07,GUN
GUNA:     
     LCDOUT $FE,$80,"GUNU AYARLA" 
     lcdout $FE,$C0,"GUN:",DEC2 GUN
     IF CIKIS=1 THEN AYARLANDI
        WHILE CIKIS=1:WEND
        IF YUKARI=1 THEN
        GUN=GUN+1
        IF GUN=31 THEN GUN=1
        WHILE YUKARI=1:WEND
        ENDIF
       
        IF ASAGI=1 THEN
        GUN=GUN-1
        IF GUN=255 THEN GUN=30
        WHILE ASAGI=1:WEND
        ENDIF
             
     GOTO GUNA         
''''''''''''''''''''''''''''''''''''''''         
MOT_AYAR:
        GOSUB TEMIZLE
        WHILE MENU=1:WEND
        READ $0,SAYI:SAYI=0
MOTOR_AYAR:

       lcdout $fe,$80,"MOTOR DURUMUNU"
       LCDOUT $FE,$C0,"SECINIZ..."
       lcdout $FE,$94,"  ACIK"
       LCDOUT $FE,$D4,"  KAPALI" 
           IF MENU=1 THEN M_ZAMANI
        WHILE MENU=1:WEND
           IF YUKARI=1 THEN
           SAYI=SAYI+1
           WHILE YUKARI=1:WEND
           ENDIF
           IF SAYI=2 THEN SAYI=0
           SELECT CASE SAYI
           CASE 0
           LCDOUT $FE,$94,3
           CASE 1
           LCDOUT $FE,$D4,3
           END SELECT
        GOTO MOTOR_AYAR         
M_CALISMA:
        GOSUB TEMIZLE
        WHILE MENU=1:WEND
        READ $09,DUR
MOTO_CALISMA:
           IF CIKIS=1 THEN AYARLANDI
        WHILE CIKIS=1:WEND
       lcdout $fe,$C0,"MOTOR CALISMA SURESi "
       lcdout $FE,$94,"SURE :",DEC2 DUR," SANIYE"
       
           IF YUKARI=1 THEN
           DUR=DUR+1
           WHILE YUKARI=1:WEND
           ENDIF   
           IF DUR=60 THEN DUR=0
           IF ASAGI=1 THEN
           DUR=DUR-1
           WHILE ASAGI=1:WEND
           ENDIF
           IF DUR=255 THEN DUR=59
         GOTO MOTO_CALISMA                         
M_ZAMANI:
        GOSUB TEMIZLE
        WHILE MENU=1:WEND
        READ $10,ZAM
MOTO_ZAMANI:
        IF ZAM=255 THEN ZAM=1
        IF YUKARI=1 THEN
        ZAM=ZAM+1
        WHILE YUKARI=1:WEND
        ENDIF
        IF ZAM=5 THEN ZAM=4
       
       
        IF ASAGI=1 THEN
        ZAM=ZAM-1
        WHILE ASAGI=1:WEND
        ENDIF
        IF ZAM=0 THEN ZAM=1       
        IF MENU=1 THEN M_CALISMA
       
        lcdout $fe,$C0,"MOTORU ",DEC1 ZAM," SAATTE"
        lcdout $FE,$94,"BiR CEViREYiM"
GOTO MOTO_ZAMANI

                                                                                 
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''   
AYARLANDI:
           IF MENU=1 then AYARLANDI
       lcdout $fe,1
       LCDOUT $FE,$C0,"AYARLAR KAYDEDiLDi.."
       WRITE $0,SAYI
       WRITE $10,ZAM
       WRITE $09,DUR
       WRITE $07,GUN
       WRITE $01,TERM
       WRITE $02,NEM
       WRITE $11,A
       AYAR=1
        PAUSE 1000
        GOSUB TEMIZLE
         goto AYARMENUSU       
TEMIZLE:
        lcdout $fe,1
RETURN       
'-------------------------------------------------------------------------------
TERM_KONTROL:
       GOSUB TEMIZLE       
SET_AYAR 
LCDOUT $FE,$C0,"ISI LiMiTiNi SECIN"
LCDOUT $FE,$94,"AYAR:",DEC2 TERM,",",DEC1 A         
           IF YUKARI=1 then
              A=A+1
                IF A=10 THEN
                A=0:TERM=TERM+1
                ENDIF
              IF TERM=100 THEN TERM=0
              PAUSE 150
           ENDIF
           IF ASAGI=1 then
              A=A-1
                IF A=255 then
                A=9:TERM=TERM-1
                ENDIF
              IF TERM=255 THEN TERM=99
              PAUSE 150
           ENDIF
               
           IF CIKIS=1 THEN
        WHILE CIKIS=1:WEND
         GOTO AYARLANDI
        ENDIF                 
GOTO SET_AYAR 
'-------------------------------------------------------------------------------
NEM_KONTROL:
       GOSUB TEMIZLE
NEM_KONT: 
       lcdout $fe,$C0,"NEM LiMiTi"
       lcdout $FE,$94,"AYARI:",DEC2 NEM
       
           IF YUKARI=1 then NEM=NEM+1
        WHILE YUKARI=1:WEND
           IF NEM=01 then NEM=121
           
           IF ASAGI=1 then NEM=NEM-1
        WHILE ASAGI=1:WEND
           IF NEM=121 then NEM=01       
           IF CIKIS=1 THEN
        WHILE CIKIS=1:WEND
         GOTO AYARLANDI
        ENDIF                 
         GOTO NEM_KONT
       RETURN
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''       
ZAMANAYARI:
GOSUB TEMIZLE
AYAR=1
ZAMANAYAR:
IF MENU=1 THEN
AYAR=AYAR+1
WHILE MENU=1:WEND
ENDIF
GOSUB BUTONOKU
        LCDOUT $FE,$80,"    ZAMAN AYARI     "       
        LCDOUT $FE,$94,"SAAT ",DEC2 SAAT,":",DEC2 DAK,":",DEC2 SN
        LCDOUT $FE,$D4,"TARIH ",DEC2 GUN1,"/",DEC2 AY,"/",DEC2 YIL
GOSUB GUNYAZ
IF AYAR=7 THEN ZAMAN_B
GOTO ZAMANAYAR
GUNYAZ:
SELECT CASE HAFTA
CASE 1
LCDOUT $FE,$E3,"PTESI"
CASE 2
LCDOUT $FE,$E3," SALI"
CASE 3
LCDOUT $FE,$E3," CARS"
CASE 4
LCDOUT $FE,$E3," PERS"
CASE 5
LCDOUT $FE,$E3," CUMA"
CASE 6
LCDOUT $FE,$E3,"CTESI"
CASE 7
LCDOUT $FE,$E3," PAZR"
END SELECT
RETURN

BUTONOKU:
SELECT CASE AYAR
CASE 1
LCDOUT $FE,$C0,"SAAT    "
IF YUKARI=1 THEN
WHILE YUKARI=1:WEND
SAAT=SAAT+1
IF SAAT=24 THEN SAAT=0
ENDIF
IF ASAGI=1 THEN
WHILE ASAGI=1:WEND
SAAT=SAAT-1
IF SAAT=255 THEN SAAT=23
ENDIF

CASE 2
LCDOUT $FE,$C0,"DAKIKA"
IF YUKARI=1 THEN
WHILE YUKARI=1:WEND
DAK=DAK+1
IF DAK=60 THEN DAK=0
ENDIF
IF ASAGI=1 THEN
WHILE ASAGI=1:WEND
DAK=DAK-1
IF DAK=255 THEN DAK=59
ENDIF

CASE 3
LCDOUT $FE,$C0,"GUN    "   
IF YUKARI=1 THEN
WHILE YUKARI=1:WEND
GUN1=GUN1+1
IF GUN1=31 THEN GUN=1
ENDIF
IF ASAGI=1 THEN
WHILE ASAGI=1:WEND
GUN1=GUN1-1
IF GUN1=0 THEN GUN1=30
ENDIF

CASE 4
LCDOUT $FE,$C0,"AY    "
IF YUKARI=1 THEN
WHILE YUKARI=1:WEND
AY=AY+1
IF AY=13 THEN AY=1
ENDIF
IF ASAGI=1 THEN
WHILE ASAGI=1:WEND
AY=AY-1
IF AY=0 THEN AY=12
ENDIF

CASE 5
LCDOUT $FE,$C0,"YIL      "
IF YUKARI=1 THEN
WHILE YUKARI=1:WEND
YIL=YIL+1
IF YIL=51 THEN YIL=5
ENDIF
IF ASAGI=1 THEN
WHILE ASAGI=1:WEND
YIL=YIL-1
IF YIL=4 THEN YIL=50
ENDIF

CASE 6
LCDOUT $FE,$C0,"HAFTA     "
IF YUKARI=1 THEN
WHILE YUKARI=1:WEND
HAFTA=HAFTA+1
IF HAFTA=8 THEN HAFTA=1
ENDIF
IF ASAGI=1 THEN
WHILE ASAGI=1:WEND
HAFTA=HAFTA-1
IF HAFTA=0 THEN HAFTA=7
ENDIF
END SELECT
RETURN


ZAMAN_B:
           IF MENU=1 then ZAMAN_B
           AYAR=1
        gosub ZAMAN_YAZ
        GOSUB TEMIZLE
        GOSUB AYARLANDI
         goto AYARMENUSU       
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
ZAMAN_OKU:
    high RTC_RST:OUTPUT RTC_DTA
shiftout RTC_DTA, RTC_CLK, 0, [$BF]:INPUT RTC_DTA
SHIFTIN RTC_DTA, RTC_CLK, 1, [SN, DAK, SAAT,GUN , AY, HAFTA, YIL, MEM]  'OKU
         MEM=SN:GOSUB CEVIR:SN=SAYI
         MEM=DAK:GOSUB CEVIR:DAK=SAYI
         MEM=SAAT:GOSUB CEVIR:SAAT=SAYI
         MEM=GUN:GOSUB CEVIR:GUN=SAYI
         MEM=AY:GOSUB CEVIR:AY=SAYI
         MEM=YIL:GOSUB CEVIR:YIL=SAYI
         MEM=HAFTA:GOSUB CEVIR:HAFTA=SAYI
     low RTC_RST
  return

ZAMAN_YAZ:
         MEM=sn:gosub TERSCEVIR:sn=SAYI
         MEM=DAK:gosub TERSCEVIR:DAK=SAYI
         MEM=SAAT:gosub TERSCEVIR:SAAT=SAYI
         MEM=GUN:gosub TERSCEVIR:GUN=SAYI
         MEM=AY:gosub TERSCEVIR:AY=SAYI
         MEM=YIL:gosub TERSCEVIR:YIL=SAYI
         MEM=HAFTA:GOSUB TERSCEVIR:HAFTA=SAYI

    high  RTC_RST
SHIFTOUT RTC_DTA, RTC_CLK, 0, [$8E, 0]    'WRT Protek açıldı
     low RTC_RST:PAUSEUS 10
    high RTC_RST         
SHIFTOUT RTC_DTA, RTC_CLK, 0, [$BE, SN, DAK, SAAT,GUN , AY, HAFTA, YIL, 128]  'YAZ
     low RTC_RST
PAUSEUS 10
  return

CEVIR:
         ONLAR=MEM & %01110000
         ONLAR=ONLAR>>4
         BIRLER=MEM & %00001111
         SAYI=ONLAR*10+BIRLER
  return

TERSCEVIR:
         ONLAR=MEM DIG 1
         ONLAR=ONLAR<<4
         BIRLER=MEM DIG 0
         SAYI=ONLAR+BIRLER
  return
 

END
   
     

Yanlız dediklerinizi pek anlayamadım nasıl yapacağımı bilmiyorum isterseniz bi programa bakın belki daha iyi bi yöntem söyleyebilirsiniz
Başlık: Ynt: otomatik çiçek sulama projesi bazı sorunlar var lütfen yardım edin!
Gönderen: ete - 23 Temmuz 2010, 18:41:54
Bu programda ben kesme göremedim acaba yanlış programmı verdin?
Üstelik programda o kadar çok pause varki bunu kesme kullanacak şekilde düzenlemek çok vakit alacak bir iş. Bütün o pauselerin yerine döngü şeklinde gecikme koyamk gerek. En büyük gecikme Pauseus 5 şeklinde olmalıki kesme alt programına çabuk girilebilsin aksi halde pauseler bitmeden kesme oluşmayacaktır. ANlayacağın kesme kullanman problemli olacak.
En iyisi menüye girişleri daha sık kontrol etmeye bak.

Ete
Başlık: Ynt: otomatik çiçek sulama projesi bazı sorunlar var lütfen yardım edin!
Gönderen: Mucit23 - 23 Temmuz 2010, 19:12:27
hocam doğru söylüyorsunuz en iyisi dediğiniz gibi daha çok menu giriş komutuna bakmak bunun içinde frekans yükseltilmeli ama frekansı yükselttiğimde yani 20 mhz düzelylerine çıkardığımda ne ds 18b20 çalışıyor nede sht11 hiçbirinde ölçüm yapılamıyor bunun sebebi ne olabilir sizce
Başlık: Ynt: otomatik çiçek sulama projesi bazı sorunlar var lütfen yardım edin!
Gönderen: ete - 24 Temmuz 2010, 08:34:23
Sensörler 20 Mhz de çalışır. Programa define osc 20 ilave etmen gerek. Ayrıca shift komutlarını yavaşlatacak define komutları var. Onalrıda ilave etmek gerekiyor programa. Define komutlarını incele istersen.
MCS de program yazarken Define yaz kursorü üzerine getir ve F1 tuşuna bas. Help ekranı karşına gelecektir.
Bu seçenek bütün komutlar için geçerli.

Ete
Başlık: Ynt: otomatik çiçek sulama projesi bazı sorunlar var lütfen yardım edin!
Gönderen: Mucit23 - 24 Temmuz 2010, 15:15:18
hocam son dediğinizi tam olrak anlayamadım tam olarak ne yapmam gerekiyor help menusunden defıne ile ilgili tüm komutları buldum bu komutlarla ne yapıcam
Başlık: Ynt: otomatik çiçek sulama projesi bazı sorunlar var lütfen yardım edin!
Gönderen: ete - 24 Temmuz 2010, 18:17:01
Define komutları içinde yalnızca shiftout YADA shiftin komutlarını yavaşlatacak komut mevcut buda;
DEFINE SHIFT_PAUSEUS 50 'Slow down the Shiftin and Shiftout clock
şeklinde kullanılıyor.
Ama esas ayarlamayı yapan Define OSC 20 komutudur.
Bu komutu ilave etmedi isen sensörler çalışmayabilir. Ama ilave edersen sorunsuz çalışırlar.

Ete
Başlık: Ynt: otomatik çiçek sulama projesi bazı sorunlar var lütfen yardım edin!
Gönderen: Mucit23 - 27 Temmuz 2010, 13:30:32
anlamıyorum hocam gerekli herşeyi yaptım ama nedense bi türlü programı yerine oturturamadım 20 mhz ye ayarladım ama nem sensörü çalışmıyor DS18B20 de yanlış ölçüyor çok yüksek gösteriyor yaptığım programın son olarak 20 mhz ye ayarlanmış haliye vereyim belki programla ilgili bi fikriniz veya tavsiyeniz olabilir
'****************************************************************
'*  Name    : KULUÇKA.BAS                                      *
'*  Author  : [select VIEW...EDITOR OPTIONS]                    *
'*  Notice  : Copyright (c) 2010 [Desıgn by Ferhat YOL]         *
'*          : All Rights Reserved                               *
'*  Date    : 21.07.2010                                        *
'*  Version : 2.0                                               *
'*  Notes   :Bu program Kuluçka makinesi için Ferhat YOL        *
'*           Tarafından yazılmıştır                           *                                 
'****************************************************************
DEFINE OSC 20
@ DEVICE pic16F877
@ DEVICE pic16F877, WDT_ON
@ DEVICE pic16F877, PWRT_ON
@ DEVICE pic16F877, PROTECT_OFF
@ DEVICE pic16F877, HS_OSC

TRISA=%111111
TRISB=%00000001
TRISC=%11110000
PORTA=0
PORTB=0
PORTC=0

DEFINE LCD_DREG PORTB
DEFINE LCD_DBIT 4
DEFINE LCD_RSREG PORTB
DEFINE LCD_RSBIT 2
DEFINE LCD_EREG PORTB
DEFINE LCD_EBIT 3
DEFINE LCD_BITS 4
DEFINE LCD_LINES 4
DEFINE LCD_COMMANDUS 2000
DEFINE LCD_DATAUS 50
DEFINE SHIFT_PAUSEUS 50
ADCON1 = 7     
'---------------------------değişkenler-----------------------------------------
    A        VAR    BYTE
    D        VAR    BYTE
    E        var    byte
    SYC      VAR    BYTE
    AY       var    byte
    YIL      var    byte
    SN       VAR    BYTE
    DAK      VAR    BYTE
    SAAT     VAR    BYTE
    HAFTA    VAR    BYTE
    GUN      VAR    BYTE
    MEM      var    byte
    ONLAR    VAR    BYTE
    BIRLER   VAR    BYTE
    GN       VAR    BYTE
    Y        VAR    BIT
    SY       VAR    BIT
    SAYI     VAR    BYTE
    SAYAC    VAR    BYTE
    AYAR     VAR    BYTE
    TERM     VAR    BYTE
    NEM      VAR    BYTE
    KONTROL  VAR    BYTE
    ORTAK    VAR    BYTE    
    ISI1     VAR    BYTE       
    ISI2     VAR    BYTE       
    U1       VAR    BYTE         
    U2       VAR    BYTE
    C0       VAR    BYTE
    Z        VAR    BYTE
    SAY      VAR    BYTE
    ZAM      VAR    BYTE
    H0       VAR    HAMISI.BYTE0
    H1       VAR    HAMISI.BYTE1
    HAMISI VAR    WORD
    RAW      var    word
    ISISHT   VAR    WORD
    RUT      VAR    WORD
    P1       VAR    WORD
    P2       VAR    WORD
    P3       VAR    WORD             
    C        VAR    WORD
    B        VAR    WORD
    W        VAR    WORD
    ORTAISI  VAR    WORD
    FARK     VAR    WORD
    DUR      VAR    BYTE
    CLK     VAR     PORTA.5
    DTA     VAR     PORTA.3 
    ISARETSHT  VAR     BIT   'sensor değeri 0 ise artı, 1 ise eksi
    SIGN    VAR     BIT      'ısı isareti 0 ise artı 1 ise eksi
    HATA    var     BIT
    MENU    VAR     PORTA.0
    YUKARI  VAR     PORTA.1
    ASAGI   VAR     PORTA.2
   
        'ISI
Busy        VAR BIT         ' Busy Status-Bit
HAM         VAR WORD        ' Sensör HAM okuma değeri
ISI         VAR WORD        ' Hesaplanmış ISI değeri
Float       VAR WORD        ' Holds remainder for + temp C display
X           VAR WORD       
ISARET_BITI   VAR HAM.Bit11   '   +/- sıcaklık İşaret biti,  1 = olursa eksi sıcaklık
EKSI_ISI   CON 1           ' Sıfır altında isaret biti=1  oluyor kontrol için
DERECE     CON 223         ' ° işareti
ISARET     VAR BYTE        '  ISI değeri için  +/-  işaret
TEMP        VAR BYTE       ' Div32 bit hesap için geçici değişken
SYMBOL COMM_PIN=PORTB.1   ' One-wire Data-Pin "DQ" PortB.0 da

   
    symbol ROLE1=PORTC.0
    symbol ROLE2=PORTC.1
    symbol ROLE3=PORTC.2
    SYMBOL ROLE4=PORTC.3
    SYMBOL BUZER=PORTC.7
   
    RTC_RST     var PORTC.5
    RTC_CLK     var PORTC.6
    RTC_DTA     var PORTC.4
'-----------------------------B A Ş L A N G I Ç ------------------------------   
          LOW ROLE1
          LOW ROLE2
          LOW ROLE3
        PAUSE 20
    ' CLEAR: 'TRISA=%00111111:TRISB=0
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       
         PAUSE 500:ISARET=0
        LCDOUT $FE,$40,$6,$9,$9,$6,$0,$0,$0,$0        'derece işareti dataları   
        LCDOUT $FE,$48,$04,$0e,$0e,$0e,$1f,$04,$04,$0
        LCDOUT $FE,$50,10,0,17,17,17,17,14,0 'LCD 2. KARAKTER HAFIZASI Ü HARFİ
        LCDOUT $FE,$58,16,8,4,2,4,8,16,0     'LCD 3. KARAKTER HAFIZASI YON İŞARETİ   
GIRIS:
         LCDOUT $FE,$82, "OTOMATIK KULUCKA"           
         lcdout $FE,$C5,"MAKINESI"
         lcdout $FE,$95,"TASARIM ve YAZILIM"
         lcdout $FE,$D9,"FERHAT YOL"
         PAUSE 2000
         LCDOUT $FE,1
         
'-------------------------------------------------------------------------------
BASLANGIC:
SYC=0
AYAR=1
READ $07,GN:IF GN=255 THEN GN=1
READ $01,TERM:IF TERM=255 THEN TERM=0
READ $09,DUR:IF DUR=255 THEN DUR=0
READ $02,NEM:IF NEM=255 THEN NEM=0
READ $12,SY
READ $10,ZAM:IF ZAM=255 THEN ZAM=0
READ $11,A:IF A=255 THEN A=1
gosub ZAMAN_OKU
                   
BASLA: 
              KONTROL=%00000011:HAMISI=0   'SICAKLIK ÖLÇME
        GOSUB OLCUMAL
        Gosub ISIHESAP
              KONTROL=%00000101:HAMISI=0   'RUTUBET ÖLÇME
        GOSUB OLCUMAL
        GOSUB RUTHESAP:GOSUB SENSOROKU
        GOSUB ORTISI
        GOSUB ZAMAN_OKU
        GOSUB GUNEBAK
        GOSUB EKRAN1
        GOSUB HAVAKONTROL
        GOSUB ISIKONTROL
        GOSUB RUTKONTROL
        IF SY=0 THEN
        GOSUB DONUSEBAK
        ENDIF
        IF MENU=1 THEN
        GOTO AYAR_MENUSU
        WHILE MENU=1:WEND
        ENDIF
       
goto BASLA       
'---------------------------------------EKRANA YAZ -----------------------------
EKRAN1:
        lcdout $FE,$80,2,"=",DEC2 ISI1,",",DEC1 ISI2," A=",DEC2 ISI,",",DEC1 (FLOAT)," S=",DEC2 TERM,",",DEC1 A
        lcdout $FE,$C0,"ORTISI=",DEC2 ORTAISI,0,"C  NEM=%",DEC2 U1
        LCDOUT $FE,$94,"SAAT ",DEC2 SAAT,":",DEC2 DAK,":",DEC2 SN," ",DEC2 GN,".GUN"
        LCDOUT $FE,$D4,"TARIH ",DEC2 GUN,"/",DEC2 AY,"/",DEC2 YIL
            IF SN=DUR THEN LOW ROLE3
            IF SAAT=0 AND DAK=0 AND SN=0 THEN
               GN=GN+1
            IF GN=31 THEN GN=1
            WRITE $07,GN
         ENDIF
        RETURN
'''''''''''''''''MOTOR ÇALIŞ '''''''''''''''''             
DONUSEBAK:
        'HER SAAT BAŞI ÇEVİR
                 IF ZAM=1 AND DAK=0 AND SN=0 THEN
                 HIGH ROLE3
                 ENDIF

        IF ZAM=2 THEN 'İKİ SAATTE BİR ÇEVİR
                 
                 IF SAAT=0 AND DAK=0 AND sn=0 THEN
                 HIGH ROLE3
                 ENDIF               
                 
                 IF SAAT=2 AND DAK=0 AND sn=0 THEN
                 HIGH ROLE3
                 ENDIf                 
                 
                 IF SAAT=4 AND DAK=0 AND sn=0 THEN
                 HIGH ROLE3
                 ENDIF               
                 
                 IF SAAT=6 AND DAK=0 AND sn=0 THEN
                 HIGH ROLE3
                 ENDIF                 

                 IF SAAT=8 AND DAK=0 AND sn=0 THEN 
                 HIGH ROLE3
                 ENDIF

                 IF SAAT=10 AND DAK=0 AND sn=0 THEN 
                 HIGH ROLE3
                 ENDIF               

                 IF SAAT=12 AND DAK=0 AND sn=0 THEN 
                 HIGH ROLE3
                 ENDIF               

                 IF SAAT=14 AND DAK=0 AND sn=0 THEN 
                 HIGH ROLE3
                 ENDIF           

                 IF SAAT=16 AND DAK=0 AND sn=0 THEN 
                 HIGH ROLE3
                 ENDIF                 

                 IF SAAT=18 AND DAK=0 AND sn=0 THEN 
                 HIGH ROLE3
                 ENDIF             

                 IF SAAT=20 AND DAK=0 AND sn=0 THEN 
                 HIGH ROLE3
                 ENDIF

                 IF SAAT=22 AND DAK=0 AND sn=0 THEN 
                 HIGH ROLE3
                 ENDIF
        ENDIF
       
        IF ZAM=3 THEN  '3 SAATTE BİR ÇEVİR
                 IF SAAT=0 AND DAK=0 AND sn=0 THEN
                 HIGH ROLE3
                 ENDIF               
                 
                 IF SAAT=3 AND DAK=0 AND sn=0 THEN
                 HIGH ROLE3
                 ENDIf                 
                 
                 IF SAAT=6 AND DAK=0 AND sn=0 THEN
                 HIGH ROLE3
                 ENDIF               
                 
                 IF SAAT=9 AND DAK=0 AND sn=0 THEN
                 HIGH ROLE3
                 ENDIF                 
                 
                 IF SAAT=12 AND DAK=0 AND sn=0 THEN 
                 HIGH ROLE3
                 ENDIF
                   
                 IF SAAT=15 AND DAK=0 AND sn=0 THEN 
                 HIGH ROLE3
                 ENDIF               
                 
                 IF SAAT=18 AND DAK=0 AND sn=0 THEN 
                 HIGH ROLE3
                 ENDIF               
                 
                 IF SAAT=21 AND DAK=0 AND sn=0 THEN 
                 HIGH ROLE3
                 ENDIF
        ENDIF
                           
        IF ZAM=4 THEN '4 SAATTE BİR ÇEVİR
                 IF SAAT=0 AND DAK=0 AND sn=0 THEN
                 HIGH ROLE3
                 ENDIF               
                 
                 IF SAAT=4 AND DAK=0 AND sn=0 THEN
                 HIGH ROLE3
                 ENDIf                 
                 
                 IF SAAT=8 AND DAK=0 AND sn=0 THEN
                 HIGH ROLE3
                 ENDIF               
                 
                 IF SAAT=12 AND DAK=0 AND sn=0 THEN
                 HIGH ROLE3
                 ENDIF                 
                 
                 IF SAAT=16 AND DAK=0 AND sn=0 THEN 
                 HIGH ROLE3
                 ENDIF
                 
                 IF SAAT=20 AND DAK=0 AND sn=0 THEN 
                 HIGH ROLE3
                 ENDIF           
        ENDIF         
RETURN

GUNEBAK:
SELECT CASE HAFTA
CASE 1
LCDOUT $FE,$E3,"PTESI"
CASE 2
LCDOUT $FE,$E3," SALI"
CASE 3
LCDOUT $FE,$E3," CARS"
CASE 4
LCDOUT $FE,$E3," PERS"
CASE 5
LCDOUT $FE,$E3," CUMA"
CASE 6
LCDOUT $FE,$E3,"CTESI"
CASE 7
LCDOUT $FE,$E3," PAZR"
END SELECT
RETURN
 
SENSOROKU:
           OWOUT   Comm_Pin, 1, [$CC, $44]' ISI değerini oku
Bekle:
           OWIN    Comm_Pin, 4, [Busy]    ' Busy değerini oku
           IF      Busy = 0 THEN Bekle    ' hala meşgulmü? , evet ise goto Bekle..!
           OWOUT   Comm_Pin, 1, [$CC, $BE]' scratchpad memory oku
           OWIN    Comm_Pin, 2, [HAM.Lowbyte, HAM.Highbyte]' İki byte oku ve okumayı bitir.
           GOSUB   Hesapla
           RETURN
Hesapla:                 ' Ham değerden Santigrat derece hesabı
    ISARET  = "+"
    IF ISARET_BITI = EKSI_ISI THEN
       ISARET   = "-" 
       ham=~ham+2
    endif
    float = (HAM*10)/16        '
    ISI=FLOAT/10 
    RETURN 
'------------------------------- İŞLEM START -----------------------------------
T_START:
      OUTPUT DTA:OUTPUT CLK
        HIGH DTA
         LOW CLK
       PAUSE 1
        HIGH CLK
         LOW DTA
       PAUSE 1
         LOW CLK
       PAUSE 1
        HIGH CLK
       PAUSE 1
        HIGH DTA
         LOW CLK
RETURN
'-----------------------SENSORE KOMUT GÖNDER -----------------------------------
OLCUMAL:
           GOSUB T_Start
        SHIFTOUT DTA,CLK,1,[KONTROL]
           INPUT DTA
         PULSOUT CLK,10
                 HATA=0
             FOR W=0 to 65500
              IF DTA=0 then GIT
            NEXT W
                 HATA=1
GIT:         
              IF HATA=1 then
           endif
         SHIFTIN DTA,CLK,0,[H1]
          OUTPUT DTA
             LOW DTA
         PULSOUT CLK,10
           INPUT DTA
         SHIFTIN DTA,CLK,0,[H0]
         PULSOUT CLK,10
RETURN
'----------------------ISI HESAP ALT PROGRAMI-----------------------------------     
ISIHESAP: 
           If HAMISI<4000 then
              ISARETSHT=1 'sıcaklık eksi değerde demek
              ISI1=(4000-HAMISI)/100
              ISI2=((4000-HAMISI)//100)/10   
         goto ISISON
        endif
              ISI1=(HAMISI-4000)/100
              ISI2=((HAMISI-4000)//100)/10
ISISON:   
           
           ISI1=(HAMISI-4000)/100
           ISI2=((HAMISI-4000)//100)/10
RETURN       
'-------------------------RUTUBET HESAP ALT PROGRAMI----------------------------
RUTHESAP:
              'ISI=ISI1*10+ISI2
              p1=(26542-(54722**HAMISI+hamISI))**HAMISI-25     
              P2=655+(HAMISI*5)+(HAMISI**15917)      
              P3=(P2**(ISISHT*10+2480))-(P2**2730)+P1   
              U1=p3/10:U2=p3//10
           IF HAMISI>3710 THEN
              U1=0:U2=0
        ENDIF 
return

ORTISI:
ORTAISI=(ISI1*10+ISI*10)/20
RETURN
'----------------------------ISI KONTROL----------------------------------------
ISIKONTROL:
         if TERM<ISI then   
          LOW Role1
        ENDIF
        if ISI<TERM then         
         HIGH ROLE1               
       Endif
           
RETURN
'----------------------------RUTKONTROL-----------------------------------------         
RUTKONTROL:
           if NEM<U1 then   
         HIGH Role2
         ELSE               
          LOW ROLE2
        ENDIF
RETURN

HAVAKONTROL:
FARK=ISI1-ISI
IF FARK.Bit15=1 then FARK=~FARK
IF FARK>1 then
   ROLE4=1
ELSE
   ROLE4=0
ENDIF

RETURN
'-------------------------------------------------------------------------------
AYAR_MENUSU:
WHILE MENU=1:WEND
GOSUB TEMIZLE
SYC=0
AYARLAR:
IF YUKARI=1 THEN
WHILE YUKARI=1:WEND
SYC=SYC+1
  IF SYC=7 THEN SYC=0
ENDIF

IF ASAGI=1 THEN
WHILE ASAGI=1:WEND
SYC=SYC-1
  IF SYC=255 THEN SYC=6
ENDIF
GOSUB DURUM
GOTO AYARLAR

DURUM:
SELECT CASE SYC
CASE 0
lcdout $fe,$c0,"  ISITICI AYARLARI  "
LCDOUT $FE,$94,"                    "
IF MENU=1 then
WHILE MENU=1:WEND
GOTO TERM_KONTROL
ENDIF
CASE 1
lcdout $fe,$c0,"    NEM AYALARI     "
LCDOUT $FE,$94,"                    "
IF MENU=1 then
WHILE MENU=1:WEND
GOTO NEM_KONTROL
ENDIF
CASE 2
lcdout $fe,$c0,"   CEViRiCi MOTOR   "
LCDOUT $FE,$94,"       AYARI       "
IF MENU=1 then
WHILE MENU=1:WEND
GOTO MOT_AYAR
ENDIF
CASE 3
lcdout $fe,$c0,"   SAAT-TARiH-GUN   "
LCDOUT $FE,$94,"        AYARI       "   
IF MENU=1 then
WHILE MENU=1:WEND
GOTO ZAMANAYARI
ENDIF
CASE 4
lcdout $fe,$C0,"   MANUEL OLARAK    "
lcdout $fe,$94,"   MOTORU CEVIRME   "
IF MENU=1 then
WHILE MENU=1:WEND
GOTO MANUEL
ENDIF
CASE 5
lcdout $fe,$c0,"     GUN AYARI      "
LCDOUT $FE,$94,"                    "     
IF MENU=1 then
WHILE MENU=1:WEND
GOTO GUNAYARI
ENDIF
CASE 6
lcdout $fe,$c0,"    MENUDEN CIKIS   "
LCDOUT $FE,$94,"                    "   
IF MENU=1 THEN BASLANGIC
END SELECT
RETURN

MANUEL:
GOSUB TEMIZLE
MANU:
lcdout $fe,$80,"MOTORU CALISTIRMAK "
LCDOUT $FE,$C0,"iCiN YUKLARIYA     "
LCDOUT $FE,$94,"BASINIZ...          "
       IF MENU=1 then
       GOTO AYAR_MENUSU 
       ENDIF         
       
        IF YUKARI=1 THEN
         lcdout $fe,$D4,"MOTOR CALISIYOR  "
        HIGH ROLE3
        ELSE
        lcdout $fe,$D4,"MOTOR KAPALI    "
        LOW ROLE3
        ENDIF
       
GOTO MANU

GUNAYARI:
       WHILE MENU=1:WEND
       GOSUB TEMIZLE
       READ $07,GN
GUNA:     
     LCDOUT $FE,$80,"GUNU AYARLA" 
     lcdout $FE,$C0,"GUN:",DEC2 GN
     IF MENU=1 THEN
      WRITE $07,GN:PAUSE 2
      GOTO AYAR_MENUSU
      ENDIF
     
        IF YUKARI=1 THEN
        GN=GN+1
        IF GN=31 THEN GN=1
        WHILE YUKARI=1:WEND
        ENDIF
       
        IF ASAGI=1 THEN
        GN=GN-1
        IF GN=0 THEN GN=30
        WHILE ASAGI=1:WEND
        ENDIF
             
     GOTO GUNA         
''''''''''''''''''''''''''''''''''''''''         
MOT_AYAR:
        WHILE MENU=1:WEND
        GOSUB TEMIZLE
        READ $12,SY
MOTOR_AYAR:
       lcdout $fe,$80,"MOTOR DURUMUNU"
       LCDOUT $FE,$C0,"SECINIZ..."
       lcdout $FE,$94,"  ACIK"
       LCDOUT $FE,$D4,"  KAPALI"
           IF MENU=1 THEN
           WRITE $12,SY:PAUSE 2
           GOTO M_ZAMANI
           ENDIF
           IF YUKARI=1 then SY=0
           IF ASAGI=1 THEN SY=1
           
           SELECT CASE SY
           CASE 0
           LCDOUT $FE,$94,3
           CASE 1
           LCDOUT $FE,$D4,3
           END SELECT
        GOTO MOTOR_AYAR         
M_CALISMA:
        GOSUB TEMIZLE
        WHILE MENU=1:WEND
        READ $09,DUR
MOTO_CALISMA:
           IF MENU=1 THEN
           WRITE $09,DUR:PAUSE 2
           GOTO AYAR_MENUSU 
           ENDIF
       lcdout $fe,$C0,"MOTOR CALISMA SURESi "
       lcdout $FE,$94,"SURE :",DEC2 DUR," SANIYE"
       
           IF YUKARI=1 THEN
           DUR=DUR+1
           WHILE YUKARI=1:WEND
           ENDIF   
           IF DUR=60 THEN DUR=0
           IF ASAGI=1 THEN
           DUR=DUR-1
           WHILE ASAGI=1:WEND
           ENDIF
           IF DUR=255 THEN DUR=59
         GOTO MOTO_CALISMA                         
M_ZAMANI:
        GOSUB TEMIZLE
        WHILE MENU=1:WEND
        READ $10,ZAM
MOTO_ZAMANI:
        IF ZAM=255 THEN ZAM=1
        IF YUKARI=1 THEN
        ZAM=ZAM+1
        WHILE YUKARI=1:WEND
        ENDIF
        IF ZAM=5 THEN ZAM=4
        IF ASAGI=1 THEN
        ZAM=ZAM-1
        WHILE ASAGI=1:WEND
        ENDIF
        IF ZAM=0 THEN ZAM=1       
        IF MENU=1 THEN
        WRITE $10,ZAM:PAUSE 2
        GOTO M_CALISMA
        ENDIF

        lcdout $fe,$C0,"MOTORU ",DEC1 ZAM," SAATTE BiR"
        lcdout $FE,$94,"CEVRiLSiN.."
GOTO MOTO_ZAMANI
                                                                               
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''   
AYARLANDI:
           IF MENU=1 then AYARLANDI
       lcdout $fe,1
       LCDOUT $FE,$C0,"AYARLAR KAYDEDiLDi.."
       AYAR=1
       SYC=0
        PAUSE 1000
        GOSUB TEMIZLE
        goto BASLANGIC       
TEMIZLE:
        lcdout $fe,1
RETURN       
'-------------------------------------------------------------------------------
TERM_KONTROL:
       GOSUB TEMIZLE
       READ $01,TERM:READ $11,A       
SET_AYAR: 
LCDOUT $FE,$C0,"ISI LiMiTiNi SECIN"
LCDOUT $FE,$94,"AYAR:",DEC2 TERM,",",DEC1 A         
           IF YUKARI=1 then
              A=A+1
                IF A=10 THEN
                A=0:TERM=TERM+1
                ENDIF
              IF TERM=100 THEN TERM=0
              PAUSE 150
           ENDIF
           IF ASAGI=1 then
              A=A-1
                IF A=255 then
                A=9:TERM=TERM-1
                ENDIF
              IF TERM=255 THEN TERM=99
              PAUSE 150
           ENDIF
               
         IF MENU=1 THEN
         WRITE $01,TERM:PAUSE 2
         WRITE $11,A:PAUSE 2
         GOTO AYAR_MENUSU
         ENDIF
                     
GOTO SET_AYAR 
'-------------------------------------------------------------------------------
NEM_KONTROL:
       GOSUB TEMIZLE
       READ $02,NEM
NEM_KONT: 
       lcdout $fe,$C0,"NEM LiMiTi"
       lcdout $FE,$94,"AYARI:",DEC2 NEM
       
           IF YUKARI=1 then NEM=NEM+1
        WHILE YUKARI=1:WEND
           IF NEM=01 then NEM=121
           
           IF ASAGI=1 then NEM=NEM-1
        WHILE ASAGI=1:WEND
           IF NEM=121 then NEM=01       
            IF MENU=1 THEN
            WRITE $02,NEM:PAUSE 2
            GOTO AYAR_MENUSU 
            ENDIF                 
         GOTO NEM_KONT
       RETURN
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''       
ZAMANAYARI:
WHILE MENU=1:WEND
GOSUB TEMIZLE
ZAMANAYAR:
IF MENU=1 THEN
AYAR=AYAR+1
WHILE MENU=1:WEND
ENDIF
GOSUB BUTONOKU
        LCDOUT $FE,$80,"    ZAMAN AYARI     "       
        LCDOUT $FE,$94,"SAAT ",DEC2 SAAT,":",DEC2 DAK,":",DEC2 SN
        LCDOUT $FE,$D4,"TARIH ",DEC2 GUN,"/",DEC2 AY,"/",DEC2 YIL
GOSUB GUNYAZ
IF AYAR=7 THEN ZAMAN_B
GOTO ZAMANAYAR

GUNYAZ:
SELECT CASE HAFTA
CASE 1
LCDOUT $FE,$E3,"PTESI"
CASE 2
LCDOUT $FE,$E3," SALI"
CASE 3
LCDOUT $FE,$E3," CARS"
CASE 4
LCDOUT $FE,$E3," PERS"
CASE 5
LCDOUT $FE,$E3," CUMA"
CASE 6
LCDOUT $FE,$E3,"CTESI"
CASE 7
LCDOUT $FE,$E3," PAZR"
END SELECT
RETURN

BUTONOKU:
SELECT CASE AYAR
CASE 1
LCDOUT $FE,$C0,"SAAT    "
IF YUKARI=1 THEN
WHILE YUKARI=1:WEND
SAAT=SAAT+1
IF SAAT=24 THEN SAAT=0
ENDIF
IF ASAGI=1 THEN
WHILE ASAGI=1:WEND
SAAT=SAAT-1
IF SAAT=255 THEN SAAT=23
ENDIF

CASE 2
LCDOUT $FE,$C0,"DAKIKA"
IF YUKARI=1 THEN
WHILE YUKARI=1:WEND
DAK=DAK+1
IF DAK=60 THEN DAK=0
ENDIF
IF ASAGI=1 THEN
WHILE ASAGI=1:WEND
DAK=DAK-1
IF DAK=255 THEN DAK=59
ENDIF

CASE 3
LCDOUT $FE,$C0,"GUN    "   
IF YUKARI=1 THEN
WHILE YUKARI=1:WEND
GUN=GUN+1
IF GUN=31 THEN GUN=1
ENDIF
IF ASAGI=1 THEN
WHILE ASAGI=1:WEND
GUN=GUN-1
IF GUN=0 THEN GUN=30
ENDIF

CASE 4
LCDOUT $FE,$C0,"AY    "
IF YUKARI=1 THEN
WHILE YUKARI=1:WEND
AY=AY+1
IF AY=13 THEN AY=1
ENDIF
IF ASAGI=1 THEN
WHILE ASAGI=1:WEND
AY=AY-1
IF AY=0 THEN AY=12
ENDIF

CASE 5
LCDOUT $FE,$C0,"YIL      "
IF YUKARI=1 THEN
WHILE YUKARI=1:WEND
YIL=YIL+1
IF YIL=51 THEN YIL=5
ENDIF
IF ASAGI=1 THEN
WHILE ASAGI=1:WEND
YIL=YIL-1
IF YIL=4 THEN YIL=50
ENDIF

CASE 6
LCDOUT $FE,$C0,"HAFTA     "
IF YUKARI=1 THEN
WHILE YUKARI=1:WEND
HAFTA=HAFTA+1
IF HAFTA=8 THEN HAFTA=1
ENDIF
IF ASAGI=1 THEN
WHILE ASAGI=1:WEND
HAFTA=HAFTA-1
IF HAFTA=0 THEN HAFTA=7
ENDIF
END SELECT
RETURN


ZAMAN_B:
        IF MENU=1 then ZAMAN_B
        gosub ZAMAN_YAZ
goto AYAR_MENUSU       
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
ZAMAN_OKU:
    high RTC_RST:OUTPUT RTC_DTA
shiftout RTC_DTA, RTC_CLK, 0, [$BF]:INPUT RTC_DTA
SHIFTIN RTC_DTA, RTC_CLK, 1, [SN, DAK, SAAT,GUN , AY, HAFTA, YIL, MEM]  'OKU
         MEM=SN:GOSUB CEVIR:SN=SAYI
         MEM=DAK:GOSUB CEVIR:DAK=SAYI
         MEM=SAAT:GOSUB CEVIR:SAAT=SAYI
         MEM=GUN:GOSUB CEVIR:GUN=SAYI
         MEM=AY:GOSUB CEVIR:AY=SAYI
         MEM=YIL:GOSUB CEVIR:YIL=SAYI
         MEM=HAFTA:GOSUB CEVIR:HAFTA=SAYI
     low RTC_RST
  return

ZAMAN_YAZ:
         MEM=sn:gosub TERSCEVIR:sn=SAYI
         MEM=DAK:gosub TERSCEVIR:DAK=SAYI
         MEM=SAAT:gosub TERSCEVIR:SAAT=SAYI
         MEM=GUN:gosub TERSCEVIR:GUN=SAYI
         MEM=AY:gosub TERSCEVIR:AY=SAYI
         MEM=YIL:gosub TERSCEVIR:YIL=SAYI
         MEM=HAFTA:GOSUB TERSCEVIR:HAFTA=SAYI

    high  RTC_RST
SHIFTOUT RTC_DTA, RTC_CLK, 0, [$8E, 0]    'WRT Protek açıldı
     low RTC_RST:PAUSEUS 10
    high RTC_RST         
SHIFTOUT RTC_DTA, RTC_CLK, 0, [$BE, SN, DAK, SAAT,GUN , AY, HAFTA, YIL, 128]  'YAZ
     low RTC_RST
PAUSEUS 10
  return

CEVIR:
         ONLAR=MEM & %01110000
         ONLAR=ONLAR>>4
         BIRLER=MEM & %00001111
         SAYI=ONLAR*10+BIRLER
  return

TERSCEVIR:
         ONLAR=MEM DIG 1
         ONLAR=ONLAR<<4
         BIRLER=MEM DIG 0
         SAYI=ONLAR+BIRLER
  return
 

END
   
     

Başlık: Ynt: otomatik çiçek sulama projesi bazı sorunlar var lütfen yardım edin!
Gönderen: yorulmaz06 - 27 Temmuz 2010, 14:14:20
Alıntı yapılan: mucit23 - 23 Temmuz 2010, 18:28:54
Hocam Allah sizden razı olsun siz olmasaydınız bunu çözmem imkansızdı.
şimdi hiç sorun çıkartmadan Derleniyor..

kuluçka makinasının ise son haliyle vereyim
'****************************************************************
'*  Name    : KULUÇKA.BAS                                      *
'*  Author  : [select VIEW...EDITOR OPTIONS]                    *
'*  Notice  : Copyright (c) 2010 [Desıgn by Ferhat YOL]         *
'*          : All Rights Reserved                               *
'*  Date    : 21.07.2010                                        *
'*  Version : 2.0                                               *
'*  Notes   :Bu program Kuluçka makinesi için Ferhat YOL        *
'*           Tarafından yazılmıştır                           *                                 
'****************************************************************
DEFINE OSC 8
@ DEVICE pic16F877
@ DEVICE pic16F877, WDT_ON
@ DEVICE pic16F877, PWRT_ON
@ DEVICE pic16F877, PROTECT_OFF
@ DEVICE pic16F877, XT_OSC

TRISA=%111111
TRISB=%00000001
TRISC=%11110000
PORTA=0
PORTB=0
PORTC=0

DEFINE LCD_DREG PORTB
DEFINE LCD_DBIT 4
DEFINE LCD_RSREG PORTB
DEFINE LCD_RSBIT 2
DEFINE LCD_EREG PORTB
DEFINE LCD_EBIT 3
DEFINE LCD_BITS 4
DEFINE LCD_LINES 4
ADCON1 = 7     
'---------------------------değişkenler-----------------------------------------
    A        VAR    BYTE
    D        VAR    BYTE
    E        var    byte
    SYC      VAR    BYTE
    AY       var    byte
    YIL      var    byte
    SN       VAR    BYTE
    DAK      VAR    BYTE
    SAAT     VAR    BYTE
    HAFTA    VAR    BYTE
    GUN      VAR    BYTE
    GUN1     VAR    BYTE
    MEM      var    byte
    ONLAR    VAR    BYTE
    BIRLER   VAR    BYTE
    Y        VAR    BIT
    SAYAC    VAR    BYTE
    AYAR     VAR    BYTE
    TERM     VAR    BYTE
    NEM      VAR    BYTE
    KONTROL  VAR    BYTE
    ORTAK    VAR    BYTE    
    ISI1     VAR    BYTE       
    ISI2     VAR    BYTE       
    U1       VAR    BYTE         
    U2       VAR    BYTE
    C0       VAR    BYTE
    Z        VAR    BYTE
    SAYI     VAR    BYTE
    SAY      VAR    BYTE
    ZAM      VAR    BYTE
    H0       VAR    HAMISI.BYTE0
    H1       VAR    HAMISI.BYTE1
    HAMISI VAR    WORD
    RAW      var    word
    ISISHT   VAR    WORD
    RUT      VAR    WORD
    P1       VAR    WORD
    P2       VAR    WORD
    P3       VAR    WORD             
    C        VAR    WORD
    B        VAR    WORD
    W        VAR    WORD
    ORTAISI  VAR    WORD
    FARK     VAR    WORD
    DUR      VAR    BYTE
    CLK     VAR     PORTA.5
    DTA     VAR     PORTA.3 
    ISARETSHT  VAR     BIT   'sensor değeri 0 ise artı, 1 ise eksi
    SIGN    VAR     BIT      'ısı isareti 0 ise artı 1 ise eksi
    HATA    var     BIT
    MENU    VAR     PORTB.0
    CIKIS   VAR     PORTA.0
    YUKARI  VAR     PORTA.1
    ASAGI   VAR     PORTA.2
   
        'ISI
Busy        VAR BIT         ' Busy Status-Bit
HAM         VAR WORD        ' Sensör HAM okuma değeri
ISI         VAR WORD        ' Hesaplanmış ISI değeri
Float       VAR WORD        ' Holds remainder for + temp C display
X           VAR WORD       
ISARET_BITI   VAR HAM.Bit11   '   +/- sıcaklık İşaret biti,  1 = olursa eksi sıcaklık
EKSI_ISI   CON 1           ' Sıfır altında isaret biti=1  oluyor kontrol için
DERECE     CON 223         ' ° işareti
ISARET     VAR BYTE        '  ISI değeri için  +/-  işaret
TEMP        VAR BYTE       ' Div32 bit hesap için geçici değişken
SYMBOL COMM_PIN=PORTB.1   ' One-wire Data-Pin "DQ" PortB.0 da

   
    symbol ROLE1=PORTC.0
    symbol ROLE2=PORTC.1
    symbol ROLE3=PORTC.2
    SYMBOL ROLE4=PORTC.3
    SYMBOL BUZER=PORTC.7
   
    RTC_RST     var PORTC.5
    RTC_CLK     var PORTC.6
    RTC_DTA     var PORTC.4
'-----------------------------B A Ş L A N G I Ç ------------------------------   
          LOW ROLE1
          LOW ROLE2
          LOW ROLE3
        PAUSE 20
    ' CLEAR: 'TRISA=%00111111:TRISB=0
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       
         PAUSE 500:ISARET=0
        LCDOUT $FE,$40,$6,$9,$9,$6,$0,$0,$0,$0        'derece işareti dataları   
        LCDOUT $FE,$48,$04,$0e,$0e,$0e,$1f,$04,$04,$0
        LCDOUT $FE,$50,10,0,17,17,17,17,14,0 'LCD 2. KARAKTER HAFIZASI Ü HARFİ
        LCDOUT $FE,$58,16,8,4,2,4,8,16,0     'LCD 3. KARAKTER HAFIZASI YON İŞARETİ   
GIRIS:
         LCDOUT $FE,$82, "OTOMATIK KULUCKA"           
         lcdout $FE,$C5,"MAKINESI"
         lcdout $FE,$95,"TASARIM ve YAZILIM"
         lcdout $FE,$D9,"FERHAT YOL"
         PAUSE 2000
         LCDOUT $FE,1
         
'-------------------------------------------------------------------------------
BASLANGIC:
READ $07,GUN:IF GUN=255 THEN GUN=1
READ $01,TERM:IF TERM=255 THEN TERM=0
READ $09,DUR:IF DUR=255 THEN DUR=0
READ $02,NEM:IF NEM=255 THEN NEM=0
READ $0,SAYI:IF SAYI=255 THEN SAYI=0
READ $10,ZAM:IF ZAM=255 THEN ZAM=0
READ $11,A:IF A=255 THEN A=1
gosub ZAMAN_OKU
           HIGH BUZER:PAUSE 50:LOW BUZER

           
BASLA: 
              KONTROL=%00000011:HAMISI=0   'SICAKLIK ÖLÇME
        GOSUB OLCUMAL
        Gosub ISIHESAP
              KONTROL=%00000101:HAMISI=0 'RUTUBET ÖLÇME
        GOSUB OLCUMAL
        GOSUB RUTHESAP:GOSUB SENSOROKU
        GOSUB ORTISI:GOSUB EKRAN1
        GOSUB HAVAKONTROL
        GOSUB ISIKONTROL
        GOSUB RUTKONTROL
        IF MENU=1 THEN AYARMENUSU
       
goto BASLA       
'---------------------------------------EKRANA YAZ -----------------------------
EKRAN1:
         GOSUB ZAMAN_OKU
         GOSUB DONUSEBAK
         GOSUB GUNEBAK
        lcdout $FE,$80,2,"=",DEC2 ISI1,",",DEC1 ISI2," A=",DEC2 ISI,",",DEC1 (FLOAT)," S=",DEC2 TERM,",",DEC1 A
        lcdout $FE,$C0,"ORTISI=",DEC2 ORTAISI,0,"C  NEM=%",DEC2 U1
        LCDOUT $FE,$94,"SAAT ",DEC2 SAAT,":",DEC2 DAK,":",DEC2 SN," ",DEC2 GUN,".GUN"
        LCDOUT $FE,$D4,"TARIH ",DEC2 GUN1,"/",DEC2 AY,"/",DEC2 YIL
            IF SN=DUR THEN LOW ROLE3
            IF SAAT=0 AND DAK=0 AND SN=0 THEN
               GUN=GUN+1
            IF GUN=31 THEN GUN=1
            WRITE $07,GUN
         ENDIF
        RETURN
'''''''''''''''''MOTOR ÇALIŞ '''''''''''''''''             
DONUSEBAK:
         
         READ $10,ZAM
         IF ZAM=255 THEN ZAM=1
         
                 IF ZAM=1 AND DAK=0 AND SN=0 THEN
                 HIGH ROLE3
                 ENDIF

        IF ZAM=2 THEN
                 
                 IF SAAT=0 AND DAK=0 AND sn=0 THEN
                 HIGH ROLE3
                 ENDIF               
                 
                 IF SAAT=2 AND DAK=0 AND sn=0 THEN
                 HIGH ROLE3
                 ENDIf                 
                 
                 IF SAAT=4 AND DAK=0 AND sn=0 THEN
                 HIGH ROLE3
                 ENDIF               
                 
                 IF SAAT=6 AND DAK=0 AND sn=0 THEN
                 HIGH ROLE3
                 ENDIF                 

                 IF SAAT=8 AND DAK=0 AND sn=0 THEN 
                 HIGH ROLE3
                 ENDIF

                 IF SAAT=10 AND DAK=0 AND sn=0 THEN 
                 HIGH ROLE3
                 ENDIF               

                 IF SAAT=12 AND DAK=0 AND sn=0 THEN 
                 HIGH ROLE3
                 ENDIF               

                 IF SAAT=14 AND DAK=0 AND sn=0 THEN 
                 HIGH ROLE3
                 ENDIF           

                 IF SAAT=16 AND DAK=0 AND sn=0 THEN 
                 HIGH ROLE3
                 ENDIF                 

                 IF SAAT=18 AND DAK=0 AND sn=0 THEN 
                 HIGH ROLE3
                 ENDIF             

                 IF SAAT=20 AND DAK=0 AND sn=0 THEN 
                 HIGH ROLE3
                 ENDIF

                 IF SAAT=22 AND DAK=0 AND sn=0 THEN 
                 HIGH ROLE3
                 ENDIF
        ENDIF
       
        IF ZAM=3 THEN
                 IF SAAT=0 AND DAK=0 AND sn=0 THEN
                 HIGH ROLE3
                 ENDIF               
                 
                 IF SAAT=3 AND DAK=0 AND sn=0 THEN
                 HIGH ROLE3
                 ENDIf                 
                 
                 IF SAAT=6 AND DAK=0 AND sn=0 THEN
                 HIGH ROLE3
                 ENDIF               
                 
                 IF SAAT=9 AND DAK=0 AND sn=0 THEN
                 HIGH ROLE3
                 ENDIF                 
                 
                 IF SAAT=12 AND DAK=0 AND sn=0 THEN 
                 HIGH ROLE3
                 ENDIF
                   
                 IF SAAT=15 AND DAK=0 AND sn=0 THEN 
                 HIGH ROLE3
                 ENDIF               
                 
                 IF SAAT=18 AND DAK=0 AND sn=0 THEN 
                 HIGH ROLE3
                 ENDIF               
                 
                 IF SAAT=21 AND DAK=0 AND sn=0 THEN 
                 HIGH ROLE3
                 ENDIF
        ENDIF
                           
        IF ZAM=4 THEN
                 IF SAAT=0 AND DAK=0 AND sn=0 THEN
                 HIGH ROLE3
                 ENDIF               
                 
                 IF SAAT=4 AND DAK=0 AND sn=0 THEN
                 HIGH ROLE3
                 ENDIf                 
                 
                 IF SAAT=8 AND DAK=0 AND sn=0 THEN
                 HIGH ROLE3
                 ENDIF               
                 
                 IF SAAT=12 AND DAK=0 AND sn=0 THEN
                 HIGH ROLE3
                 ENDIF                 
                 
                 IF SAAT=16 AND DAK=0 AND sn=0 THEN 
                 HIGH ROLE3
                 ENDIF
                 
                 IF SAAT=20 AND DAK=0 AND sn=0 THEN 
                 HIGH ROLE3
                 ENDIF           
        ENDIF
       
             
RETURN

GUNEBAK:
SELECT CASE HAFTA
CASE 1
LCDOUT $FE,$E3,"PTESI"
CASE 2
LCDOUT $FE,$E3," SALI"
CASE 3
LCDOUT $FE,$E3," CARS"
CASE 4
LCDOUT $FE,$E3," PERS"
CASE 5
LCDOUT $FE,$E3," CUMA"
CASE 6
LCDOUT $FE,$E3,"CTESI"
CASE 7
LCDOUT $FE,$E3," PAZR"
END SELECT
RETURN
 
SENSOROKU:
           OWOUT   Comm_Pin, 1, [$CC, $44]' ISI değerini oku
Bekle:
           OWIN    Comm_Pin, 4, [Busy]    ' Busy değerini oku
           IF      Busy = 0 THEN Bekle    ' hala meşgulmü? , evet ise goto Bekle..!
           OWOUT   Comm_Pin, 1, [$CC, $BE]' scratchpad memory oku
           OWIN    Comm_Pin, 2, [HAM.Lowbyte, HAM.Highbyte]' İki byte oku ve okumayı bitir.
           GOSUB   Hesapla
           RETURN
Hesapla:                 ' Ham değerden Santigrat derece hesabı
    ISARET  = "+"
    IF ISARET_BITI = EKSI_ISI THEN
       ISARET   = "-" 
       ham=~ham+2
    endif
    float = (HAM*10)/16        '
    ISI=FLOAT/10 
    RETURN 
'------------------------------- İŞLEM START -----------------------------------
T_START:
      OUTPUT DTA:OUTPUT CLK
        HIGH DTA
         LOW CLK
       PAUSE 1
        HIGH CLK
         LOW DTA
       PAUSE 1
         LOW CLK
       PAUSE 1
        HIGH CLK
       PAUSE 1
        HIGH DTA
         LOW CLK
RETURN
'-----------------------SENSORE KOMUT GÖNDER -----------------------------------
OLCUMAL:
           GOSUB T_Start
        SHIFTOUT DTA,CLK,1,[KONTROL]
           INPUT DTA
         PULSOUT CLK,10
                 HATA=0
             FOR W=0 to 65500
              IF DTA=0 then GIT
            NEXT W
                 HATA=1
GIT:         
              IF HATA=1 then
           endif
         SHIFTIN DTA,CLK,0,[H1]
          OUTPUT DTA
             LOW DTA
         PULSOUT CLK,10
           INPUT DTA
         SHIFTIN DTA,CLK,0,[H0]
         PULSOUT CLK,10
RETURN
'----------------------ISI HESAP ALT PROGRAMI-----------------------------------     
ISIHESAP: 
           If HAMISI<4000 then
              ISARETSHT=1 'sıcaklık eksi değerde demek
              ISI1=(4000-HAMISI)/100
              ISI2=((4000-HAMISI)//100)/10   
         goto ISISON
        endif
              ISI1=(HAMISI-4000)/100
              ISI2=((HAMISI-4000)//100)/10
ISISON:   
           
           ISI1=(HAMISI-4000)/100
           ISI2=((HAMISI-4000)//100)/10
RETURN       
'-------------------------RUTUBET HESAP ALT PROGRAMI----------------------------
RUTHESAP:
              'ISI=ISI1*10+ISI2
              p1=(26542-(54722**HAMISI+hamISI))**HAMISI-25     
              P2=655+(HAMISI*5)+(HAMISI**15917)      
              P3=(P2**(ISISHT*10+2480))-(P2**2730)+P1   
              U1=p3/10:U2=p3//10
           IF HAMISI>3710 THEN
              U1=0:U2=0
        ENDIF 
return

ORTISI:
ORTAISI=(ISI1*10+ISI*10)/20
RETURN
'----------------------------ISI KONTROL----------------------------------------
ISIKONTROL:
         if TERM<ISI then   
          LOW Role1
        ENDIF
        if ISI<TERM then         
         HIGH ROLE1               
       Endif
           
RETURN
'----------------------------RUTKONTROL-----------------------------------------         
RUTKONTROL:
           if NEM<U1 then   
         HIGH Role2
         ELSE               
          LOW ROLE2
        ENDIF
RETURN

HAVAKONTROL:
FARK=ISI1-ISI
IF FARK.Bit15=1 then FARK=~FARK
IF FARK>1 then
   ROLE4=1
ELSE
   ROLE4=0
ENDIF

RETURN
'-------------------------------------------------------------------------------
AYARMENUSU:
       WHILE MENU=1:WEND
       GOSUB TEMIZLE
SYC=0
AYARLAR:
IF YUKARI=1 THEN
WHILE YUKARI=1:WEND
SYC=SYC+1
  IF SYC=6 THEN SYC=0
ENDIF

IF ASAGI=1 THEN
WHILE ASAGI=1:WEND
SYC=SYC-1
  IF SYC=255 THEN SYC=5
ENDIF
GOSUB DURUM
IF CIKIS=1 THEN GOTO BASLANGIC
GOTO AYARLAR

DURUM:
SELECT CASE SYC
CASE 0
lcdout $fe,$c0,"  ISITICI AYARLARI  "
LCDOUT $FE,$94,"                    "
IF MENU=1 then
WHILE MENU=1:WEND
GOTO TERM_KONTROL
ENDIF
CASE 1
lcdout $fe,$c0,"    NEM AYALARI     "
LCDOUT $FE,$94,"                    "
IF MENU=1 then
WHILE MENU=1:WEND
GOTO NEM_KONTROL
ENDIF
CASE 2
lcdout $fe,$c0,"   CEViRiCi MOTOR   "
LCDOUT $FE,$94,"       AYARI       "
IF MENU=1 then
WHILE MENU=1:WEND
GOTO MOT_AYAR
ENDIF
CASE 3
lcdout $fe,$c0,"   SAAT-TARiH-GUN   "
LCDOUT $FE,$94,"        AYARI       "   
IF MENU=1 then
WHILE MENU=1:WEND
GOTO ZAMANAYARI
ENDIF
CASE 4
lcdout $fe,$C0,"   MANUEL OLARAK    "
lcdout $fe,$94,"   MOTORU CEVIRME   "
IF MENU=1 then
WHILE MENU=1:WEND
GOTO MANUEL
ENDIF
CASE 5
lcdout $fe,$c0,"     GUN AYARI      "
LCDOUT $FE,$94,"                    "     
IF MENU=1 then
WHILE MENU=1:WEND
GOTO GUNAYARI
ENDIF
END SELECT
RETURN

MANUEL:
GOSUB TEMIZLE
MANU:
lcdout $fe,$80,"MOTORU CALISTIRMAK "
LCDOUT $FE,$C0,"iCiN YUKLARIYA     "
LCDOUT $FE,$94,"BASINIZ...          "
       IF CIKIS=1 then             
        WHILE CIKIS=1:WEND
         GOTO AYARLANDI
        ENDIF

        IF YUKARI=1 THEN
         lcdout $fe,$D4,"MOTOR CALISIYOR  "
        HIGH ROLE3
        ELSE
        lcdout $fe,$D4,"MOTOR KAPALI    "
        LOW ROLE3
        ENDIF
       
GOTO MANU

GUNAYARI:
       GOSUB TEMIZLE
       WHILE MENU=1:WEND
       READ $07,GUN
GUNA:     
     LCDOUT $FE,$80,"GUNU AYARLA" 
     lcdout $FE,$C0,"GUN:",DEC2 GUN
     IF CIKIS=1 THEN AYARLANDI
        WHILE CIKIS=1:WEND
        IF YUKARI=1 THEN
        GUN=GUN+1
        IF GUN=31 THEN GUN=1
        WHILE YUKARI=1:WEND
        ENDIF
       
        IF ASAGI=1 THEN
        GUN=GUN-1
        IF GUN=255 THEN GUN=30
        WHILE ASAGI=1:WEND
        ENDIF
             
     GOTO GUNA         
''''''''''''''''''''''''''''''''''''''''         
MOT_AYAR:
        GOSUB TEMIZLE
        WHILE MENU=1:WEND
        READ $0,SAYI:SAYI=0
MOTOR_AYAR:

       lcdout $fe,$80,"MOTOR DURUMUNU"
       LCDOUT $FE,$C0,"SECINIZ..."
       lcdout $FE,$94,"  ACIK"
       LCDOUT $FE,$D4,"  KAPALI" 
           IF MENU=1 THEN M_ZAMANI
        WHILE MENU=1:WEND
           IF YUKARI=1 THEN
           SAYI=SAYI+1
           WHILE YUKARI=1:WEND
           ENDIF
           IF SAYI=2 THEN SAYI=0
           SELECT CASE SAYI
           CASE 0
           LCDOUT $FE,$94,3
           CASE 1
           LCDOUT $FE,$D4,3
           END SELECT
        GOTO MOTOR_AYAR         
M_CALISMA:
        GOSUB TEMIZLE
        WHILE MENU=1:WEND
        READ $09,DUR
MOTO_CALISMA:
           IF CIKIS=1 THEN AYARLANDI
        WHILE CIKIS=1:WEND
       lcdout $fe,$C0,"MOTOR CALISMA SURESi "
       lcdout $FE,$94,"SURE :",DEC2 DUR," SANIYE"
       
           IF YUKARI=1 THEN
           DUR=DUR+1
           WHILE YUKARI=1:WEND
           ENDIF   
           IF DUR=60 THEN DUR=0
           IF ASAGI=1 THEN
           DUR=DUR-1
           WHILE ASAGI=1:WEND
           ENDIF
           IF DUR=255 THEN DUR=59
         GOTO MOTO_CALISMA                         
M_ZAMANI:
        GOSUB TEMIZLE
        WHILE MENU=1:WEND
        READ $10,ZAM
MOTO_ZAMANI:
        IF ZAM=255 THEN ZAM=1
        IF YUKARI=1 THEN
        ZAM=ZAM+1
        WHILE YUKARI=1:WEND
        ENDIF
        IF ZAM=5 THEN ZAM=4
       
       
        IF ASAGI=1 THEN
        ZAM=ZAM-1
        WHILE ASAGI=1:WEND
        ENDIF
        IF ZAM=0 THEN ZAM=1       
        IF MENU=1 THEN M_CALISMA
       
        lcdout $fe,$C0,"MOTORU ",DEC1 ZAM," SAATTE"
        lcdout $FE,$94,"BiR CEViREYiM"
GOTO MOTO_ZAMANI

                                                                                 
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''   
AYARLANDI:
           IF MENU=1 then AYARLANDI
       lcdout $fe,1
       LCDOUT $FE,$C0,"AYARLAR KAYDEDiLDi.."
       WRITE $0,SAYI
       WRITE $10,ZAM
       WRITE $09,DUR
       WRITE $07,GUN
       WRITE $01,TERM
       WRITE $02,NEM
       WRITE $11,A
       AYAR=1
        PAUSE 1000
        GOSUB TEMIZLE
         goto AYARMENUSU       
TEMIZLE:
        lcdout $fe,1
RETURN       
'-------------------------------------------------------------------------------
TERM_KONTROL:
       GOSUB TEMIZLE       
SET_AYAR 
LCDOUT $FE,$C0,"ISI LiMiTiNi SECIN"
LCDOUT $FE,$94,"AYAR:",DEC2 TERM,",",DEC1 A         
           IF YUKARI=1 then
              A=A+1
                IF A=10 THEN
                A=0:TERM=TERM+1
                ENDIF
              IF TERM=100 THEN TERM=0
              PAUSE 150
           ENDIF
           IF ASAGI=1 then
              A=A-1
                IF A=255 then
                A=9:TERM=TERM-1
                ENDIF
              IF TERM=255 THEN TERM=99
              PAUSE 150
           ENDIF
               
           IF CIKIS=1 THEN
        WHILE CIKIS=1:WEND
         GOTO AYARLANDI
        ENDIF                 
GOTO SET_AYAR 
'-------------------------------------------------------------------------------
NEM_KONTROL:
       GOSUB TEMIZLE
NEM_KONT: 
       lcdout $fe,$C0,"NEM LiMiTi"
       lcdout $FE,$94,"AYARI:",DEC2 NEM
       
           IF YUKARI=1 then NEM=NEM+1
        WHILE YUKARI=1:WEND
           IF NEM=01 then NEM=121
           
           IF ASAGI=1 then NEM=NEM-1
        WHILE ASAGI=1:WEND
           IF NEM=121 then NEM=01       
           IF CIKIS=1 THEN
        WHILE CIKIS=1:WEND
         GOTO AYARLANDI
        ENDIF                 
         GOTO NEM_KONT
       RETURN
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''       
ZAMANAYARI:
GOSUB TEMIZLE
AYAR=1
ZAMANAYAR:
IF MENU=1 THEN
AYAR=AYAR+1
WHILE MENU=1:WEND
ENDIF
GOSUB BUTONOKU
        LCDOUT $FE,$80,"    ZAMAN AYARI     "       
        LCDOUT $FE,$94,"SAAT ",DEC2 SAAT,":",DEC2 DAK,":",DEC2 SN
        LCDOUT $FE,$D4,"TARIH ",DEC2 GUN1,"/",DEC2 AY,"/",DEC2 YIL
GOSUB GUNYAZ
IF AYAR=7 THEN ZAMAN_B
GOTO ZAMANAYAR
GUNYAZ:
SELECT CASE HAFTA
CASE 1
LCDOUT $FE,$E3,"PTESI"
CASE 2
LCDOUT $FE,$E3," SALI"
CASE 3
LCDOUT $FE,$E3," CARS"
CASE 4
LCDOUT $FE,$E3," PERS"
CASE 5
LCDOUT $FE,$E3," CUMA"
CASE 6
LCDOUT $FE,$E3,"CTESI"
CASE 7
LCDOUT $FE,$E3," PAZR"
END SELECT
RETURN

BUTONOKU:
SELECT CASE AYAR
CASE 1
LCDOUT $FE,$C0,"SAAT    "
IF YUKARI=1 THEN
WHILE YUKARI=1:WEND
SAAT=SAAT+1
IF SAAT=24 THEN SAAT=0
ENDIF
IF ASAGI=1 THEN
WHILE ASAGI=1:WEND
SAAT=SAAT-1
IF SAAT=255 THEN SAAT=23
ENDIF

CASE 2
LCDOUT $FE,$C0,"DAKIKA"
IF YUKARI=1 THEN
WHILE YUKARI=1:WEND
DAK=DAK+1
IF DAK=60 THEN DAK=0
ENDIF
IF ASAGI=1 THEN
WHILE ASAGI=1:WEND
DAK=DAK-1
IF DAK=255 THEN DAK=59
ENDIF

CASE 3
LCDOUT $FE,$C0,"GUN    "   
IF YUKARI=1 THEN
WHILE YUKARI=1:WEND
GUN1=GUN1+1
IF GUN1=31 THEN GUN=1
ENDIF
IF ASAGI=1 THEN
WHILE ASAGI=1:WEND
GUN1=GUN1-1
IF GUN1=0 THEN GUN1=30
ENDIF

CASE 4
LCDOUT $FE,$C0,"AY    "
IF YUKARI=1 THEN
WHILE YUKARI=1:WEND
AY=AY+1
IF AY=13 THEN AY=1
ENDIF
IF ASAGI=1 THEN
WHILE ASAGI=1:WEND
AY=AY-1
IF AY=0 THEN AY=12
ENDIF

CASE 5
LCDOUT $FE,$C0,"YIL      "
IF YUKARI=1 THEN
WHILE YUKARI=1:WEND
YIL=YIL+1
IF YIL=51 THEN YIL=5
ENDIF
IF ASAGI=1 THEN
WHILE ASAGI=1:WEND
YIL=YIL-1
IF YIL=4 THEN YIL=50
ENDIF

CASE 6
LCDOUT $FE,$C0,"HAFTA     "
IF YUKARI=1 THEN
WHILE YUKARI=1:WEND
HAFTA=HAFTA+1
IF HAFTA=8 THEN HAFTA=1
ENDIF
IF ASAGI=1 THEN
WHILE ASAGI=1:WEND
HAFTA=HAFTA-1
IF HAFTA=0 THEN HAFTA=7
ENDIF
END SELECT
RETURN


ZAMAN_B:
           IF MENU=1 then ZAMAN_B
           AYAR=1
        gosub ZAMAN_YAZ
        GOSUB TEMIZLE
        GOSUB AYARLANDI
         goto AYARMENUSU       
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
ZAMAN_OKU:
    high RTC_RST:OUTPUT RTC_DTA
shiftout RTC_DTA, RTC_CLK, 0, [$BF]:INPUT RTC_DTA
SHIFTIN RTC_DTA, RTC_CLK, 1, [SN, DAK, SAAT,GUN , AY, HAFTA, YIL, MEM]  'OKU
         MEM=SN:GOSUB CEVIR:SN=SAYI
         MEM=DAK:GOSUB CEVIR:DAK=SAYI
         MEM=SAAT:GOSUB CEVIR:SAAT=SAYI
         MEM=GUN:GOSUB CEVIR:GUN=SAYI
         MEM=AY:GOSUB CEVIR:AY=SAYI
         MEM=YIL:GOSUB CEVIR:YIL=SAYI
         MEM=HAFTA:GOSUB CEVIR:HAFTA=SAYI
     low RTC_RST
  return

ZAMAN_YAZ:
         MEM=sn:gosub TERSCEVIR:sn=SAYI
         MEM=DAK:gosub TERSCEVIR:DAK=SAYI
         MEM=SAAT:gosub TERSCEVIR:SAAT=SAYI
         MEM=GUN:gosub TERSCEVIR:GUN=SAYI
         MEM=AY:gosub TERSCEVIR:AY=SAYI
         MEM=YIL:gosub TERSCEVIR:YIL=SAYI
         MEM=HAFTA:GOSUB TERSCEVIR:HAFTA=SAYI

    high  RTC_RST
SHIFTOUT RTC_DTA, RTC_CLK, 0, [$8E, 0]    'WRT Protek açıldı
     low RTC_RST:PAUSEUS 10
    high RTC_RST         
SHIFTOUT RTC_DTA, RTC_CLK, 0, [$BE, SN, DAK, SAAT,GUN , AY, HAFTA, YIL, 128]  'YAZ
     low RTC_RST
PAUSEUS 10
  return

CEVIR:
         ONLAR=MEM & %01110000
         ONLAR=ONLAR>>4
         BIRLER=MEM & %00001111
         SAYI=ONLAR*10+BIRLER
  return

TERSCEVIR:
         ONLAR=MEM DIG 1
         ONLAR=ONLAR<<4
         BIRLER=MEM DIG 0
         SAYI=ONLAR+BIRLER
  return
 

END
   
     

Yanlız dediklerinizi pek anlayamadım nasıl yapacağımı bilmiyorum isterseniz bi programa bakın belki daha iyi bi yöntem söyleyebilirsiniz
hocam bu program isiste düzgün çalışıyo menüye geç girmesi dışında birde gün ayarı sorunlu onun dışında bi sorunu yok
gün 1 yapmama rağmen ana ekranda dün 26.gün yazıyodu bugün 27.gün yazıyo zannedersem rtc den alıyo gün bilgisini
birde bu programın baskı devresini yaptınızmı öncekini editleyeyim dedim ama pek düzgün olmadı
Başlık: Ynt: otomatik çiçek sulama projesi bazı sorunlar var lütfen yardım edin!
Gönderen: Mucit23 - 27 Temmuz 2010, 14:17:39
son gönderdiğim mesajdaki projramdaki sorunlar çözülmüştür bunu kullanabilirsiniz ama osc frekansını 4 mhz ye düşürmelisiniz şimdilik 4 mhz de daha düzgün çalışıyor eğer imkanınız varsa program gereçk ortamda deneyip sonuçları bildirirseniz sorunlar hakkında bana daha yardımcı olur
Başlık: Ynt: otomatik çiçek sulama projesi bazı sorunlar var lütfen yardım edin!
Gönderen: Alfa - 27 Temmuz 2010, 15:39:38
sayın mucit 23 devreyi kurup deneyecegim fakat şemada 452 var programda 877 hangisi dogru olanı?
isis cizimini ve kaynak kodunu bir arada verirsen iyi olur.
Başlık: Ynt: otomatik çiçek sulama projesi bazı sorunlar var lütfen yardım edin!
Gönderen: Mucit23 - 27 Temmuz 2010, 15:46:49
arkadaşlar programın son hali ile dosyalarını veriyorum kaynak kodu ve isis çizimleri mevcuttur sizden ricam eğer deneyecek olan arkadaşlar varsa bana gözlemlerini bildirmesini istiyorum bu verdiğim son haliyle çift sensörlü olandır simülasyonda saat biraz yavaş çalışıyor ama gerçekte normal hızıyla çalışacağını umuyorum
http://www.upload.gen.tr/d.php/s13/jof9xnfb/kulu__ka_son_hali.rar.html (http://www.upload.gen.tr/d.php/s13/jof9xnfb/kulu__ka_son_hali.rar.html)
Başlık: Ynt: otomatik çiçek sulama projesi bazı sorunlar var lütfen yardım edin!
Gönderen: yorulmaz06 - 27 Temmuz 2010, 16:28:40
Mucit23 hocam verdiğin isis bende çalışmadı iznin olursa bendekini vereyim emeklerin için teşekkürler

http://rapidshare.com/files/409384893/son.rar.html

Önümüzdeki günlerde devreyi kurup çalıştırmayı düşünüyorum ama  iki haftaan önce zor gibi işler nedeniyle. yapınca sonuçları yazarım buraya
bu arada geçtiğimiz cumartesi 24 bıldırcın yumurtasından 16 tanesi çıktı pazar günüde 43 tavuk yumurtasından 32 si çıktı
ama birde üzücü haber var bıldırcınlardan 4 tanesini kediye kaptırdık :( :-[
Başlık: Ynt: otomatik çiçek sulama projesi bazı sorunlar var lütfen yardım edin!
Gönderen: Mucit23 - 27 Temmuz 2010, 16:33:02
proteus olarak 7.6spo kullanıyorum belki ondan açamamışsındır benim için sorun değil herkes istediği gibi paylaşsın faydalansın bişeyler öğrensin istiyorum bu tür projelerden para kazanma gibi bi niyetim yok
Başlık: Ynt: otomatik çiçek sulama projesi bazı sorunlar var lütfen yardım edin!
Gönderen: yorulmaz06 - 27 Temmuz 2010, 16:44:23
şu anda makinamda kullandığım termostat devresi DS18B20 ve 16f628 ile yapıldı motor için ise küçük delikli plakete 16f628 koydum basit bide program yazmaya çalıştım saatte 1 kere  3 saniye motoru çalıştırıyo. makinanın kendiside eski bulaşık makinası
Başlık: Ynt: otomatik çiçek sulama projesi bazı sorunlar var lütfen yardım edin!
Gönderen: Alfa - 27 Temmuz 2010, 17:43:37
Yorulmaz06 ısıtmayı nasıl hallettin
Başlık: Ynt: otomatik çiçek sulama projesi bazı sorunlar var lütfen yardım edin!
Gönderen: yorulmaz06 - 27 Temmuz 2010, 18:05:14
1 adet 50 watt ampul birazda elektrikli battaniye rezistansı kullandım
Başlık: Ynt: otomatik çiçek sulama projesi bazı sorunlar var lütfen yardım edin!
Gönderen: Alfa - 27 Temmuz 2010, 20:30:13
Bir arkadaş demiş ki;elk.battaniye rezinstansı ve 100w 2 adet ampül 1 ay boyunca 250 lira gelmiş fatura:) böyle bişey mümkün değil.sende ne alemde
Başlık: Ynt: otomatik çiçek sulama projesi bazı sorunlar var lütfen yardım edin!
Gönderen: yorulmaz06 - 27 Temmuz 2010, 21:04:22
Dikkat etmedim ama en fazla 20 tl farketmiştir.
Zaten makina 20 -30 saniye açık kalıyo 3 - 3,5 dakikada kapalı kalıyo
o arkadaş ya çok büyük makinası var yada yalıtımı kötü 2 tane 100w ampul fırın gibi yapar benim makinayı
Başlık: Ynt: otomatik çiçek sulama projesi bazı sorunlar var lütfen yardım edin!
Gönderen: Mucit23 - 30 Temmuz 2010, 15:05:41
Alıntı yapılan: ete - 24 Temmuz 2010, 18:17:01
Define komutları içinde yalnızca shiftout YADA shiftin komutlarını yavaşlatacak komut mevcut buda;
DEFINE SHIFT_PAUSEUS 50 'Slow down the Shiftin and Shiftout clock
şeklinde kullanılıyor.
Ama esas ayarlamayı yapan Define OSC 20 komutudur.
Bu komutu ilave etmedi isen sensörler çalışmayabilir. Ama ilave edersen sorunsuz çalışırlar.

Ete

merhabalar ETE hocam
hocam konu başlığından farklı ama size bişey sormak istiyorum ;
picin adc kanalları ile 3 fazlı sistemde her fazın gelirimini ölçüp ekrana yansıtmak istiyorum internette biraz araştırma yaparak 220 vot gelirimi aşağıdaki şema ile picin anlayacağı gelirime dönüştürebildim
[IMG]http://img411.imageshack.us/img411/4162/adszuap.jpg[/img] (http://img411.imageshack.us/i/adszuap.jpg/)

Uploaded with ImageShack.us (http://imageshack.us)
ama ADC ile ölçyüğümüz ham değerini nasıl volt olarsk hesaplıyacam bunu bilmiyorum bu konuda bana yardımcı olursanız sevinirim ayrıca bu gibi yüksek voltaj ölçümü gereken yerlerde  True-RMS diye bir sistem kullanılıyormuş.İnternette biraz araştırma yaptım ama kayde değer bi kaynak bulamadım bu konuda sizin bi bilginiz varsa beni bilgilendirirseniz sevinirim
Başlık: Ynt: otomatik çiçek sulama projesi bazı sorunlar var lütfen yardım edin!
Gönderen: ete - 30 Temmuz 2010, 16:31:35
Benzer bir işte ben 2 watt 5V luk bir trafo kullandım. Trafo çıkışını 5V seviyesine getirip onuda pic'e girerek (doğrultup) ölçüm yaptım.
Bu şekilde hem daha emniyetli hem daha stabil. Hesap şeklinde şöyle olabilir.
Pic'e 5V geldiğinde AC volt karşılığı 300V olsun.
Bu durumda 220V AC de pic ADC girişine daha düşük bir voltaj gelecektir.
Trafo seni yanıltmasın. Gerilim düştüğünde yada arttığında tarfo çıkışıda paralel artıp düşmektedir.

TRUE RMS bir alternatif akım sinyalinin ölçümünde onun DC karşılığınında değerlendirilmesi şeklinde diye biliyorum. Daha fazla bilgi için daha iyi bilen birisine sormanda yarar var. Nede olsa benim konum değil.
Ama sinüs işaretlerinde RMS çevirimi için şu formüller kullanılıyormuş.

    * RMS değeri = 0.707 x Tepe değeri
Bana kalırsa bu teorik bilgiler içinde kaybolma. Sana lazım olan şebeke voltajının değeri öyle değilmi.
Sonuçta multimetren ile ölçtüğünde 219V gibi bir değer alıyorsan aynı değeri pic devrende vermeli benim için esas olan budur.
Bunuda benim tarif ettiğim gibi yaparsan sonuç alırsın.

Ete
Başlık: Ynt: otomatik çiçek sulama projesi bazı sorunlar var lütfen yardım edin!
Gönderen: Mucit23 - 31 Temmuz 2010, 14:18:13
trafo benimde aklıma yattı aslında dediğiniz gibi daha emniyetli olur ama bu şekilde trafolar varmıdır yada sizin tarifinize uygun trafoyu nereden temin edebilirim
Başlık: Ynt: otomatik çiçek sulama projesi bazı sorunlar var lütfen yardım edin!
Gönderen: ete - 31 Temmuz 2010, 16:28:33
Kart üzerine monte 2-3 wattlık bir trafo işini görür. Piyasada sarı renkli trafolar var onlardan birini alabilirsin.
İllaki voltaj tutacak diyede bir şey yok. Nasıl olsa trafo çıkışını doğrultup bir gerilim bölücü yapacaksın. Bu nedenle hiç bulamaz isen 6V AC trafo bile olur. İdeali sanırım 4,5V yada 3V çıkışlı trafo olur.

Ete
Başlık: Ynt: otomatik çiçek sulama projesi bazı sorunlar var lütfen yardım edin!
Gönderen: Mucit23 - 05 Ağustos 2010, 13:31:16
merhabalar ete hocam
hocam kuluçka makinasının son haliyle pcb yi hazırladım malzemeleri yerleştirdim fakat bi sorun var devre üzerinde pic çalışmıyor.Nedense lcdde karelerden başka bişey gözükmüyor benim bildiğim kadarıyla pic çalışmayınca lcdde kareler çıkar.
iki adet 16F877 ile denedim ikisindede aynı sorun var pic bozuk desem programlayıcı sorun çıkarmada pice programı yüklüyor.Anlayamadım doğrusu simülasyonda program çok iyi çalışıyor.
acabada pcb de mi hata yaptım defalarca incelememe rağmen bi hata bulamadım picin besleme bacaklarında 5 volt var .beslemedede sorun yok gibi belki benim gözümden kaçmıştır bide sizler bakın pcb ye
Acaba rogramdamı sorun var ama simülasyonda çalışıyor acaba 16f877 için çok mu ağır oldu program daha programda bir kelime bile yazacak yer kalmadı 8045 words boyutunda oldu gerçi sorunsuz derleniyor program  ama bilmiyorum belki başka bişey vardır.
aynı işlemcilerle ufak bi devre üzerindeki röleleri 50 ms aralıklarla açıp kapayacak şekilde ufak bi program yazdım ;  Simülasyonda çalışıyor pice sorunsuz yüklendi ama gerçekte çalışmıyor.Ne yapacağımı şaşırdım doğrusu sizin yardımlarınız ihtiyacım var
program en son haliyle aşağıdaki gibi bi bakın isterseniz belki programdada sorun olabilir

'****************************************************************
'*  Name    : KULUÇKA.BAS                                      *
'*  Author  : [select VIEW...EDITOR OPTIONS]                    *
'*  Notice  : Copyright (c) 2010 [Desıgn by Ferhat YOL]         *
'*          : All Rights Reserved                               *
'*  Date    : 21.07.2010                                        *
'*  Version : 2.0                                               *
'*  Notes   :Bu program Kuluçka makinesi için Ferhat YOL        *
'*           Tarafından yazılmıştır                           *                                 
'****************************************************************
DEFINE OSC 4
@ DEVICE pic16F877
@ DEVICE pic16F877, WDT_ON
@ DEVICE pic16F877, PWRT_ON
@ DEVICE pic16F877, PROTECT_OFF
@ DEVICE pic16F877, XT_OSC

TRISA=%111111
TRISB=%00000001
TRISC=%11110000
TRISD=%00000000
TRISE=%00000000
PORTA=0
PORTB=0
PORTC=0
PORTD=0
PORTE=0

DEFINE LCD_DREG PORTB
DEFINE LCD_DBIT 4
DEFINE LCD_RSREG PORTB
DEFINE LCD_RSBIT 2
DEFINE LCD_EREG PORTB
DEFINE LCD_EBIT 3
DEFINE LCD_BITS 4
DEFINE LCD_LINES 4
ADCON1 = 7     
'---------------------------değişkenler-----------------------------------------
    A        VAR    BYTE
    D        VAR    BYTE
    E        var    byte
    SYC      VAR    BYTE
    AY       var    byte
    YIL      var    byte
    SN       VAR    BYTE
    DAK      VAR    BYTE
    SAAT     VAR    BYTE
    HAFTA    VAR    BYTE
    GUN      VAR    BYTE
    MEM      var    byte
    ONLAR    VAR    BYTE
    BIRLER   VAR    BYTE
    GN       VAR    BYTE
    ZAMAN    VAR    BYTE
    Y        VAR    BIT
    SY       VAR    BIT
    AYR      VAR    BIT
    AYAR_D   VAR    BIT
    SAYI     VAR    BYTE
    SAYAC    VAR    BYTE
    AYAR     VAR    BYTE
    TERM     VAR    BYTE
    NEM      VAR    BYTE
    KONTROL  VAR    BYTE
    ORTAK    VAR    BYTE
    CNY      VAR    BYTE    
    ISI1     VAR    BYTE       
    ISI2     VAR    BYTE       
    U1       VAR    BYTE         
    U2       VAR    BYTE
    C0       VAR    BYTE
    Z        VAR    BYTE
    SAY      VAR    BYTE
    ZAM      VAR    BYTE
    H0       VAR    HAMISI.BYTE0
    H1       VAR    HAMISI.BYTE1
    HAMISI VAR    WORD
    RAW      var    word
    ISISHT   VAR    WORD
    RUT      VAR    WORD
    P1       VAR    WORD
    P2       VAR    WORD
    P3       VAR    WORD             
    C        VAR    WORD
    B        VAR    WORD
    W        VAR    WORD
    ORTAISI  VAR    WORD
    FARK     VAR    WORD
    DUR      VAR    BYTE
    CLK     VAR     PORTA.5
    DTA     VAR     PORTA.3 
    ISARETSHT  VAR     BIT   'sensor değeri 0 ise artı, 1 ise eksi
    SIGN    VAR     BIT      'ısı isareti 0 ise artı 1 ise eksi
    HATA    var     BIT
    MENU    VAR     PORTA.0
    YUKARI  VAR     PORTA.1
    ASAGI   VAR     PORTA.2
   
        'ISI
Busy        VAR BIT         ' Busy Status-Bit
HAM         VAR WORD        ' Sensör HAM okuma değeri
ISI         VAR WORD        ' Hesaplanmış ISI değeri
Float       VAR WORD        ' Holds remainder for + temp C display
X           VAR WORD       
ISARET_BITI   VAR HAM.Bit11   '   +/- sıcaklık İşaret biti,  1 = olursa eksi sıcaklık
EKSI_ISI   CON 1           ' Sıfır altında isaret biti=1  oluyor kontrol için
DERECE     CON 223         ' ° işareti
ISARET     VAR BYTE        '  ISI değeri için  +/-  işaret
TEMP        VAR BYTE       ' Div32 bit hesap için geçici değişken
SYMBOL COMM_PIN=PORTB.1   ' One-wire Data-Pin "DQ" PortB.0 da

   
    symbol ROLE1=PORTC.0
    symbol ROLE2=PORTC.1
    symbol ROLE3=PORTC.2
    SYMBOL ROLE4=PORTC.3
    SYMBOL BUZER=PORTE.0
   
    RTC_RST     var PORTC.5
    RTC_CLK     var PORTC.6
    RTC_DTA     var PORTC.4
'-----------------------------B A Ş L A N G I Ç ------------------------------   
          LOW ROLE1
          LOW ROLE2
          LOW ROLE3
          LOW ROLE4
        PAUSE 20
    ' CLEAR: 'TRISA=%00111111:TRISB=0
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       
         PAUSE 500:ISARET=0
        LCDOUT $FE,$40,$6,$9,$9,$6,$0,$0,$0,$0        'derece işareti dataları   
        LCDOUT $FE,$48,$04,$0e,$0e,$0e,$1f,$04,$04,$0
        LCDOUT $FE,$50,10,0,17,17,17,17,14,0 'LCD 2. KARAKTER HAFIZASI Ü HARFİ
        LCDOUT $FE,$58,16,8,4,2,4,8,16,0     'LCD 3. KARAKTER HAFIZASI YON İŞARETİ   
GIRIS:
         LCDOUT $FE,$82, "OTOMATIK KULUCKA"           
         lcdout $FE,$C5,"MAKINESI"
         lcdout $FE,$95,"TASARIM ve YAZILIM"
         lcdout $FE,$D9,"FERHAT YOL"
         PAUSE 2000
         LCDOUT $FE,1
         
'-------------------------------------------------------------------------------
BASLANGIC:
SYC=0
AYAR=1
READ $07,GN:IF GN=255 THEN GN=1
READ $01,TERM:IF TERM=255 THEN TERM=0
READ $02,NEM:IF NEM=255 THEN NEM=0
READ $09,DUR:IF DUR=255 THEN DUR=0
READ $10,ZAM:IF ZAM=255 THEN ZAM=0
READ $11,A:IF A=255 THEN A=1
READ $12,SY
READ $13,AYR
gosub ZAMAN_OKU
                   
BASLA: 
              KONTROL=%00000011:HAMISI=0   'SICAKLIK ÖLÇME
        GOSUB OLCUMAL
        Gosub ISIHESAP
              KONTROL=%00000101:HAMISI=0   'RUTUBET ÖLÇME
        GOSUB OLCUMAL
        GOSUB RUTHESAP:GOSUB SENSOROKU
        GOSUB ORTISI
        GOSUB ZAMAN_OKU
        GOSUB GUNEBAK
        GOSUB EKRAN1
        GOSUB ISIKONTROL
        GOSUB RUTKONTROL
        IF AYR=0 THEN
        GOSUB HAVAKONTROL
        ELSE
        LOW ROLE4
        ENDIF
        IF SY=1 THEN GOSUB DONUSEBAK   
        IF AYAR_D=1 THEN  GOTO AYAR_MENUSU

goto BASLA       
'---------------------------------------EKRANA YAZ -----------------------------
EKRAN1:
        lcdout $FE,$80,2,"=",DEC2 ISI1,",",DEC1 ISI2," A=",DEC2 ISI,",",DEC1 (FLOAT)," S=",DEC2 TERM,",",DEC1 A
        lcdout $FE,$C0,"ORTISI=",DEC2 ORTAISI,",",DEC1 CNY,0,"C NEM%",DEC2 U1
        LCDOUT $FE,$94,"SAAT ",DEC2 SAAT,":",DEC2 DAK,":",DEC2 SN," ",DEC2 GN,".GUN"
        LCDOUT $FE,$D4,"TARIH ",DEC2 GUN,"/",DEC2 AY,"/",DEC2 YIL
            IF SN=DUR THEN LOW ROLE3
        IF SAAT=0 AND DAK=0 AND SN=0 THEN
               GN=GN+1
            IF GN=31 THEN GN=1
            WRITE $07,GN
         ENDIF
        RETURN
'''''''''''''''''MOTOR ÇALIŞ '''''''''''''''''
DONUSEBAK:
        'HER SAAT BAŞI ÇEVİR
                 IF ZAM=1 AND DAK=0 AND SN=0 THEN
                 HIGH ROLE3
                 ENDIF

        IF ZAM=2 THEN 'İKİ SAATTE BİR ÇEVİR
                 
             
                 IF SAAT=0 AND DAK=0 AND sn=0 THEN
                 HIGH ROLE3
                 ENDIF               
                 
                 IF SAAT=2 AND DAK=0 AND sn=0 THEN
                 HIGH ROLE3
                 ENDIf                 
                 
                 IF SAAT=4 AND DAK=0 AND sn=0 THEN
                 HIGH ROLE3
                 ENDIF               
                 
                 IF SAAT=6 AND DAK=0 AND sn=0 THEN
                 HIGH ROLE3
                 ENDIF                 

                 IF SAAT=8 AND DAK=0 AND sn=0 THEN 
                 HIGH ROLE3
                 ENDIF

                 IF SAAT=10 AND DAK=0 AND sn=0 THEN 
                 HIGH ROLE3
                 ENDIF               

                 IF SAAT=12 AND DAK=0 AND sn=0 THEN 
                 HIGH ROLE3
                 ENDIF               

                 IF SAAT=14 AND DAK=0 AND sn=0 THEN 
                 HIGH ROLE3
                 ENDIF           

                 IF SAAT=16 AND DAK=0 AND sn=0 THEN 
                 HIGH ROLE3
                 ENDIF                 

                 IF SAAT=18 AND DAK=0 AND sn=0 THEN 
                 HIGH ROLE3
                 ENDIF             

                 IF SAAT=20 AND DAK=0 AND sn=0 THEN 
                 HIGH ROLE3
                 ENDIF

                 IF SAAT=22 AND DAK=0 AND sn=0 THEN 
                 HIGH ROLE3
                 ENDIF
        ENDIF
       
        IF ZAM=3 THEN  '3 SAATTE BİR ÇEVİR
                 IF SAAT=0 AND DAK=0 AND sn=0 THEN
                 HIGH ROLE3
                 ENDIF               
                 
                 IF SAAT=3 AND DAK=0 AND sn=0 THEN
                 HIGH ROLE3
                 ENDIf                 
                 
                 IF SAAT=6 AND DAK=0 AND sn=0 THEN
                 HIGH ROLE3
                 ENDIF               
                 
                 IF SAAT=9 AND DAK=0 AND sn=0 THEN
                 HIGH ROLE3
                 ENDIF                 
                 
                 IF SAAT=12 AND DAK=0 AND sn=0 THEN 
                 HIGH ROLE3
                 ENDIF
                   
                 IF SAAT=15 AND DAK=0 AND sn=0 THEN 
                 HIGH ROLE3
                 ENDIF               
                 
                 IF SAAT=18 AND DAK=0 AND sn=0 THEN 
                 HIGH ROLE3
                 ENDIF               
                 
                 IF SAAT=21 AND DAK=0 AND sn=0 THEN 
                 HIGH ROLE3
                 ENDIF
        ENDIF
                           
        IF ZAM=4 THEN '4 SAATTE BİR ÇEVİR
                 IF SAAT=0 AND DAK=0 AND sn=0 THEN
                 HIGH ROLE3
                 ENDIF               
                 
                 IF SAAT=4 AND DAK=0 AND sn=0 THEN
                 HIGH ROLE3
                 ENDIf                 
                 
                 IF SAAT=8 AND DAK=0 AND sn=0 THEN
                 HIGH ROLE3
                 ENDIF               
                 
                 IF SAAT=12 AND DAK=0 AND sn=0 THEN
                 HIGH ROLE3
                 ENDIF                 
                 
                 IF SAAT=16 AND DAK=0 AND sn=0 THEN 
                 HIGH ROLE3
                 ENDIF
                 
                 IF SAAT=20 AND DAK=0 AND sn=0 THEN 
                 HIGH ROLE3
                 ENDIF           
        ENDIF         
RETURN           

GUNEBAK:
SELECT CASE HAFTA
CASE 1
LCDOUT $FE,$E3,"PTESI"
CASE 2
LCDOUT $FE,$E3," SALI"
CASE 3
LCDOUT $FE,$E3," CARS"
CASE 4
LCDOUT $FE,$E3," PERS"
CASE 5
LCDOUT $FE,$E3," CUMA"
CASE 6
LCDOUT $FE,$E3,"CTESI"
CASE 7
LCDOUT $FE,$E3," PAZR"
END SELECT
RETURN
 
SENSOROKU:
           OWOUT   Comm_Pin, 1, [$CC, $44]' ISI değerini oku
Bekle:
           OWIN    Comm_Pin, 4, [Busy]    ' Busy değerini oku
           IF      Busy = 0 THEN Bekle    ' hala meşgulmü? , evet ise goto Bekle..!
           OWOUT   Comm_Pin, 1, [$CC, $BE]' scratchpad memory oku
           OWIN    Comm_Pin, 2, [HAM.Lowbyte, HAM.Highbyte]' İki byte oku ve okumayı bitir.
           GOSUB   Hesapla
           RETURN
Hesapla:                 ' Ham değerden Santigrat derece hesabı
    ISARET  = "+"
    IF ISARET_BITI = EKSI_ISI THEN
       ISARET   = "-" 
       ham=~ham+2
    endif
    float = (HAM*10)/16        '
    ISI=FLOAT/10 
    RETURN 
'------------------------------- İŞLEM START -----------------------------------
T_START:
      OUTPUT DTA:OUTPUT CLK
        HIGH DTA
         LOW CLK
       PAUSE 1
        HIGH CLK
         LOW DTA
       PAUSE 1
         LOW CLK
       PAUSE 1
        HIGH CLK
       PAUSE 1
        HIGH DTA
         LOW CLK
RETURN
'-----------------------SENSORE KOMUT GÖNDER -----------------------------------
OLCUMAL:
           GOSUB T_Start
        SHIFTOUT DTA,CLK,1,[KONTROL]
           INPUT DTA
         PULSOUT CLK,10
                 HATA=0
             FOR W=0 to 65500
              IF DTA=0 then GIT
            NEXT W
                 HATA=1
GIT:         
              IF HATA=1 then
           endif
         SHIFTIN DTA,CLK,0,[H1]
          OUTPUT DTA
             LOW DTA
         PULSOUT CLK,10
           INPUT DTA
         SHIFTIN DTA,CLK,0,[H0]
         PULSOUT CLK,10
RETURN
'----------------------ISI HESAP ALT PROGRAMI-----------------------------------     
ISIHESAP: 
           If HAMISI<4000 then
              ISARETSHT=1 'sıcaklık eksi değerde demek
              ISI1=(4000-HAMISI)/100
              ISI2=((4000-HAMISI)//100)/10   
         goto ISISON
        endif
              ISI1=(HAMISI-4000)/100
              ISI2=((HAMISI-4000)//100)/10
ISISON:   
           
           ISI1=(HAMISI-4000)/100
           ISI2=((HAMISI-4000)//100)/10
RETURN       
'-------------------------RUTUBET HESAP ALT PROGRAMI----------------------------
RUTHESAP:
              'ISI=ISI1*10+ISI2
              p1=(26542-(54722**HAMISI+hamISI))**HAMISI-25     
              P2=655+(HAMISI*5)+(HAMISI**15917)      
              P3=(P2**(ISISHT*10+2480))-(P2**2730)+P1   
              U1=p3/10:U2=p3//10
           IF HAMISI>3710 THEN
              U1=0:U2=0
        ENDIF 
return

ORTISI:
ORTAISI=((ISI1*10+ISI2)+FLOAT)/20
CNY=((ISI1*10+ISI2)+FLOAT)/2
RETURN
'----------------------------ISI KONTROL----------------------------------------
ISIKONTROL:
         if TERM<ORTAISI then   
          LOW Role1
        ENDIF
        if ORTAISI<TERM AND CNY<A then         
         HIGH ROLE1               
       Endif
        IF MENU=1 THEN AYAR_MENUSU   
RETURN
'----------------------------RUTKONTROL-----------------------------------------         
RUTKONTROL:
           if NEM<U1 then   
         HIGH Role2
         ELSE               
          LOW ROLE2
        ENDIF
        IF MENU=1 THEN AYAR_MENUSU
RETURN

HAVAKONTROL:
FARK=ISI1-ISI
IF FARK.Bit15=1 then FARK=~FARK
IF FARK>1 then
   ROLE4=1
ELSE
   ROLE4=0
ENDIF
IF MENU=1 THEN AYAR_MENUSU
RETURN
'-------------------------------------------------------------------------------
AYAR_MENUSU:
WHILE MENU=1:WEND
GOSUB TEMIZLE
SYC=0
AYARLAR:
IF YUKARI=1 THEN
WHILE YUKARI=1:WEND
SYC=SYC+1
  IF SYC=8 THEN SYC=0
ENDIF

IF ASAGI=1 THEN
WHILE ASAGI=1:WEND
SYC=SYC-1
  IF SYC=255 THEN SYC=7
ENDIF
GOSUB DURUM
GOTO AYARLAR

DURUM:
SELECT CASE SYC
CASE 0
lcdout $fe,$c0,"  ISITICI AYARLARI  "
LCDOUT $FE,$94,"                    "
IF MENU=1 then
WHILE MENU=1:WEND
GOTO TERM_KONTROL
ENDIF
CASE 1
lcdout $fe,$c0,"    NEM AYALARI     "
LCDOUT $FE,$94,"                    "
IF MENU=1 then
WHILE MENU=1:WEND
GOTO NEM_KONTROL
ENDIF
CASE 2
lcdout $fe,$c0,"   CEViRiCi MOTOR   "
LCDOUT $FE,$94,"       AYARI       "
IF MENU=1 then
WHILE MENU=1:WEND
GOTO MOT_AYAR
ENDIF
CASE 3
lcdout $fe,$c0,"   SAAT-TARiH-GUN   "
LCDOUT $FE,$94,"        AYARI       "   
IF MENU=1 then
WHILE MENU=1:WEND
GOTO ZAMANAYARI
ENDIF
CASE 4
lcdout $fe,$C0,"   MANUEL OLARAK    "
lcdout $fe,$94,"   MOTORU CEVIRME   "
IF MENU=1 then
WHILE MENU=1:WEND
GOTO MANUEL
ENDIF
CASE 5
lcdout $fe,$c0,"     GUN AYARI      "
LCDOUT $FE,$94,"                    "     
IF MENU=1 then
WHILE MENU=1:WEND
GOTO GUNAYARI
ENDIF
CASE 6
lcdout $fe,$c0,"SICAKLIK DENGELEYiCi"
LCDOUT $FE,$94,"     FAN AYARI      "
IF MENU=1 then
WHILE MENU=1:WEND
GOTO FANKONTROL
ENDIF
CASE 7
lcdout $fe,$c0,"    MENUDEN CIKIS   "
LCDOUT $FE,$94,"                    "   
IF MENU=1 THEN BASLANGIC
END SELECT
RETURN

MANUEL:
GOSUB TEMIZLE
MANU:
lcdout $fe,$80,"MOTORU CALISTIRMAK "
LCDOUT $FE,$C0,"iCiN YUKLARIYA     "
LCDOUT $FE,$94,"BASINIZ...          "
       IF MENU=1 then
       GOTO AYAR_MENUSU 
       ENDIF         
       
        IF YUKARI=1 THEN
         lcdout $fe,$D4,"MOTOR CALISIYOR  "
        HIGH ROLE3
        ELSE
        lcdout $fe,$D4,"MOTOR KAPALI    "
        LOW ROLE3
        ENDIF
       
GOTO MANU

GUNAYARI:
       WHILE MENU=1:WEND
       GOSUB TEMIZLE
       READ $07,GN
GUNA:     
     LCDOUT $FE,$80,"GUNU AYARLA" 
     lcdout $FE,$C0,"GUN:",DEC2 GN
     IF MENU=1 THEN
      WRITE $07,GN:PAUSE 2
      GOTO AYAR_MENUSU
      ENDIF
     
        IF YUKARI=1 THEN
        GN=GN+1
        IF GN=31 THEN GN=1
        WHILE YUKARI=1:WEND
        ENDIF
       
        IF ASAGI=1 THEN
        GN=GN-1
        IF GN=0 THEN GN=30
        WHILE ASAGI=1:WEND
        ENDIF
             
     GOTO GUNA
     
FANKONTROL:
GOSUB TEMIZLE:
FANKONT:
       lcdout $fe,$80,"FAN DURUMUNU"
       LCDOUT $FE,$C0,"SECINIZ..."
       lcdout $FE,$94,"  ACIK"
       LCDOUT $FE,$D4,"  KAPALI"
       IF MENU=1 THEN
           WRITE $13,AYR:PAUSE 2
           GOTO AYAR_MENUSU
       ENDIF
           IF YUKARI=1 THEN AYR=0
           IF ASAGI=1 THEN AYR=1
       SELECT CASE AYR
           CASE 0
           LCDOUT $FE,$94,3
           CASE 1
           LCDOUT $FE,$D4,3
       END SELECT
GOTO FANKONT
     
             
''''''''''''''''''''''''''''''''''''''''         
MOT_AYAR:
        WHILE MENU=1:WEND
        GOSUB TEMIZLE
        READ $12,SY
MOTOR_AYAR:
       lcdout $fe,$80,"MOTOR DURUMUNU"
       LCDOUT $FE,$C0,"SECINIZ..."
       lcdout $FE,$94,"  ACIK"
       LCDOUT $FE,$D4,"  KAPALI"
           IF MENU=1 THEN
           WRITE $12,SY:PAUSE 2
           GOTO M_ZAMANI
           ENDIF
           IF YUKARI=1 THEN SY=0
           IF ASAGI=1 THEN SY=1
           
           SELECT CASE SY
           CASE 0
           LCDOUT $FE,$94,3
           CASE 1
           LCDOUT $FE,$D4,3
           END SELECT
        GOTO MOTOR_AYAR         
M_CALISMA:
        GOSUB TEMIZLE
        WHILE MENU=1:WEND
        READ $09,DUR
MOTO_CALISMA:
           IF MENU=1 THEN
           WRITE $09,DUR:PAUSE 2
           GOTO AYAR_MENUSU 
           ENDIF
       lcdout $fe,$C0,"MOTOR CALISMA SURESi "
       lcdout $FE,$94,"SURE :",DEC2 DUR," SANIYE"
       
           IF YUKARI=1 THEN
           DUR=DUR+1
           WHILE YUKARI=1:WEND
           ENDIF   
           IF DUR=60 THEN DUR=0
           IF ASAGI=1 THEN
           DUR=DUR-1
           WHILE ASAGI=1:WEND
           ENDIF
           IF DUR=255 THEN DUR=59
         GOTO MOTO_CALISMA                         
M_ZAMANI:
        GOSUB TEMIZLE
        WHILE MENU=1:WEND
        READ $10,ZAM
MOTO_ZAMANI:
        IF ZAM=255 THEN ZAM=1
        IF YUKARI=1 THEN
        ZAM=ZAM+1
        WHILE YUKARI=1:WEND
        ENDIF
        IF ZAM=5 THEN ZAM=4
        IF ASAGI=1 THEN
        ZAM=ZAM-1
        WHILE ASAGI=1:WEND
        ENDIF
        IF ZAM=0 THEN ZAM=1       
        IF MENU=1 THEN
        WRITE $10,ZAM:PAUSE 2
        GOTO M_CALISMA
        ENDIF

        lcdout $fe,$C0,"MOTORU ",DEC1 ZAM," SAATTE BiR"
        lcdout $FE,$94,"CEVRiLSiN.."
GOTO MOTO_ZAMANI
                                                                               
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''   
AYARLANDI:
           IF MENU=1 then AYARLANDI
       lcdout $fe,1
       LCDOUT $FE,$C0,"AYARLAR KAYDEDiLDi.."
       AYAR=1
       AYAR_D=0
       SYC=0
        PAUSE 1000
        GOSUB TEMIZLE
        goto BASLANGIC       
TEMIZLE:
        lcdout $fe,1
RETURN       
'-------------------------------------------------------------------------------
TERM_KONTROL:
       GOSUB TEMIZLE
       READ $01,TERM:READ $11,A       
SET_AYAR: 
LCDOUT $FE,$C0,"ISI LiMiTiNi SECIN"
LCDOUT $FE,$94,"AYAR:",DEC2 TERM,",",DEC1 A         
           IF YUKARI=1 then
              A=A+1
                IF A=10 THEN
                A=0:TERM=TERM+1
                ENDIF
              IF TERM=100 THEN TERM=0
              PAUSE 150
           ENDIF
           IF ASAGI=1 then
              A=A-1
                IF A=255 then
                A=9:TERM=TERM-1
                ENDIF
              IF TERM=255 THEN TERM=99
              PAUSE 150
           ENDIF
               
         IF MENU=1 THEN
         WRITE $01,TERM:PAUSE 2
         WRITE $11,A:PAUSE 2
         GOTO AYAR_MENUSU
         ENDIF
                     
GOTO SET_AYAR 
'-------------------------------------------------------------------------------
NEM_KONTROL:
       GOSUB TEMIZLE
       READ $02,NEM
NEM_KONT: 
       lcdout $fe,$C0,"NEM LiMiT"
       lcdout $FE,$94,"AYARI: %",DEC2 NEM
       
           IF YUKARI=1 then NEM=NEM+1
        WHILE YUKARI=1:WEND
           IF NEM=01 then NEM=121
           
           IF ASAGI=1 then NEM=NEM-1
        WHILE ASAGI=1:WEND
           IF NEM=121 then NEM=01       
            IF MENU=1 THEN
            WRITE $02,NEM:PAUSE 2
            GOTO AYAR_MENUSU 
            ENDIF                 
         GOTO NEM_KONT
       RETURN
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''       
ZAMANAYARI:
WHILE MENU=1:WEND
GOSUB TEMIZLE
ZAMANAYAR:
IF MENU=1 THEN
AYAR=AYAR+1
WHILE MENU=1:WEND
ENDIF
GOSUB BUTONOKU
        LCDOUT $FE,$80,"    ZAMAN AYARI     "       
        LCDOUT $FE,$94,"SAAT ",DEC2 SAAT,":",DEC2 DAK,":",DEC2 SN
        LCDOUT $FE,$D4,"TARIH ",DEC2 GUN,"/",DEC2 AY,"/",DEC2 YIL
GOSUB GUNYAZ
IF AYAR=7 THEN ZAMAN_B
GOTO ZAMANAYAR

GUNYAZ:
SELECT CASE HAFTA
CASE 1
LCDOUT $FE,$E3,"PTESI"
CASE 2
LCDOUT $FE,$E3," SALI"
CASE 3
LCDOUT $FE,$E3," CARS"
CASE 4
LCDOUT $FE,$E3," PERS"
CASE 5
LCDOUT $FE,$E3," CUMA"
CASE 6
LCDOUT $FE,$E3,"CTESI"
CASE 7
LCDOUT $FE,$E3," PAZR"
END SELECT
RETURN

BUTONOKU:
SELECT CASE AYAR
CASE 1
LCDOUT $FE,$C0,"SAAT    "
IF YUKARI=1 THEN
WHILE YUKARI=1:WEND
SAAT=SAAT+1
IF SAAT=24 THEN SAAT=0
ENDIF
IF ASAGI=1 THEN
WHILE ASAGI=1:WEND
SAAT=SAAT-1
IF SAAT=255 THEN SAAT=23
ENDIF

CASE 2
LCDOUT $FE,$C0,"DAKIKA"
IF YUKARI=1 THEN
WHILE YUKARI=1:WEND
DAK=DAK+1
IF DAK=60 THEN DAK=0
ENDIF
IF ASAGI=1 THEN
WHILE ASAGI=1:WEND
DAK=DAK-1
IF DAK=255 THEN DAK=59
ENDIF

CASE 3
LCDOUT $FE,$C0,"GUN    "   
IF YUKARI=1 THEN
WHILE YUKARI=1:WEND
GUN=GUN+1
IF GUN=31 THEN GUN=1
ENDIF
IF ASAGI=1 THEN
WHILE ASAGI=1:WEND
GUN=GUN-1
IF GUN=0 THEN GUN=30
ENDIF

CASE 4
LCDOUT $FE,$C0,"AY    "
IF YUKARI=1 THEN
WHILE YUKARI=1:WEND
AY=AY+1
IF AY=13 THEN AY=1
ENDIF
IF ASAGI=1 THEN
WHILE ASAGI=1:WEND
AY=AY-1
IF AY=0 THEN AY=12
ENDIF

CASE 5
LCDOUT $FE,$C0,"YIL      "
IF YUKARI=1 THEN
WHILE YUKARI=1:WEND
YIL=YIL+1
IF YIL=51 THEN YIL=5
ENDIF
IF ASAGI=1 THEN
WHILE ASAGI=1:WEND
YIL=YIL-1
IF YIL=4 THEN YIL=50
ENDIF

CASE 6
LCDOUT $FE,$C0,"HAFTA     "
IF YUKARI=1 THEN
WHILE YUKARI=1:WEND
HAFTA=HAFTA+1
IF HAFTA=8 THEN HAFTA=1
ENDIF
IF ASAGI=1 THEN
WHILE ASAGI=1:WEND
HAFTA=HAFTA-1
IF HAFTA=0 THEN HAFTA=7
ENDIF
END SELECT
RETURN


ZAMAN_B:
        IF MENU=1 then ZAMAN_B
        gosub ZAMAN_YAZ
goto AYAR_MENUSU       
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
ZAMAN_OKU:
    high RTC_RST:OUTPUT RTC_DTA
shiftout RTC_DTA, RTC_CLK, 0, [$BF]:INPUT RTC_DTA
SHIFTIN RTC_DTA, RTC_CLK, 1, [SN, DAK, SAAT,GUN , AY, HAFTA, YIL, MEM]  'OKU
         MEM=SN:GOSUB CEVIR:SN=SAYI
         MEM=DAK:GOSUB CEVIR:DAK=SAYI
         MEM=SAAT:GOSUB CEVIR:SAAT=SAYI
         MEM=GUN:GOSUB CEVIR:GUN=SAYI
         MEM=AY:GOSUB CEVIR:AY=SAYI
         MEM=YIL:GOSUB CEVIR:YIL=SAYI
         MEM=HAFTA:GOSUB CEVIR:HAFTA=SAYI
     low RTC_RST
  return

ZAMAN_YAZ:
         MEM=sn:gosub TERSCEVIR:sn=SAYI
         MEM=DAK:gosub TERSCEVIR:DAK=SAYI
         MEM=SAAT:gosub TERSCEVIR:SAAT=SAYI
         MEM=GUN:gosub TERSCEVIR:GUN=SAYI
         MEM=AY:gosub TERSCEVIR:AY=SAYI
         MEM=YIL:gosub TERSCEVIR:YIL=SAYI
         MEM=HAFTA:GOSUB TERSCEVIR:HAFTA=SAYI

    high  RTC_RST
SHIFTOUT RTC_DTA, RTC_CLK, 0, [$8E, 0]    'WRT Protek açıldı
     low RTC_RST:PAUSEUS 10
    high RTC_RST         
SHIFTOUT RTC_DTA, RTC_CLK, 0, [$BE, SN, DAK, SAAT,GUN , AY, HAFTA, YIL, 128]  'YAZ
     low RTC_RST
PAUSEUS 10
  return

CEVIR:
         ONLAR=MEM & %01110000
         ONLAR=ONLAR>>4
         BIRLER=MEM & %00001111
         SAYI=ONLAR*10+BIRLER
  return

TERSCEVIR:
         ONLAR=MEM DIG 1
         ONLAR=ONLAR<<4
         BIRLER=MEM DIG 0
         SAYI=ONLAR+BIRLER
  return
 

END
   
     



devreyle ilgili tüm dosyaları aşağıdaki linke yükledim pcb şema kodlar vs.
http://www.dosya.tc/files/ndoMib/kulu_kasonhali.rar.html
Arkadaşlar sizlerin yardımlarınıza ihtiyacım var önerileriniz bekliyorum
Başlık: Ynt: otomatik çiçek sulama projesi bazı sorunlar var lütfen yardım edin!
Gönderen: orhanc - 05 Ağustos 2010, 13:38:01
Çok fazla değişken kullanmışsın bir de if kullanmak yerine case switch kullanırsan kodun epey kısalacaktır.
Başlık: Ynt: otomatik çiçek sulama projesi bazı sorunlar var lütfen yardım edin!
Gönderen: Mucit23 - 05 Ağustos 2010, 13:40:59
evet değişken ler çok fazla oldu bunlar programda fazla yer kaplar program daha çok incelenerek daha iyi bir hale getirilerbilir ve elimden geldiğince select case komutunu kullanmaya çalışıyorum.Şimdilik bu kadarını yapabildim daha iyi nasıl olur bilmiyorum ama asıl sorunum picin çalışmaması ne yapmalıyım sizce
Başlık: Ynt: otomatik çiçek sulama projesi bazı sorunlar var lütfen yardım edin!
Gönderen: orhanc - 05 Ağustos 2010, 13:44:18
pic ayarlarını bir kontrol et muhtemelen ondandır. Benzer birşey benimde başıma geldi c18 de otomatik ayarlar ile çalışmıyor ancak kendim kod ile yazınca geliyordu. Ekranda sadece siyah kareler geliyordu...
Başlık: Ynt: otomatik çiçek sulama projesi bazı sorunlar var lütfen yardım edin!
Gönderen: JKramer - 05 Ağustos 2010, 13:45:31
Alıntı yapılan: mucit23 - 05 Ağustos 2010, 13:31:16
aynı işlemcilerle ufak bi devre üzerindeki röleleri 50 ms aralıklarla açıp kapayacak şekilde ufak bi program yazdım ;  Simülasyonda çalışıyor pice sorunsuz yüklendi ama gerçekte çalışmıyor.
Bence önce bu sorunu çözmelisiniz. Basit bir test programı (led yakıp söndürme) bile çalışmıyorsa (eğer besleme bağlantılarında sorun yoksa) programlayıcınızda sorun olması muhtemel.
Başlık: Ynt: otomatik çiçek sulama projesi bazı sorunlar var lütfen yardım edin!
Gönderen: ete - 05 Ağustos 2010, 13:48:06
PCB de bir hata göremedim. Tabiiki hata derken LCD nin çalışmasını etkileyebilecek hatalardan bahsediyorum. Birde pic in çalışmasını etkileyebilecek kusurlar aradım. Ama hem programda yok ki zaten o simulasyonda çalışıyor.
Sonuçta çalışmayan Pic LCD de tek sıra kareler oluşturur. şayet sende çift sıra kareler var ise kontrast ayarına bakman gerek.
Kontrast için 4K7 trimpot kullanmışsın. Bu bildiğim kadarı ile en uygun 22K dır ancak 10K idare etmektedir. 4K7 hiç kullanmadım ne netice verir bilemiyorum.
Dediğim gibi çift sıra kare var ise kontrast potunu 10K yap ve ayarlamaya çalış.
Onun dışında söyleyebileceğim bir şey yok maalesef.
Rölelere hükmedecek programında çalışmaması devrende sorun olduğunu gösteriyor.
Mutlaka PCB yi iyice incelemen gerekir. Kristalinde de hata olabilir. 1 Nolu (MCLR) pinde High varmı onada bir bak.

Ete
Başlık: Ynt: otomatik çiçek sulama projesi bazı sorunlar var lütfen yardım edin!
Gönderen: Mucit23 - 05 Ağustos 2010, 13:54:41
evet haklısın galiba usb Brener kullanıyorum bide 16F84 içişn flaşör gibi bi program yazayım öyle bi programlayıcıyı test edeyim akşama deniyecem inş sorunu tez zamanda çözeriz eğer oda çalışmazsa kesinlikle proramlayıcı sorun vardır.çünkü bi flaşör programıda 16f877için yazdım oda çalışmadı 
Alıntı yapılan: ete - 05 Ağustos 2010, 13:48:06
PCB de bir hata göremedim. Tabiiki hata derken LCD nin çalışmasını etkileyebilecek hatalardan bahsediyorum. Birde pic in çalışmasını etkileyebilecek kusurlar aradım. Ama hem programda yok ki zaten o simulasyonda çalışıyor.
Sonuçta çalışmayan Pic LCD de tek sıra kareler oluşturur. şayet sende çift sıra kareler var ise kontrast ayarına bakman gerek.
Kontrast için 4K7 trimpot kullanmışsın. Bu bildiğim kadarı ile en uygun 22K dır ancak 10K idare etmektedir. 4K7 hiç kullanmadım ne netice verir bilemiyorum.
Dediğim gibi çift sıra kare var ise kontrast potunu 10K yap ve ayarlamaya çalış.
Onun dışında söyleyebileceğim bir şey yok maalesef.
Rölelere hükmedecek programında çalışmaması devrende sorun olduğunu gösteriyor.
Mutlaka PCB yi iyice incelemen gerekir. Kristalinde de hata olabilir. 1 Nolu (MCLR) pinde High varmı onada bir bak.

Ete


etehocam dediğiniz gibi lcd ekranın 1. ve 3. satırında kareler var yani çift sıra pot 4k7 kullanmıştım akşam onuda 10k ile değiştirecem  inş sorun çözülür  Ayrıca röleleride kendim test ettmi teker teker kendim iletime geçirdim hiçbirinde sorun yok
Başlık: Ynt: otomatik çiçek sulama projesi bazı sorunlar var lütfen yardım edin!
Gönderen: orhanc - 05 Ağustos 2010, 13:57:28
pic de bozulmuş olabilir onu da değiştirmeyi dene bence
Başlık: Ynt: otomatik çiçek sulama projesi bazı sorunlar var lütfen yardım edin!
Gönderen: ete - 05 Ağustos 2010, 13:59:51
4 sıra da da Kareler olsa idi Kontrast dan şüphelenmemiz gerekir idi. Ancak atlamalı 2 sıra başıma gelmeyen bir olay.
Bu durumda tek suçlu bana Pic miş gibi geliyor.

Ete
Başlık: Ynt: otomatik çiçek sulama projesi bazı sorunlar var lütfen yardım edin!
Gönderen: Mucit23 - 05 Ağustos 2010, 14:04:20
Bencede öyle iki adet pic ile denedim ikisindede aynı sonuç yarın yeni bir pic almayı deniyecem yada sadece giriş yazısı çıkacak şekilde programı 18F452 ye uyarlıyayım ekranda sadece giriş yazısı yazsın  elimde birkaçtane 18F452 den var
Başlık: Ynt: otomatik çiçek sulama projesi bazı sorunlar var lütfen yardım edin!
Gönderen: Mucit23 - 05 Ağustos 2010, 14:07:17
Alıntı yapılan: ete - 05 Ağustos 2010, 13:59:51
4 sıra da da Kareler olsa idi Kontrast dan şüphelenmemiz gerekir idi. Ancak atlamalı 2 sıra başıma gelmeyen bir olay.
Bu durumda tek suçlu bana Pic miş gibi geliyor.

Ete
dediğiniz gibi olabilir hocam çünkü pot ile karelerin parlaklığı ayarlanabiliyor
Başlık: Ynt: otomatik çiçek sulama projesi bazı sorunlar var lütfen yardım edin!
Gönderen: ete - 05 Ağustos 2010, 14:10:00
18F452 mi kullanıyorsun yoksa 16F877 midir. Hangisi. Simulsayon 877 ye göre verilmiş.

Şayet 18F452 ile çalışıyor isen en iyisi 877 ye göre bir program derle ve onu dene kartın üzerinde. Bak bakalım çalışacakmı?

Ete
Başlık: Ynt: otomatik çiçek sulama projesi bazı sorunlar var lütfen yardım edin!
Gönderen: orhanc - 05 Ağustos 2010, 14:11:29
Atlamalı 2 sıra picin ayarlarından kaynaklanıyor aynı şey başıma geldi :)
Başlık: Ynt: otomatik çiçek sulama projesi bazı sorunlar var lütfen yardım edin!
Gönderen: Mucit23 - 05 Ağustos 2010, 14:13:02
hocam hepsindede 16F877 kullandım kusura bakmayın aklınızı biraz karıştırdım sadece 18F452 yi deneme için kullanayım dedim
Alıntı yapılan: orhanc - 05 Ağustos 2010, 14:11:29
Atlamalı 2 sıra picin ayarlarından kaynaklanıyor aynı şey başıma geldi :)

orhan bey picin ayarları derken hangi ayarları yapılması gerekiyor
Başlık: Ynt: otomatik çiçek sulama projesi bazı sorunlar var lütfen yardım edin!
Gönderen: orhanc - 05 Ağustos 2010, 15:10:11
ben 18f452 ve 18f4620 kullanmıştım ayarları şu şekilde


Bu 18F4620 için
__CONFIG(1, HS & IESODIS & FCMDIS);
__CONFIG(2, PWRTDIS & BORDIS & WDTDIS & WDTPS128);
__CONFIG(3, CCP2RB3 & LPT1DIS & MCLREN);
__CONFIG(4, STVREN & LVPDIS & DEBUGDIS  & XINSTDIS);
__CONFIG(5, UNPROTECT);
__CONFIG(6, UNPROTECT);
__CONFIG(7, UNPROTECT);

Bu 18F452 için

__CONFIG(1, HS )
__CONFIG(2, PWRTDIS & BORDIS & WDTDIS & WDTPS128);
__CONFIG(3, CCP2RB3)
__CONFIG(4, STVREN & LVPDIS & DEBUGDIS)
__CONFIG(5, UNPROTECT);
__CONFIG(6, UNPROTECT);
__CONFIG(7, UNPROTECT);



Başlık: Ynt: otomatik çiçek sulama projesi bazı sorunlar var lütfen yardım edin!
Gönderen: yorulmaz06 - 05 Ağustos 2010, 15:53:44
Selamlar
Mucit23 hocam simulasyonda ısıtıcı rölesi çalışmıyor hata bendemi bi bakabilirmisiniz.? Birde baskı devrede butonların altındaki menu art azlt yazan pinlere +5v gireceğiz heralde ?
Başlık: Ynt: otomatik çiçek sulama projesi bazı sorunlar var lütfen yardım edin!
Gönderen: Mucit23 - 06 Ağustos 2010, 13:27:07
merhaba arkadaşlar
Arkadaşlar aklımı yemek üzereyim ne yapacağımı bilmiyorum
pic programlayıcıyı test ettmi sorun onda değil 16F628 için bi animasyon programı yazdım sorunsuz çalıştı hiç sorun çıkarmadan yüklendi 16F877 ve 18F452 içindebazı lcd de yazı yazması için bazı programlar yazdım sorunsuz bi şekilde derleniyor simülasyonda çalışıyor ama kart üzerinde çalışmıyor elim kolum bağlandı resmen sizce başka ne yapmalıyım neden karta takınca çalışmıyor bu işlemciler nerede hata yapıyorum bilmiyorum kartı defalarca inceledim ama bulamadım başka önerebileceğiniz bişey varmı ne yapayım ?
Başlık: Ynt: otomatik çiçek sulama projesi bazı sorunlar var lütfen yardım edin!
Gönderen: Mucit23 - 06 Ağustos 2010, 13:28:00
Alıntı yapılan: yorulmaz06 - 05 Ağustos 2010, 15:53:44
Selamlar
Mucit23 hocam simulasyonda ısıtıcı rölesi çalışmıyor hata bendemi bi bakabilirmisiniz.? Birde baskı devrede butonların altındaki menu art azlt yazan pinlere +5v gireceğiz heralde ?
ilk başta set değerini girmelisiniz ondan çalışmıyordur
Başlık: Ynt: otomatik çiçek sulama projesi bazı sorunlar var lütfen yardım edin!
Gönderen: Mucit23 - 06 Ağustos 2010, 15:07:54
arkadaşlar diyorumki sorun acaba 7805ten kaynaklanabilirmi yani 7805 picinçalışmasını etkileyecek bi durum yaratırmı.7805 in çıkışını ölçtüğümde yaklaşık 5.10 ile 5.6 volt arasında normalden biraz yüksek gibi.
devre üzerinde denemek için 18F452 yi kullanarak devre üzerindeki buzzeri 500 ms aralıklarla açıp kapatacak şekilde bi program yazdım devreye takıp enerji verdiğimde buzzerden hiç ses çıkmıyor demekki pic çalışmıyor  ama enerjiyi keser kesmez bi anlık olarak buzzerden ses çıkıyor.Her nedendense picin çalışmasını etkileyen bir etmen var ortada ama bi türlü çözemedim 
Başlık: Ynt: otomatik çiçek sulama projesi bazı sorunlar var lütfen yardım edin!
Gönderen: ete - 06 Ağustos 2010, 15:12:13
Pic'i yerinden sök ve devrenin voltajını tekrar ölç. Şayet 5V dan fazla ise 7805'ide değiştir bence.

Pic in çalışmadığı kesin ama sebep bir sürü olabilir.
Muhtemel olanlar;

1. 7805
2. Pic in kendisi
3. Kristal
4. Kristal kondansatörleri 22-33pf arasında bir değer olmalı.
5. Pic in besleme bacaklarına 100nf kondansatör bağlanmamış olması
6. LCD bacaklarının yerlerinin değişik olması

Ete
Başlık: Ynt: otomatik çiçek sulama projesi bazı sorunlar var lütfen yardım edin!
Gönderen: Mucit23 - 06 Ağustos 2010, 15:36:44
akşam kesinlikle 7805 i değitirecem çünkü kullandığım 7805 bence kaliteli değil st marka kullanmalıyım ayrıca picin besleme bacaklarınada 100nf kondansatör bağlıyacam bu kadar aldığım önlemden sonra inşaallah çalışır artık bu projeyle herkesin kafasını çok yordum bu beni çok üzüyor ama bi devreyi toparlıyabilsem her şeyi düzenliyecem derli toplu olarak yenişbaşlık altında yayınlayacam
Başlık: Ynt: otomatik çiçek sulama projesi bazı sorunlar var lütfen yardım edin!
Gönderen: yorulmaz06 - 06 Ağustos 2010, 17:23:11
Alıntı yapılan: mucit23 - 06 Ağustos 2010, 13:28:00
Alıntı yapılan: yorulmaz06 - 05 Ağustos 2010, 15:53:44
Selamlar
Mucit23 hocam simulasyonda ısıtıcı rölesi çalışmıyor hata bendemi bi bakabilirmisiniz.? Birde baskı devrede butonların altındaki menu art azlt yazan pinlere +5v gireceğiz heralde ?
ilk başta set değerini girmelisiniz ondan çalışmıyordur


yok hocam ne yaptıysam çalışmadı anladığım kadarıyla iki sensörü birden kontrol ediyo bunu tek sensöre ayarlasak
Başlık: Ynt: otomatik çiçek sulama projesi bazı sorunlar var lütfen yardım edin!
Gönderen: Alfa - 06 Ağustos 2010, 23:16:47
açık şemadaki direnç değerleriyle baskı devredekiler aynı değil ilk verdigin devreyi yaptıgımda da sapıtmıştı bence bi kontrol et,dirençlerden olabilir.deneme şansım olmadı sht11 gelsin başlıyacagım.
Başlık: Ynt: otomatik çiçek sulama projesi bazı sorunlar var lütfen yardım edin!
Gönderen: Mucit23 - 07 Ağustos 2010, 13:59:20
hocam sonunda devreyi çalıştırdım sorun tahmin ettiğim gibi çıktı 7805 bozukmuş.Beni çok uğraştırdı ama şimdi çok güzel çalışıyor saattede simülasyondaki gibi yavcaşlama yok gayet stabil çalışıyor yardımcı olan arkadaşlara ve ete hocama teşekkürler.
Alıntı yapılan: yorulmaz06 - 06 Ağustos 2010, 17:23:11
Alıntı yapılan: mucit23 - 06 Ağustos 2010, 13:28:00
Alıntı yapılan: yorulmaz06 - 05 Ağustos 2010, 15:53:44
Selamlar
Mucit23 hocam simulasyonda ısıtıcı rölesi çalışmıyor hata bendemi bi bakabilirmisiniz.? Birde baskı devrede butonların altındaki menu art azlt yazan pinlere +5v gireceğiz heralde ?
ilk başta set değerini girmelisiniz ondan çalışmıyordur


yok hocam ne yaptıysam çalışmadı anladığım kadarıyla iki sensörü birden kontrol ediyo bunu tek sensöre ayarlasak
senin sorununu farkkettim galiba aynı sorun bendede var ben set değerini nomalde ortalama ısıyla karşılaştırmasını istiyordum ama herhalde yazılımsal bi sorun var kısa zamanda çözerim inş
Başlık: Ynt: otomatik çiçek sulama projesi bazı sorunlar var lütfen yardım edin!
Gönderen: yorulmaz06 - 07 Ağustos 2010, 15:38:07
Sorunu çözdüğüne sevindim Mucit23 hocam role mümkünse ds18b20 ile çalışsın :D bu arada PM ni gördünmü?
Başlık: Ynt: otomatik çiçek sulama projesi bazı sorunlar var lütfen yardım edin!
Gönderen: Mucit23 - 09 Ağustos 2010, 12:34:06
merhaba arkadaşlar yardımlarınız için teşekkür ederim.Devrem çok iyi çalışıyor.
ısı kontrol sorununuda çözdüm galiba ben virülden sonraki haneyide hesaba katmışım ama bu kadar ince hesaba gerek yok o yüzden virgülden sonraki hanyi işin şçinden çıkartım şimdi tüm sistem çok iyi çalışıyor ,
yorulmaz kardeş eğer ısı kontrol kısmı ds18b20'yi dikkate almasını istiyorsan ısı kontrol kısmını aşağıdaki gibi değiştirmelisin

ISIKONTROL:     
if TERM<ISI then           
LOW Role1       
ENDIF       
i ISI<TERM
HIGH ROLE1
Endif       
RETURN


Ayrıca arkadaşlar size sormak istediğim bi konu daha var şu toggle komutu hakkında bildiğimiz gibi bu komutun işlevi herhangi bi bitin durumunu değiştirmektir yani 1 ise 0 0 ise 1 yapar
peki ben bu komutla yine bir bit boyutundaki bir değişkenin durumunu değiştirebilirmiyim
yani
toggle sayı dediğimde sayının durumu değişirmi ?

Başlık: Ynt: otomatik çiçek sulama projesi bazı sorunlar var lütfen yardım edin!
Gönderen: ete - 09 Ağustos 2010, 12:47:55

Toggle  komutu BIT bazında bir PIC pini'nin konumunu değiştirmek için kullanılır. Aslında komutun açıklamasında değişkenler için değil de Pic pinleri için kullanılacağı vurgulanmış. Ancak pinleri birer değişkene bağlamış iseniz tabiiki değişkenede uygulanır.
TOGGLE SAYI denildiğinde her komut işletiminde SAYI (BIT değişkeni) değeri 0 dan 1'e şayet 1 ise 1 den 0'a döner.
Bu komut SAYI=1-SAYI komutu ile aynı işlevi yapar.

AMa sanki Byte değişkenine TOGGLE komutu uygulamak istermişin gibi bir şey sezinledim? Şayet böyle bir şey istiyor isen;
Toggle komutunu kullanamazsın. Onun yerine ;
SAYI VAR BYTE
SAYI=63
SAYI=255-SAYI
şeklinde bir komut kullanabilirsin. Böylece her komut çalıştırıldığında bitler ters çevrilecektir.

Ete
Başlık: Ynt: otomatik çiçek sulama projesi bazı sorunlar var lütfen yardım edin!
Gönderen: Mucit23 - 10 Ağustos 2010, 13:44:37
evet hocam kuluçka makinası programını olabildiğince hafifletmeye çalışıyorum bu yüzden bazı değişkenlerin boyutunu küçültüyorum tabi gereken yerlerden örnek vermek gerekirse çevirici motorun açık veya kapalı olduğunu belirleyen sayı adında birdeğişken vardı önceden byte boyutundaydı bize lazım olan bir veya sıfır 1 ise motor açık sıfır ise motor kapalı bunun gibi programda sadece iki değer alan değişkenlerin boyutunu küçültüyorum
motorun açık veya kapalı olduğunu ayarladığım menüde önceden iki adet buton ile kontrol ediyordum şimdilik tek buton ile işimi hallediyorum burada toggle komutu lazım oldu dediğiniz gibi dün denedim olduda şimdi herşey gayet normal
Başlık: Ynt: otomatik çiçek sulama projesi bazı sorunlar var lütfen yardım edin!
Gönderen: Mucit23 - 11 Ağustos 2010, 14:26:24
Merhabalar Ete hocam;
Kuluçka makinası projemde garip bi durum var.Bu konua sizin fikrinizi almak istiyorum projemin son halinde iki adet ısı sensörü kullanmıştım biri ds18B20 diğeri SHT11 ama iki sensörüde aynı ortamda yan yana koyduğumda SHT11, DS18B20den  1 bazen iki derece yüksek gösteriyor hangisine inanacağımı şaşırdım doğrusu!.Aslında bana kalırsa ds18b20 daha doğru gösteriyor çünkü çeşitli termometrelerle test ettim ds18b20 daha az hata yapıyor.Acaba bu sensörlerin farklılığındanmı kaynaklanıyor yoksa hesaplamadan dolayımı kaynaklanıyor.Bu nu düzeltmenin bi yolu varmıdır acaba ne önerirsiniz.?
Başlık: Ynt: otomatik çiçek sulama projesi bazı sorunlar var lütfen yardım edin!
Gönderen: ete - 11 Ağustos 2010, 14:33:11
Ben sensörden kaynaklandığını sanıyorum.
Benim bir projem vardı Meteorolojik Monitör isimli.
Bu projeyi bir arakdaş tez olark hazırladı ve İstanbul'da bulunan bir test kuruluşuna vererek test sertifikası aldı.
Bu sertifikaya bakarsan SHT-11 ölçümlerinin son derece hassas bir şekilde olduğu belirtilmdi.
Sertifikanın bir kopyası elimde. Anlayacağın SHT-11 sensörününde doğruluğundan şüphe edemeyiz.
Ancak sensörler yan yana bile dursa ikisi aynı yerde durmamış oluyorlar. Mutlaka sensörler arasında 1 derecelik fark olabiliyor. Bu fark artı eksi yönde olabilir. Bazen olmuyor ama genelde oluyor maalesef. İki DS18B20 sensörünüde aynı konumda tutmama rağmen aralarında fark görmüş idim. Bana kalırsa 1 derecelik farkları fark olarak görmeyin. 2 derecelik fark şayet sürekli kalıyorsa ortada bir hata vardır diye şüphelenin. Arada sırada 2 derecelik farklar oluşuyorsa onuda göz ardı ediniz.

Kolay Gelsin
Ete
Başlık: Ynt: otomatik çiçek sulama projesi bazı sorunlar var lütfen yardım edin!
Gönderen: Mucit23 - 11 Ağustos 2010, 14:43:00
anbladım hocam simülasyonda dikkatimi çektide nedense benim yaptığım saatli ve dereceli uygulamalarda her zaman ds 18b20 programı çok yoruyor hatırlarsanız otomatik çiçek sulama projemde saat çok yavaş ilerliyordu programda ds18b20 yi iptal edince saat normale dönde aynı şey kullaçka makinasındada öyle oldu ama bu durumları artık pek dikkate almıyorum çünkü gerçekte herşey normal şekilde çalışıyor gerçi otomatik çiçek sulama projesini daha hayata geçiremedim ama emini oda sorunsuz çalışacaktır.
Bişey daha sormak istiyorum şu WİRE sistemi hakkında tek hatla iletişim
Birden fazla snsörü aynı hatta bağlayarak ölçüm yapılıyor.Benim bu konuda hiç bir bilgim yok acaba sizin bu konuda bi uygulamanız ve örnek kodunuz varmı

Bu arada Ramazanı Şerif'iniz hayırlı olsun
Başlık: Ynt: otomatik çiçek sulama projesi bazı sorunlar var lütfen yardım edin!
Gönderen: Mucit23 - 20 Ağustos 2010, 13:20:48
merhabalar ete hocam sizden bi konuda fikir almak istiyorum.şu şifreli kilitler hakkında
4x3 matrix tuş takımı kullanılan bi şifreli kilit sisteminde 4iyelimki şifre 4 ile 8 hane arasında olması gerekiyor.
tuş takımından gelen tuş bilgilerini nasıl tek bir sayıda toplarız.eğer şifre olarak 8 haneli bir şifre girlirse bunu tek bir sayıda toplayamayız şifreyi ikiye bölmek gerekir iki word değişkeninde tutulması gerekir acaba sizin bu tür bi şifreli kilit uygulamanız varmı.acaba bu işin asıl mantığı nedir yoksa sayıları toplamak yeirne basılan her tuşu ayrı ayrı bir değişkendemi sakmak daha iyi olur ne tavsiye edersiniz
Başlık: Ynt: otomatik çiçek sulama projesi bazı sorunlar var lütfen yardım edin!
Gönderen: ete - 20 Ağustos 2010, 13:56:02
Bu tür işlerde genelde ben 3 haneyi bir değişkene veririm.
Örnekle açıklamak daha iyi olacak sanırım. Diyelimki, şifren 63.541.873 şeklinde bir sayı olsun.
Girilen değerler sırası ile,
3 - 7 - 8 bu üçü bir değişkene verilecek, program 3 hanenin girilip girilmediğine bakacak girilmiş ise bir sonraki değişkene atlayacak.
sonra ikinci değişkene 1-4-5 rakamları verilecek
üçüncü değişkene ise 3 ve 6 sayları verilecek.
Bu şekilde 3 adet WORD değişkeni ile 8 hatta 9 haneli sayıları bir araya getirmek mümkün.

Ete
Başlık: Ynt: otomatik çiçek sulama projesi bazı sorunlar var lütfen yardım edin!
Gönderen: Mucit23 - 26 Ağustos 2010, 14:36:52
Merhabalar ete hocam
Hocam dediklerinizi çok iyi anladım.Kendi yaptığım bi sistemde kullandım pin kodu gibi 4 haneli bi giriş şifresi yapmam gerekiyordu.Burada kullandım çok iyi oldu.

Hocam aklıma şöyle bi uygulama geldi sizden fikir almak istiyorum.
Hocam sizin led displayli saat ve termomtere devreleriniz çok iyi çalışıyor.1,5 sene önce yaptığım 10cm displayli saat ve termometreyi hala evimde kulllanıyorum ve hiçbir sorun yok.Bunun için teşekkür ediyorum size
benim yapmayı düşündüğüm şey ise 8 adet 74hc595 ile 60 adet led sürmek 60 adet led saniyeyi temsil edecek saniye ile birlikte bu ledler artacak saniye sıfırlanınca tüm ledler sönüp tekrar baştan başlıyacak.
Programsal olarak sizden fikir almak istiyorum
acaba 74 hc 595 lere ledler ile ilgili bilgiyi her saniye değerini ayrı ayrı değerlendirerekmi göndereyim.
yani eğer saniye 1 ise verı=1
saniye 2 ise verı=3
saniye 3 ise verı=xx ..... saniye 60 ise ver=xx gibi

aslında bu hiçte iyi bi yöntem değil zaten örnek olarak verdim acaba bunu yapmanın daha iyi bir yolu varmıdır
Başlık: Ynt: otomatik çiçek sulama projesi bazı sorunlar var lütfen yardım edin!
Gönderen: ete - 26 Ağustos 2010, 16:07:17
Aslında DS1307 kullanırsan işin çok kolay gibi geliyor bana.
595 leri seri bir birine bağladığında ilkinin Data girişini HIGH yapıp sonra DS1307 nin frekans çıkışınıda 1 Hz ye ayarlayıp bu çıkışı 595 lerin CLK girişine verirsen al sana otomatik bir sistem. Her 1 sn yede bir ledler bir ilerler. Teorik olarak bu çalışır denemek gerekir.

Yok DS1307 kullanman DS1302 kullanırım dersen, o zaman her sn değişiminde CLK palsini senin pic ile üretmen gerekir.

Ete
Başlık: Ynt: otomatik çiçek sulama projesi bazı sorunlar var lütfen yardım edin!
Gönderen: Mucit23 - 26 Ağustos 2010, 16:15:23
Aslında hocam bunu bende düşünüdüm fakat şöyle bişey var ds1302 veya ds1307 hafıza pili sayesinde saati hafızasında tutabiliyor ve devam ettiriyor. Picin enerjisi kesildiğinde ledler yanmaz ama saat ilerler terkrar enerjilendiğinde ledler sıfırdan saymaya başlar fakat ds 1302 sıfırdan sayamaya başlamayabilir, bu sefer displayler ile ledler arasında bi çakışma olacaktır. Örnek vermek gerekirse saniye 32  iken ledler sıfırdan saymaya başlayacağı için farklı bişey gösterecektir. Bu yüzden devreyi ilk çalıştırdığımızda ds1302 içerisindeki saniye bilgisi kaç ise ledlerde otomatikme o saniyeden saymaya devam etmelidir.Benim aklıma bu geldi. eğer rtc kullamasaydım keme ile saat yapsaydım sizi dediğiniz gibi olurdu fakat rtc ile olmayacak gibi
[/quote]
Başlık: Ynt: otomatik çiçek sulama projesi bazı sorunlar var lütfen yardım edin!
Gönderen: Mucit23 - 26 Ağustos 2010, 16:18:16
Belki bu ıf komutuyla yapılabilir ama bu programı çok yoracaktır. Ayrıca ıf komutunu fazla kullanmak istemiyorum bu bende kötübi alışkanlık haline geliyor.Tabiki yine en iyisini siz bilirsiniz.
Başlık: Ynt: otomatik çiçek sulama projesi bazı sorunlar var lütfen yardım edin!
Gönderen: ete - 26 Ağustos 2010, 16:25:13
Program ilk çalıştığında zaten saniye bilgisine denk gelen değeri 595 lere yüklemen gerekir. Bu ise zor bir şey değil.

Ete
Başlık: Ynt: otomatik çiçek sulama projesi bazı sorunlar var lütfen yardım edin!
Gönderen: Mucit23 - 26 Ağustos 2010, 16:29:06
Şimdi anladım hocam ilk başta rtc den saniyeyi okuyup 74hc595lere gönderecem ondan sonra pals göndererek saymayı devam ettirecem.Bu aklıma gelmemişti doğrusu teşekkür ederim hocam
sağlıcakla kalın.
Başlık: Ynt: otomatik çiçek sulama projesi bazı sorunlar var lütfen yardım edin!
Gönderen: Mucit23 - 26 Ağustos 2010, 17:04:33
ete hocam ds1307 nin datasheedine baktımda orada 9. sayfada yazıyor. ds1307nin frekans çıkışından 1 hz  almak için 07H adresinde bulunan control registerinin 10010000 olması gerekiyor
bunu ds1307 yazmak için aşagıdaki gibi bi kod kullanabilirmiyim.
I2CWrite DATA,CLK,$D0,$07,[144]
Kontrol kodunu $D0 kullandım acaba doğrumudur.
Başlık: Ynt: otomatik çiçek sulama projesi bazı sorunlar var lütfen yardım edin!
Gönderen: ete - 26 Ağustos 2010, 17:42:53
Komut doğru.

Ete
Başlık: Ynt: otomatik çiçek sulama projesi bazı sorunlar var lütfen yardım edin!
Gönderen: Mucit23 - 02 Eylül 2010, 13:29:27
merhabalar ete hocam
Sizin Yapmış olduğunuz kayan yazı devrelerinden olan 96 sütün türkçe karakterli kayan yazı devresini 32 sütüna indirdim.
32 sütün için programda gerekli değişiklikleri yaptım simülasyonda çok iyi gözüküyor.
Devreyi boarda kurdum çalıştırdım fakat bir türlü düzgün görüntü elde edemedim.
Devrede katot matrix kullandım ama bi türlü doğru bağlantıları bulamadım.
Acaba devreyi kurarken özellikle dikkat etmem gereken bişey varmı.
yani picin portbsine satırlarmı yoksa sütünlarmı bağlanacak ve 74595 in çıkışlarıda
şekilde satırlarmı sütünlarmı bağlanması gerekiyor. Birde acaba hangi sırayla bağlanması gerekiyor.Müsait bir zamanınızda bu konuda bilgi verirseniz çok memnun olurum.
kullandığım isis  şemasını hex ve bas dosyasını aşağıda ekliyorum yine bi müsait bi
zamanınızda incelerseniz sevinirim.
http://www.dosya.tc/file/3bIrSx/32s_t_nt_rk_ekarakterli.rar.html

Ayrıca birde dikkatimi çekti!
Belki sormak haddim değil ama yaptığınız programlarda yazı olarak hep aşağıdaki yazıyı kullanmışsınız.
"ETE PICMAN KAYAN YAZI PROGRAMI DENEME YAZISIDIR. TOPLAM KAREKTER ADEDI 127 ADET OLABILIR. MATRIKS SAYISI ARTIRILABILMEKTEDIR"
acaba bu kayan yazı devreleri picman(Umut KAZANÇ) bey ile ortak bi çalışmanızmı?
Başlık: Ynt: otomatik çiçek sulama projesi bazı sorunlar var lütfen yardım edin!
Gönderen: ete - 02 Eylül 2010, 14:29:20
Söze kayan yazı programlarını yazmaktan nefret ettiğimi söyleyerek başlayayım.
Çünki gerçekten çetrefilli bir iş ve elinde donanım yok ise güzel program yazmak zor.
Bense hiç bir zaman kayan yazı devresini fiziki olarak yapmadım. Genelde simulasyonları kullanarak bir çok kayan ve sabit yazı programı yazdım.
Bu arada da bazı kayan yazı programlarını çalışır hale getirip bazılarınıda programda iyileştirmeler yaptım.

Picman isimli arkadaşı tanımıyorum. Bu programı bir kaç sene önce yazdım veya kısmen düzenledim belkide çok iyi hatırlamıyorum.
Bu ismin Umut Kazanç ile bir bağlantısı varmı yokmu onuda bilmiyorum.

Gelelim senin sorununa, Öncelikle her gördüğün devreyi yapmamalısın. Bu gibi devreler simulasyon amaçlı olup gerçek devrede çalışması için bazı devre tadilatları isterler. Mantık olarak düşün, bir 75HC595 yalnızca 1 led sürebilir.  Pic pinleride öyle en fazla 20-25ma akım verirler. Matrix ledlerde bir ortak uç birde ledin diğer ucu bulunmaktadır. Ortak uç teorik olarak 8 adet led sürecek şekilde bağlanmalıdır. Yani bu uç ya bir transistörler yada TPIC595 gibi bir shift register ile sürülmelidir.
Halbuki bu devrede satırlar direk pic den çıkan uç ile sürülmüşler. Bu ise devrenin simulasyon amaçlı yapıldığını gösteriyor.

Devre aslında sütun taramalı sistemde hazırlanmış. 74HC595 ler sütünları tarıyorlar. Karekter bilgisi ise satırdan veriliyor. Hangi sütun aktif ise ona ait satır bilgisi pic den veriliyor belli bir süre bekliyor ve bir sonraki sütun aktif edilip ona ait bilgi veriliyor ve bu iş bu şekilde devam ettiriliyor.

Şimdi senin yapman gereken 74HC595ler yerine TPICB595 kullanmak olabilir ancak programda değişiklik yapmak şartı ile. Hatırladığım kadarı ile TPIC ler high verilince LOW çıkartıyor idi. Yanılıyorda olabilirim.  Halbuki 595ler başlangıçta $FF ile yüklenip tek bir LOW sinyali bütün pinleri dolaşmaktadır. Şayet hatırladığım doğru ise TPIC takılınca bütün TPIC ler LOW ile yüklenip HIGH sinyali dolaştırılmalıdır. Sen High verdiğinde o LOW çıkartacaktır.
Matrix lere dikkat etmek gerekiyor. Bu devrede ortak ANOT (yani Pozitif voltaj ile beslenen) matrix kullanılmıştır. Ledlerin diğer uçlarına LOW sinyal tatbik etmek gerekiyor. Tek dikkat etmen gereken ortak anot matrix alıp ortak uçları tespit etmek ve şemaya göre doğru bağlantıyı yapmak olmalıdır. Ortak uçlar şemda 74HC595 lere bağlanmış diğer uçlar pic den gelen satır pinlerine bağlanmıştır.

Hepsi bu kadar.

Ete

Not: Bu programı pek hatırlayamadım. Bazı yerleri bana ait o kesin ama sanki melez bir program. Yardım ettiğim bir proje lerden biri olabilir.

Başlık: Ynt: otomatik çiçek sulama projesi bazı sorunlar var lütfen yardım edin!
Gönderen: Mucit23 - 02 Eylül 2010, 15:35:09
Merhabalar ete hocam bağlantı şemasını daha iyi anlamam için aşağıdaki gibi bi matrix bağlantı şeması oluşturdum
Oluşturduğum şema
http://img830.imageshack.us/img830/7525/emaj.jpg

ilk başta kullandığım matrixlerin iç yapısı resim 2 deki gibiydi dolayısıyla bağlantılarıda ona göre yaptım
kullandığım matrixler anottu.
Şimdi ise katot display kullanmam gerek dolayısıyla onun bağlantı şemasıda resim 1 e göre olur dolayısıyla bağlantıları resim 1 e göre yapmam gerek değilmi doğrumudur acaba
Edit:Resim linki yenilendi.
Başlık: Ynt: otomatik çiçek sulama projesi bazı sorunlar var lütfen yardım edin!
Gönderen: ete - 02 Eylül 2010, 15:42:19
Bağlantı linki şeması bozuk çıkmış. Ya düzelt yada yenile.

E-Posta da atabilirsin.

Ete
Başlık: Ynt: otomatik çiçek sulama projesi bazı sorunlar var lütfen yardım edin!
Gönderen: Mucit23 - 08 Eylül 2010, 16:17:32
Merhabalar ete hocam. Hocam sizin  led displayli saat ve termometre devrenizden yaptım. Bu saatten önceden defalarca yaptım fakat hiç birinde böyle enterasan bi sorunla karşılaşmadım. Ana çalışma modundayken  saat ayarlama menüsüne girmiyor hiç birşekilde tuşa cevap vermiyor. Fakat menü tuşuna basılı haldeyken enerji verirsem  saat ve  derecenin ekranda kalma süreleri ayarlıyorum
Başlık: Ynt: otomatik çiçek sulama projesi bazı sorunlar var lütfen yardım edin!
Gönderen: Mucit23 - 08 Eylül 2010, 16:23:06
Normal çalışmada ekranda sadece 00 00 gözüküyor. Menü tuşu ile saat ayarlama menüsüne giremiyorum. Sizce bunun sebebi ne olabilir. Size sormadan önce sorunu çözmek için çok uğraştım belki pcb de sorun vardır diye yeni pcb ye yaptım ama sorun aynı sizin fikirlerinizi almak istiyorum.  (Hocam anlamadığim bi sebebten dolayı karakter sınırı oluşuyor bu yüzden iki mesaj halinde yazdım.) 
Başlık: Ynt: otomatik çiçek sulama projesi bazı sorunlar var lütfen yardım edin!
Gönderen: Mucit23 - 08 Eylül 2010, 20:16:09
Anlam veremiyorum hocam birsürü bu devreden yaptım fakat ilk defa böyle bi sorunla karşılaşıyorum. Gerçekten bana çok anlamsız geliyor normal çalışma durumunda picin çalışmasını engelliyecek ne gibi bi durum olabilir. Saat ve tarihin ekranda kalma sürelerini ayarlıyorum. Fakat normal çalışmada hiç bir işlem yapmıyor ekranda devamlı 00 00 gösteriyor sizin yardımlarımızı bekliyorum.
Başlık: Ynt: otomatik çiçek sulama projesi bazı sorunlar var lütfen yardım edin!
Gönderen: ete - 08 Eylül 2010, 20:35:00
Bende bir anlam veremedim. Atladığın bir şey olmalı mutlaka.
Bence tuşlardan birisinde kısa devre gibi bir şey olabilir ve o tuş bırakmadığı için diğerlerini program görmüyordur.
Yada program ya zaman okuma yada sensör okuma kısmına gidip orada takılıyordur. Oradan dönemediği içinde sec tuşuna basılıp basılmadığını göremiyordur.

Bulmak için programda Başla satırından sonraki gosubları bir kapat ve programı pice yükle bakalım sec tuşunu görecekmi.
Görüyor ise anlaki gittiği bir yerde takılıp kalıyor. Sen yinede sensör ve RTC kısmınıda iyice gözden geçir derim.
Ete
Başlık: Ynt: otomatik çiçek sulama projesi bazı sorunlar var lütfen yardım edin!
Gönderen: Mucit23 - 08 Eylül 2010, 23:10:23
Ete hocam dediklerinizi uyguladim dediğiniz gibi yapınca set tuşunu gördü. Bende ilk başta ısı sensorunu çıkardım sorun bir nevi çözüldü. Artık saati ayarlıyabili yorum. Sensor takılı olmadığı halde saat ilerliyordu devreyi tekrar kapatıp açınca yine saat durdu. Bu sefer saati ayarlıyorum saat ve dakikayi azarladıktan sonra set tuşuna basınca saniye ledi flash yapıp yanık kalıyor.
Başlık: Ynt: otomatik çiçek sulama projesi bazı sorunlar var lütfen yardım edin!
Gönderen: Mucit23 - 08 Eylül 2010, 23:21:42
Aslında ben soyle düşünüyorum saati azarladıktan sonra rtc ye kaydedilip programin devam etmesi gerekiyor. Ama tam burada program donuyor bence çünkü saniye ledi sönmüyor. Programda kesme ile bir sayaç saydıriliyor. Ana programda soyle bir kod var if sayaç=30 then porta.3=0  yani eğer pic donmasaydı led sonerdi. Ama anlamıyorum rtc çalışıyor kristali değiştirdim. Ama saat ilerlemiyor. 
Başlık: Ynt: otomatik çiçek sulama projesi bazı sorunlar var lütfen yardım edin!
Gönderen: Mucit23 - 08 Eylül 2010, 23:22:46
Hocam rtcyi başka çalışan bir saate takıyorum orada çalışıyor.
Başlık: Ynt: otomatik çiçek sulama projesi bazı sorunlar var lütfen yardım edin!
Gönderen: ete - 09 Eylül 2010, 09:38:03
DS1302 çok nazlı bir RTC bu yüzden sevmiyorum ve artık projelerimde DS1307 kullanıyorum. Hiç naz etmiyor.
DS1302 nin kristal bağlantısı son derece kritik. Data sheet de gösterildiği gibi kesinlikle kristal bacaklarının GND ile çevrilmesi gerekiyor. BUnu yapmaz iseniz bazen alışıyor bazende çalışmıyor.
Senin devrende PCB şeklinden kaynaklanan bir sorun olduğu düşüncesindeyim. DS1302 başka yerde çalışabilir ama başka yere kristali ile birlikte aktarman gerek. Sorunun kaynağı kesinlikle DS1302 bana kalırsa ya kristali yada kendisi.
Ama yazdıklarına bakarak sıcaklık sensöründe de sorun var gibi gözüküyor. Bu ikisinden birisi arızalı yada PCB de göremediğin bir kusur var. Başkada izah şekli yok bu problemi.

Ete
Başlık: Ynt: otomatik çiçek sulama projesi bazı sorunlar var lütfen yardım edin!
Gönderen: Mucit23 - 09 Eylül 2010, 10:04:49
Hocam kristalin dış kılıfıni ve çevresini gnd ile çevirdim. Gerçektende çok nazlı bugünden sonra ds1302 ile  eski yaptığım saatlerin nasıl çalıştığına şaşıyorum. Öncekilerde emin olunki datasheetteki anlatılanların hiç birine uymuyordum. Galiba bu birazda işin rast gitmesiyle alakalı.
Başlık: Ynt: otomatik çiçek sulama projesi bazı sorunlar var lütfen yardım edin!
Gönderen: Mucit23 - 09 Eylül 2010, 12:21:47
Merhabalar ete hocam. Aslında rtcnin günahını biraz fazla almışız. :) Rtc çalışıyor.  Aslında işin sorumlusu pic ve ısı sensörü normalde pic çalışıyor gibi görünüyor. Saat ayarlama menüsüne giriyor ondan sonra donuyordu. Diğer çalışan saat devresinin işlemcisini yeni saate takınca saat çalıştı fakat ısı sensörünü takınca yine bozuluyor.
Başlık: Ynt: otomatik çiçek sulama projesi bazı sorunlar var lütfen yardım edin!
Gönderen: Mucit23 - 09 Eylül 2010, 12:27:59
Yeni yaptığım saatin işlemcisini eski çalışan saate takınca eski çalışanda bozuluyor. Anlamıyorum görünüşte kısmen çalışıyor. Ya pic tam programlanmıyor yada pic bozuk en iyisi bayramdan sonra temiz bir pic ve ısı sensorü almak olacak . Bu arada bayramıniz mübarek olsun.
Başlık: Ynt: otomatik çiçek sulama projesi bazı sorunlar var lütfen yardım edin!
Gönderen: Mucit23 - 09 Eylül 2010, 12:28:08
İşin ilginç tarafı programlayıci pici tanıyıp ve programı yüklemesi bozuk olsaydı herhalde programlayıcı tanımazdı herhalde
Başlık: Ynt: otomatik çiçek sulama projesi bazı sorunlar var lütfen yardım edin!
Gönderen: ete - 09 Eylül 2010, 20:43:44
Pic in programlanıyor olması sağlam olduğunu kesinlikle göstermez. baze yalnızca bir pin bozuluyor üstelik o pinin çıkış kısmı bozuluyor. Aynı pini input yapınca çalışıyor output yapınca çalışmayabiliyor. Bu nedenle programlanma ile sağlamlığı kesinlikle bağdaştırma.

Ete
Başlık: Ynt: otomatik çiçek sulama projesi bazı sorunlar var lütfen yardım edin!
Gönderen: muhittin_kaplan - 09 Eylül 2010, 20:45:30
Bu olayı yaşadım Hocam. Sadece Portd si bozuk bir picle bir hafta uğraşmıştım.
Başlık: Kuluçka Makinesi Hakkında.
Gönderen: cemkaan - 23 Eylül 2010, 02:16:08
Merhaba (  *** MUCİT23 *** ) kuluçka makine projeni uzun zamanda beri takip ediyorum çok güzel oldu galiba sonunda.Ben pıc işine yeni başladım elimde 16f877a var onun üzerinde bu projeyi uygulamak istiyorum aynı zamanda uygularkende ögrenmek istiyorum, eğer sonra haline gelmişse bunun (***LYT - BAS - DSN ***) dosyasıyla bilrlikde paylaşırsan hafta sonu yapmak istiyorun.benimde senin gibi kuluçka makinesinde civcilerim var makine kontakları arıza yapıtı eger projeni payşasırsan sevinirim.aynısını uygulayıp sizlere bilgi veririm.
teşekkurler. ???
Başlık: Ynt: otomatik çiçek sulama projesi bazı sorunlar var lütfen yardım edin!
Gönderen: Mucit23 - 27 Eylül 2010, 15:23:33
Tabiki vereyim sizde yararlanın. Devre son haliyle çok iyi çalışıyor.
Buyrun
http://s1.dosya.tc/file/HJKAOE/kulu_kasonhali.rar.html
Başlık: Ynt: otomatik çiçek sulama projesi bazı sorunlar var lütfen yardım edin!
Gönderen: cemkaan - 27 Eylül 2010, 16:10:00
teşekkürler dosyaları aldım deneyecegim dikkat etmem önemli birşey varmı.ütü baskı yaparak başlıyorum.
Başlık: Ynt: otomatik çiçek sulama projesi bazı sorunlar var lütfen yardım edin!
Gönderen: Mucit23 - 28 Eylül 2010, 10:21:18
Merhaba arkadaşlar bişey sormak istiyorum. DS1302 hakkında
DS 1302 içerisinde saat, dakika, saniye, gün , ay, yıl ve hafta içerisindeki gün bilgilerini yürütebiliyor . Peki Ds1302 hangi ayın kaç gün çektiğini hesaplıyabiliyormu yani diyelim aylardan ağustos ise o ay içerisindeyken günün 31 gün olduğunu aylardan eylül iken 30 gün olduğunu Yada şubatın 28 gün olduğunu hesaplarmı yoksa biz dışarıdanmı hesaplatmalıyız. Nasıl olur sizce
Başlık: Ynt: otomatik çiçek sulama projesi bazı sorunlar var lütfen yardım edin!
Gönderen: JKramer - 28 Eylül 2010, 10:44:43
Kataloğunda 2100 yılında kadar artık yıllar (böyle mi deniyordu?) dahil otomatik halledildiği yazıyor. Dışarıdan hesaplatmanıza gerek yok.
Başlık: Ynt: otomatik çiçek sulama projesi bazı sorunlar var lütfen yardım edin!
Gönderen: Mucit23 - 28 Eylül 2010, 10:46:01
tamam çok teşekkür ederim
Başlık: Ynt: otomatik çiçek sulama projesi bazı sorunlar var lütfen yardım edin!
Gönderen: cemkaan - 04 Ekim 2010, 11:52:47
Merhaba (MUCiT) devreni yapyım sorunsuzca çalışıyor gibi test ediyorum . ama bu arada saat kısmındaki (** saniye **  ) geçikmeli geliyor neden dir açaba  sende bunu yaptımı.
Başlık: Ynt: otomatik çiçek sulama projesi bazı sorunlar var lütfen yardım edin!
Gönderen: Mucit23 - 04 Ekim 2010, 12:00:08
Aslında simülasyondada biraz gecikmeli çalışıyor. Ama bende geçekte hiçbir geçikme olmuyor. Gayet akıcı. Simülasyonda gecikme olmasıda bence proteusdan kaynaklanıyor. Ete hocamında dediği gibi birçok işi aynı anda yaptığı için bazı durumlarda biraz yavaşlıyor. Ben simülasyonda şöyle bir tespit yaptım. önceden bu programın ilk halinde iki adet sensör yoktu. yani sadece nem sensörü vardı. Saatte hiçbir sorun yoktu fakat ds 18b20 eklediğim zaman  saatte yavaşlamalar oluşuyordu. Bu birtek kuluçka makinasında değil diğer başka projelerdede böyle davranıyordu özelliklede program biraz ağırsa saatte epeyi yavaşlama oluyordu. Tabiki bu anlattıklarım simülasyon ortamındaki deneyimmlerim kuluçka makinasını gerçek ortamda yaptım. yavaşlama olmadı. Belkide saat kristali kalitesizdir.
Başlık: Ynt: otomatik çiçek sulama projesi bazı sorunlar var lütfen yardım edin!
Gönderen: cemkaan - 04 Ekim 2010, 16:20:43
 18b20   VE SHT 11 devrede takılı değil ama saniye sanki 5 er 5 er atlıyor gibi kristalin kalitesiz olması bir ihtimal ama ben aynı kristallerle başka bir saat devresi yaptım hersey normal acaba kodla ilgisi olabilirmi.saat kristalı  32.768  acaba bumu yanlış acaba. teşekkurler.
Başlık: Ynt: otomatik çiçek sulama projesi bazı sorunlar var lütfen yardım edin!
Gönderen: Mucit23 - 05 Ekim 2010, 08:29:44
saniye 5 er 5 er atladığına göre ds1302 de sorun olmayabilir sorun bence picde o çok yavaş çalışıyor. kristali 4MHz taktığına eminmisin.
Başlık: Ynt: otomatik çiçek sulama projesi bazı sorunlar var lütfen yardım edin!
Gönderen: cemkaan - 05 Ekim 2010, 15:27:26
sorun çözüldü sht11 takınca hersey normale döndü ama bu seferde ds18b20 den sıcaklık bilgisi gelmiyor lm35 denedim yine gelmiyor senin başınada böyle bir sorun geldimi 3 tane ds18b20 denedim hiç biride sıcaklık bilgisini göndemedi .teşekkurler
Başlık: Ynt: otomatik çiçek sulama projesi bazı sorunlar var lütfen yardım edin!
Gönderen: Mucit23 - 05 Ekim 2010, 18:54:41
Data hattını  incele 4.7K dirençle pull-up yapıtınmı
Başlık: Ynt: otomatik çiçek sulama projesi bazı sorunlar var lütfen yardım edin!
Gönderen: omereliusuk - 05 Ekim 2010, 19:37:47
F SAYAC=0 THEN
LCDOUT $FE,$CC,"PZTS"
ENDIF
IF SAYAC=1 THEN
LCDOUT $FE,$CC,"SALI"
ENDIF
IF SAYAC=2 THEN
LCDOUT $FE,$CC,"CARS"
ENDIF
IF SAYAC=3 THEN
LCDOUT $FE,$CC,"PERS"
ENDIF
IF SAYAC=4 THEN
LCDOUT $FE,$CC,"CUMA"
ENDIF
IF SAYAC=5 THEN
LCDOUT $FE,$CC,"CTESI"
ENDIF
IF SAYAC=6 THEN
LCDOUT $FE,$CC,"PAZR"
ENDIF

ŞUNLARI SELECT CASE İLE YAPSAN DAHA İYİ OLUR GİBİ GELİYOR BANA
Başlık: Ynt: otomatik çiçek sulama projesi bazı sorunlar var lütfen yardım edin!
Gönderen: cemkaan - 06 Ekim 2010, 18:48:47
mucit merhaba

Sorun 1 : Sorunu hallettim soguk lehim varmış simdi bilgi alıyor.biraz başını agrıtıyorum ama bir sorunum daha var 220 v rolesine elektrik verince motor açıp kapatmalarında pic kendini ya resetliyor yada parazit alıyor ledler yanıp yanıp sonuyor ekran gidip gidip geliyor sen böyle bir sorunla karşılaştınmı.

Sorun 2:

    '   if TERM > ORTAISI then   
     '   LOW   Role1
     '   ENDIF
      '  if ORTAISI+0 < TERM+0 then 
       '  HIGH  ROLE1               
     '  Endif

orjinal kod bu ama bu kusurat algılamıyor. bende
       
         if CNY < A   then
         LOW   Role1   
         ENDIF   
             
           if CNY > A   then
          HIGH  ROLE1         
         ENDIF         

SHT 11 GELEN DEGERiN SONUNDAKI KUSURATI BIR TURLU ALGILATAMADIM. 37,5 ROLENiN KAPANMASI LAZIM 37,4 AçMASI LAZIM OLMADI NE YAPTIMSA OLMADI NEDENDiR ACABA.if lerde bir yanlışlık yapıyorum acaba.
Başlık: Ynt: otomatik çiçek sulama projesi bazı sorunlar var lütfen yardım edin!
Gönderen: Mucit23 - 07 Ekim 2010, 07:27:20
1. sorunun cevabına bakalım doğrusunu söylemek gerekirse ben hiç böyle bir sorunla karşılaşmadım şaşırdım doğrusu olabilecekleri söylüyorum şimdi elektronik kartın şasesi herhangi bir nedenden dolayı motorun şasesiyle birleşebilir.Devreyi dış dünya ile tamamen izole etmelisin.
2. soruna bakılırsa  Aslında ben ilk başlarda virgülden sonraki haneyide hesaba katıyordum. fakat öyle pek verimli olmadığını gördüm çünkü virgülden sonraki hane lineer bir şekilde hareket etmiyordu. Bu yüzden tek haneye düşürdüm. Yani küsüratı hesaba katmaması normal bişeydir
Başlık: Ynt: otomatik çiçek sulama projesi bazı sorunlar var lütfen yardım edin!
Gönderen: omereliusuk - 11 Ekim 2010, 22:49:48
SA
hocam termostata röle takmak ciddi sorunlar doğurabilir. aç kapa nereye kadar. ALİMALLAH günün birinde çıkışlar birbirine yapışır. sonra ya yumurtaları pişirirsiniz ya da dondurursunuz. ama illa röle takacaksanız mcp serisi bir 0 geçiş ile bağlayın. böylece 0 voltta röle tetiklenir. yapışma olayı da olmaz.
Başlık: Ynt: otomatik çiçek sulama projesi bazı sorunlar var lütfen yardım edin!
Gönderen: cemkaan - 12 Ekim 2010, 00:19:13
mucit merhaba ...
tüm sorunları halletim ama son olarak 2 sorum daha kaldı.

Sorun 1 : SHT11 dogru nem bilgisi gelmiyor bende eski makinenin üzerinde çalışan nem ölçerin tam yanına bağlıyorum eski sağlam olan nemi %51 gösterirken sht11 %21 gösteriyor  ve sürekli nem değişiyor %99 gösterirken birden bire %21 bazende % 55 gibi sürekli değişen degerler veriyor.Kablo mesafesi olabilir diye kablosunu kısaltım ama yine aynı. Sensorden dogru bilgi alamıyor SHT11 Bozuk olabilir diye 1 tane daha aldım ama aynı.. Hesaplamada bir sorun olabilirmi , senin kodların dogru ise bana verirmisin.


Sorun 2:  Ayarladığım nem %60 algınan %10 normalde rolenin açık olması lazım ama açmıyor ve tam tersi oldugunda kapatmıyor , buda başka bir sorun devrenin dogru olduna eminim çunku roleyi bell
aralıklarla açan kapan bir kod yazdım o çalışıyor.

RUTKONTROL:
           if NEM<U1 then   
         HIGH Role2
         ELSE               
          LOW ROLE2
        ENDIF
        IF MENU=1 THEN  GOTO AYAR_MENUSU
RETURN

Sanki bu kodlar burada yokmuş gibi davranıyor.Microcode studio plus yapıyorum acaba editörde bir sorun var sen hangi programda bunu sorunsuzca yaptın.
2 haftadan beri bununla uğrasıyorum.yardımların için şimdiden teşekkurler.



Başlık: Ynt: otomatik çiçek sulama projesi bazı sorunlar var lütfen yardım edin!
Gönderen: Mucit23 - 21 Kasım 2010, 19:15:23
Neden microcode studio plusu kullanıyorsun ki bu sınırlı bi versiyon onun yerine benim verdiğim versiyonu kullan bu daha iyi ben tüm işlerimi bununla yapıyorum. Kurarken rar dosyasının içinde ilk önce bu yazan  microcode studio yu kur dosyasını kur. Sonrada diğer dosyayı yani pbp yi kurman gerek. Pbp yi kurarken microcode studionun c deki mecanique dosyasının içine kurmayı unutma. Sonra mcs yi açıp compile and program options dan pbp yi buldunmu tamamdır.

Yaşadığın sorunlara gelince anlma veremiyorum sensörlerin sağlam olmasına rağmen böyle bir hata veriyorsa sorun derleyicinde olabilir. Micro code studio plus sınırlı kod yazmaya imkan verdiği için böyle sorunlar yaratmış olabilir birde bu derleyiciyle dene bakalım sonuç ne olacak

http://hotfile.com/dl/84040825/b7411f8/mcp.rar.html (http://hotfile.com/dl/84040825/b7411f8/mcp.rar.html)