T

KULUÇKA MAKİNASI

Başlatan toys-23, 08 Eylül 2011, 21:21:08

toys-23

Merhabalar Ete Hocam

Hocam bildiğim kadarıyla sizin yazılımınız yada sizin formüllerinizle yazılmış bir kuluçka makinası devresi vardı.Bende merakımdan yaptım vede denemek içinde 8 adet yumurta koydum.Yumurta ve civcivler sizlere ömür.
Daha öncelerden daha basit bi devre ile civciv çıkardım az cok deneyimim var vede neredeyse hepsi çıktı.Ama o devrede derece ondalık olarakta çalışıyordu yani 37.3 derece de röleyi çekmeye ayarladığımızda çekiyordu bu bahsettiğim hayal kırıklığına yol açan yazlımda ise 1 er derece ile ilerliyor malesef buda istenilen hassasiyeti sağlayamuyor ve sonuç hüsran ben yazılımında az buçuk tecrübemle bişeler yapmaya çalıştım ama beceremedim bana yardımcı olun lütfen.
Bu devreyi kaldırıp atacağım ama hem bunu çözemezsen bu kurt beni yer hemde devrede sht11 kullanılmıstı 2 adet aldım bende nolur nolmaz diye bunlar pahalı baya, devrede biraz pahalıya mal oldu yani atamuyorumda lütfen yardımm
Şimdiden teşekkür ederim.

DEFINE OSC 4

@ DEVICE pic16F877
@ DEVICE pic16F877, WDT_ON
@ DEVICE pic16F877, PWRT_ON
@ DEVICE pic16F877, PROTECT_OFF
@ DEVICE pic16F877, XT_OSC

TRISA=%111111
TRISB=%00000000
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   2   
ADCON1 = 7             
'---------------------------değişkenler-----------------------------------------
    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
    Y        VAR    BIT
    SAYAC    VAR    BYTE
    TERM     VAR    BYTE
    NEM      VAR    BYTE
    KONTROL  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    HAM.BYTE0
    H1       VAR    HAM.BYTE1
    HAM        VAR    WORD
    RAW      var    word
    ISI      VAR    WORD
    RUT      VAR    WORD
    P1       VAR    WORD
    P2       VAR    WORD
    P3       VAR    WORD             
    C        VAR    WORD
    B        VAR    WORD
    W        VAR    WORD
    DUR      VAR    BYTE
    CLK     VAR     PORTA.5
    DTA     VAR     PORTA.3 
    ISARET  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
   
    symbol ROLE1=PORTC.0
    symbol ROLE2=PORTC.1
    symbol ROLE3=PORTC.2
    SYMBOL BUZER=PORTC.3
   
    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,1, "KULUCKA MAKiNESi"               
         lcdout $FE,$C0,"   VERSIYON 1.6  "
         PAUSE 2000
         LCDOUT $FE,1
gosub ZAMAN_OKU
           HIGH BUZER:PAUSE 50:LOW BUZER         
BASLA: 
              KONTROL=%00000011:HAM=0   'SICAKLIK ÖLÇME
        GOSUB OLCUMAL
        Gosub ISIHESAP:GOSUB EKRAN1
       'PAUSE 250
              KONTROL=%00000101:HAM=0 'RUTUBET ÖLÇME
        GOSUB OLCUMAL
        GOSUB RUTHESAP
       'GOSUB EKRAN2
        pause 200
        GOSUB ISIKONTROL
        GOSUB RUTKONTROL
           IF MENU=1 THEN
        WHILE MENU=1:WEND
         GOTO AYAR_MENULERI
        ENDIF
         goto BASLA       
'---------------------------------------EKRANA YAZ -----------------------------   
EKRAN1:   
         GOSUB ZAMAN_OKU
         GOSUB DONUSEBAK
          READ $07,GUN
          IF GUN=255 THEN GUN=1
        lcdout $FE,$80,DEC2 ISI1,".",dec1 ISI2 ,0,"C   ",DEC2 GUN,".GUN"
        lcdout $FE,$C0,"NEM:",DEC2 U1 ,"  ",DEC2 SAAT,":",DEC2 DAK,":",DEC2 SN
          READ $09,DUR
            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
         PAUSE 600
         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
''''''''''''''''TEK BIP'''''''''''''''''''''''''''''''''       
BIP:
    HIGH buzer   
     for sayac=0 to 2
pauseus 65535
    next
     LOW buzer 
  RETURN
''''''''''''''''ÇİFT BİP''''''''''''''''''''''''''
  BIPBIP:
     HIGH buzer   
    PAUSE 50
      LOW buzer
    PAUSE 100
     HIGH BUZER
    PAUSE 50
      LOW BUZER
  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 ham<4000 then
              ISARET=1 'sıcaklık eksi değerde demek
              ISI1=(4000-HAM)/100
              ISI2=((4000-ham)//100)/10   
         goto ISISON
        endif
              ISI1=(HAM-4000)/100
              ISI2=((HAM-4000)//100)/10
ISISON:   
           
           ISI1=(HAM-4000)/100
           ISI2=((HAM-4000)//100)/10
RETURN       
'-------------------------RUTUBET HESAP ALT PROGRAMI----------------------------
RUTHESAP:
              'ISI=ISI1*10+ISI2
              p1=(26542-(54722**ham+ham))**ham-25     
              P2=655+(HAM*5)+(HAM**15917)        
              P3=(P2**(ISI*10+2480))-(P2**2730)+P1   
              U1=p3/10:U2=p3//10
           IF ham>3710 THEN
              U1=0:U2=0
        ENDIF 
return
'----------------------------ISI KONTROL----------------------------------------
ISIKONTROL:
         read 1,TERM
           IF TERM=255 THEN TERM=0
           if TERM<ISI1-0 then   
          LOW Role1
         ELSE
        ENDIF
           if ISI1<TERM+0 then         
         HIGH ROLE1               
        Endif     
RETURN
'----------------------------RUTKONTROL-----------------------------------------         
RUTKONTROL:
         READ 2,NEM
           IF NEM=255 THEN NEM=0
           if NEM<U1 then   
         HIGH Role2
         ELSE               
          LOW ROLE2
        ENDIF
RETURN
'-------------------------------------------------------------------------------
AYAR_MENULERI:
        WHILE MENU=1:WEND
       GOSUB TEMIZLE
ISI_AYARI:
       lcdout $fe,$c0,"   ISI LiMiTi   "
           IF MENU=1 then
        WHILE MENU=1:WEND
         GOTO TERM_KONTROL
        ENDIF

           IF ASAGI=1 then
        WHILE ASAGI=1:WEND
         GOTO NEM_AYARI
        ENDIF
   
           IF YUKARI=1 then
        WHILE YUKARI=1:WEND
         GOTO GUNN
        ENDIF
         GOTO ISI_AYARI
     
NEM_AYARI:

       lcdout $fe,$c0,"   NEM LiMiTi   "
           IF MENU=1 then
        WHILE MENU=1:WEND
         GOTO NEM_KONTROL
        ENDIF
           
           IF ASAGI=1 then
        WHILE ASAGI=1:WEND
         GOTO CIK
        ENDIF
         
           IF YUKARI=1 then
        WHILE YUKARI=1:WEND
         GOTO ISI_AYARI
        ENDIF
         
         goto NEM_AYARI     

CIK:
       WHILE MENU=1:WEND
       GOSUB TEMIZLE
CK:
     
       lcdout $fe,$c0," MENUDEN CIKIS "
           IF MENU=1 then
        WHILE MENU=1:WEND
         GOTO BASLA
        ENDIF
         
           IF ASAGI=1 then
        WHILE ASAGI=1:WEND
         GOTO MOTO
        ENDIF
         
           IF YUKARI=1 then
        WHILE YUKARI=1:WEND
         GOTO NEM_AYARI
        ENDIF   
         goto CK
MOTO:
        GOSUB TEMIZLE
MOTOR:
       
       lcdout $fe,$c0," CEViRiCi MOTOR "
           IF MENU=1 then
        WHILE MENU=1:WEND
         GOTO MOT_AYAR
        ENDIF
         
           IF ASAGI=1 then
        WHILE ASAGI=1:WEND
         GOTO SAATT
        ENDIF
         
           IF YUKARI=1 then
        WHILE YUKARI=1:WEND
         GOTO CIK
        ENDIF   
         goto MOTOR
SAATT:
       GOSUB TEMIZLE
SAT:
       lcdout $fe,$c0,"  SAAT AYARI   "
       
           IF MENU=1 then
        WHILE MENU=1:WEND
         GOTO SAATAYAR1
        ENDIF
         
           IF ASAGI=1 then
        WHILE ASAGI=1:WEND
         GOTO GUNN
        ENDIF
         
           IF YUKARI=1 then
        WHILE YUKARI=1:WEND
         GOTO MOTO
        ENDIF   
         goto SAT
         
GUNN:
       GOSUB TEMIZLE
GUNU:
     lcdout $fe,$c0,"  GUNU SIFIRLA  "
       
           IF MENU=1 then
        WHILE MENU=1:WEND
         GOTO GUNAYARI
        ENDIF
         
           IF ASAGI=1 then
        WHILE ASAGI=1:WEND
         GOTO ISI_AYARI
        ENDIF
         
           IF YUKARI=1 then
        WHILE YUKARI=1:WEND
         GOTO SAATT
        ENDIF   
         goto GUNU
GUNAYARI:
       GOSUB TEMIZLE
       WHILE MENU=1:WEND
GUNA: 
       READ $07,GUN
     lcdout $FE,$C0,"GUN:",DEC2 GUN
     IF MENU=1 THEN AYARLANDI
        WHILE MENU=1:WEND
        IF YUKARI=1 THEN GUN=1
        PAUSE 10
        WRITE $07,GUN
           
           
     GOTO GUNA         
''''''''''''''''''''''''''''''''''''''''         
MOT_AYAR:
        GOSUB TEMIZLE
        WHILE MENU=1:WEND
MOTOR_AYAR:

         READ $0,SAYI
       lcdout $fe,$80,"  MOTOR DURUMU  " 
       
           IF MENU=1 THEN M_ZAMANI
        WHILE MENU=1:WEND
           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 MOTOR_AYAR         
M_CALISMA:
        GOSUB TEMIZLE
        WHILE MENU=1:WEND
MOTO_CALISMA:
         READ $09,DUR
           IF MENU=1 THEN AYARLANDI
        WHILE MENU=1:WEND
       lcdout $fe,$80,"MOT.DONUS SURESi"
       lcdout $FE,$C0,"SURE :",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 $09,DUR
         GOTO MOTO_CALISMA                         
M_ZAMANI:
        GOSUB TEMIZLE
        WHILE MENU=1:WEND
MOTO_ZAMANI:
        READ $10,ZAM
        IF ZAM=255 THEN ZAM=1
        IF YUKARI=1 THEN
        ZAM=ZAM+1
        IF ZAM=5 THEN ZAM=4
        WHILE YUKARI=1:WEND
        ENDIF
       
        IF ASAGI=1 THEN
        ZAM=ZAM-1
        IF ZAM=0 THEN ZAM=1
        WHILE ASAGI=1:WEND
        ENDIF
       
        WRITE $10,ZAM:PAUSE 10
        IF MENU=1 THEN M_CALISMA
       
        lcdout $fe,$80,"MOTORU ",DEC2 ZAM," SAATTE"
        lcdout $FE,$C0,"BIR CEVIREYIM" 

GOTO MOTO_ZAMANI

                                                                                 
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''   
AYARLANDI:
           IF MENU=1 then AYARLANDI
       lcdout $fe,1,"   AYARLANDI   "
        PAUSE 1000
        gosub BIPBIP
        GOSUB TEMIZLE
         goto CIK       
TEMIZLE:
        lcdout $fe,1
RETURN       
'-------------------------------------------------------------------------------
TERM_KONTROL:
       GOSUB TEMIZLE
TERM_KONT:
       lcdout $fe,$80,"  ISI LiMiTi    "
       lcdout $FE,$C0,"AYARI:",DEC2 TERM
         
           IF YUKARI=1 then TERM=TERM+1
        WHILE YUKARI=1:WEND
           IF TERM=01 then TERM=121
           
           IF ASAGI=1 then TERM=TERM-1
        WHILE ASAGI=1:WEND
           IF TERM=121 then TERM=01
           
        WRITE 1,TERM:PAUSE 10         
           IF MENU=1 THEN
        WHILE MENU=1:WEND
         GOTO AYARLANDI
        ENDIF                 
         GOTO TERM_KONT     
RETURN
'-------------------------------------------------------------------------------
NEM_KONTROL:
       GOSUB TEMIZLE
NEM_KONT: 
       lcdout $fe,$80,"   NEM LiMiTi   "
       lcdout $FE,$C0,"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
           
        WRITE 2,NEM:PAUSE 10         
           IF MENU=1 THEN
        WHILE MENU=1:WEND
         GOTO AYARLANDI
        ENDIF                 
         GOTO NEM_KONT    
       RETURN
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''       
SAATAYAR1:
       lcdout $fe,1
           IF MENU=1 then SAATAYAR1
        gosub EKRAN0

SAATAYAR:
        PAUSE 200
       lcdout $fe, $c7, dec2 SAAT
       lcdout $fe,$0e
       lcdout $fe, $10
              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
           IF SAAT=24 then SAAT=0
         goto SAATAYAR

SAATIAZALT:
           IF ASAGI=1 then SAAT=SAAT-1
           IF SAAT=255 then SAAT=23
         goto SAATAYAR
DAKIKAAYAR1:
           IF MENU=1 then DAKIKAAYAR1
       lcdout $fe,1
        gosub EKRAN0
DAKIKAAYAR:
        PAUSE 200
       lcdout $fe, $ca, dec2 DAK
       lcdout $fe,$0e
       lcdout $fe, $10
              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
           IF DAK=60 then DAK=0
         goto DAKIKAAYAR
DAKAZALT:
           IF ASAGI=1 then DAK=dak-1
           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
 
EKRAN0:
lcdout " SAATi AYARLA "
lcdout $fe,$c0,"SAAT : ",dec2 SAAT,":",dec2 DAK,":",dec2 SN
return 
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''   
END

ete

Bu programı benmi yazmışım.? Kodların çoğu bana ait ama program içinde benim kullanmadığım komut şekilleride mevcut.
Ya yazdığım programı birisi epeyce değiştirmiş yada bu program birisi tarafından çeşitli programlardan toparlanıp bir araya getirilmiş.

Bir sürü şey yazmışsın ama asıl sorunu pek anlamadım.
Programı ben yazmış bile olsam kuluçkadan yumurta çıakrmak tecrübe isteyen bir konudur.  Sıcaklık değerleri uygun alınmamış olabilir. Bu nedenle civcivler ölmüş olabilirler. Bu nedenle öncelikle sıcaklıkların ne olması gerektiği yumurtaların nasıl döndürülmesi gerektiğ vs iyi bilinmeli. Ayrıca Üyelerimizden Mucit23 ün yazdığı ve benimde yardım ettiğim bir program olması gerek. O programı alıp denesen belkide daha hayırlı olacaktır senin için. Mucit23 bu mesajı okursa buraya koyar her halde programı.

Yok illaki bu programı düzeltelim dersen aksayan tarafları açıklarsan belki bir şeyler düşünürüz.

Ete

toys-23

Hocam ilginize teşekkür ederim..
Programın sizin kodlarınızdan üretildiğini düşündüm butür hesaplamaları yapan yok belki bi arkdaşa yardım ettiniz yada dediğiniz gibi biri toplama yaptı.
Aslında bununla ilgili değişiklik yapabilirsek daha iyi olur çünkü hazır dizili iki kartım yar aslında çalışıyorlar ama tek sorun ondalık çalışmaması yani mesela 37.3 e ayarlayamuyorum 37 oluyor tek hane ondalıksız ayarlanıyor sadece.

Bu kısmına bi yardım edebilirseniz makbule geçer tabi vaktiniz varsa.

ete

#3
Sorun yalnızca ondalık meselesi ise onu halledebiliriz.

Bende Kulucka Makinesi programı yazdım ama sanırım ısı kontrolü yapmadım. Yalnızca yumurtaların sağa ve sola döndürülmesi için gerekli sistemi zamana bağlı olarak sağlayacak bir sistem yamıştım. Dediğim gibi kuluçka işinden anlamam bana ne söylendi ise onu yapmıştım.
Birazda eğitim amaçlı bir program idi. Aşağıdaki linkten yükleyebilirsin programı.

http://dl.dropbox.com/u/25364674/Kulucka_ETE.rar

Bunun dışında bu program temel alınarak yapılmış bir kaç projeyede yardım ettim ama onları bulamadım. Bulursam koyarım.
Ama dediğim gibi senin sorunun yalnızca Ondalık meselesi ise onu halledeceğim.

Peki ondalık konusu yalnızca sıcaklık ölçümündemi yoksa aynı zamanda nem ölçümünde de gereklimi?
Tabiiki set değerlerde bu temel üzerine yapılması gerekiyor değilmi?

Ete

edit:  Programda istediklerini yapayım diye baktım . Sıcaklık ölçümünde zaten ondalıklı sistem mevcut.  ISI1 sıcaklığın tam sayı kısmını, ISI2 ise sıcaklığın ondalıklı kısmını vermektedir. Nem konusundada aynı şey var.  U1 nem tamsayı kısmını, U2 ise Nem ondalıklı kısmını vermektedir.
Geriye ayarlar kalıyor. Sorun ayarlar kısmındamıdır?. Orayada baktım ama hiç hoşuma gitmeyen bir programlama mantığı kullanılmış. Bu nedenle anlamak uzun sürebilir.



toys-23

Merhaba hocam
Nem bölümünde ondalık gerekli değil. Sadece sıcaklık bölümünde ondalık ayar yapabilirsek yeterli.Yani tam tesbit ettiğiniz gibi sorun ayarlar kısmında ordan dereceyi küsürlü ayarlayamuyoruz bu durumdada mesela37.3 yapmuyorumda 37 de röle atıyor.Yani küsüratlar da ayar yapamuyorum rölede atmuyor hocam.
Birde neresinde nasıl bi yazılımı varsa diyelim 37 dereceye ayarladık 38 e kadar ısıtıyor yani röle açık kalıyor sonra kapanıyor yani 1 derece töleransı var bana tam derecesinde açıp kapatacak lazım yani 37.3 e ayarladıysam 37.3 ün altına düşünce röle çakecek 37.4 olursa röle bırakacak.Şimdiden teşekkür ederim..

Mucit23

Bu programı tam olarak ben hazırlamadım. Devreyi bende yaptım. İlk başta devrenin hiçbiryeri doğru düzgün çalıştıramadım. Yapan arkadaşla iletişime geçince kendisinin hiç vakti olmadığını bana söyledi. Kodlarıda bana verdi. Sonradan ben ufaktan ufaktan düzenlemeye ve uğraşmaya başladım. Bu programı düzenlediğim zamanlarda hiçbirşey bilmiyordum. Benim için alıştırma gibi oldu. Dolayısıyla programlama mantığı çok kötüdür. Bunu kabulleniyorum.
  Benim yaptığım zamanlarda makine fena çalışmıyordu. Verimde fena değildi. Yanlız şu sonuca vardım. Küçük makinalarda fazla verimli çalışmıyor. Yapan arkadaşlardan böyle bir sonuca vardım. Niye böyle oluyor bende bilmiyorum. Ama büyük çaplı çalışmalarla ilgili aldığım yorumlarda %100'e yakın verimle çalıştığını söylediler. Sanırım bu durum birazda makinayla alakalı. Şimdi Benzer fakat çokdaha ayrıntılı bir sistem yapıyorum.
Bir ulusu yok etmenin En iyi yolu o ulusun dilini yok etmektir.

www.arectron.com/

toys-23

mucit arkadasım bana sadece derece küsüratlı yani ondalık çalışsın yeter yani ayarladığım ondalık degerin altında röle açsın o dereceye ulaşnca kapasın tamam devreyi dizdiğim vede malzemeleri biraz pahalı olduğu için değerlendirmek istiyorum bide 2 adet yaptığımdan.
Ete hocamın umarım vakti olur vakti olursa yardımcı olur sanırım ama senin yardımcı olabileceğin bişe varsa yardımını beklerim.
Dediğim gibi 37.3 e ayarladığımda bu değerin altındaysa röle çeksin üstündeyse kapasın bide sanrım yazılımda 1 derece tölerans var onu istemiyorum sadece ayarladığın değerden düşükse 37.2 ise mesela açsın roleyi 37.4 se kapasın.

ete

İstediğini yapmaya çalıştım. Bak bakalım olmuşmu.

http://dl.dropbox.com/u/25364674/KULUCKAETE.rar

Ete

toys-23

Hocam elinize sağlık tam ayarladığım derece ondalığı ile ne ise orda onun altına düşerse açıyo röleyi onun üstünde kapıyor.Buraya kadar tam istediğimiz oldu.
Yanlız önce olmayan şimdi olan bi sorun başladı mesela 37.3 e ayarldım menüye girip sıcaklığı sonra biraz artırmak yada azaltmak için yani yeniden ayarlamak için girdiğimde önceden ayarladığım değerde bulamuyorum ısı ayarını hep 0.00 diyor.
Yeniden ayarlıyorum 37.3 e tekrar girdiğimde yine 0.00 hafızaya almuyo sanırım sadece ısı menüsüne girdiğimde değil nem ayarlamaya bile girsem ısının değerini 0.00 diyor yeniden ayar istiyor.Önce isisde denemiştim belki isis yapar dedim ondandır ama devreye uyguladım burdada yapuyor menüye neyi ayarlamaya girersem gireyim ısı değerini benim önceden ayarladığımı sıfırlıyor.

ete

Programda yeni ısı set değeri word tipinde tanımlandı ve 2 adet byte dan oluşuyor. Önceki tek byte idi ve 1 nolu adrese kayıt ediliyor idi. Ben 2 adres olarak 1,2 yi kullandım ama şimdi görüyprumki 2 nolu adres aynı zamanda NEM kayıt adresi imiş.
Şimdi aşağıdakileri tek tek yapman gerekiyor.

1. Aşağıdaki satırları bul;
TERM_KONTROL:
       GOSUB TEMIZLE
       ISIAYAR=TERM*10
Burada yer alan son satırı tamamen sil ve yerine;
       READ 1,ISIAYAR.BYTE1
       READ 2,ISIAYAR.BYTE0
       IF ISIAYAR=65535 THEN ISIAYAR=1 
satırlarını ekle

2. Aşağıdaki satırı bul
RUTKONTROL:
         READ 2,NEM
son satırda yer alan ifadeyi şöyle değiştir.
       READ 3,NEM

3. NEM_KONT etiketi altında aşağıdaki satırı bul;
WRITE 2,NEM:PAUSE 10
bunu şöyle değiştir.
WRITE 3,NEM:PAUSE 10

Bu şekilde sistem düzelecektir.

Ete

toys-23

Hocam iyi akşamlar dediğiniz yerleri değiştim ama bu kezde nem ayarı sapıttı.
Ayarladığım ayar dışında her şey oluyor.
Rica etsen tekrar bi kontrol ederseniz.

DEFINE OSC 4

@ DEVICE pic16F877
@ DEVICE pic16F877, WDT_ON
@ DEVICE pic16F877, PWRT_ON
@ DEVICE pic16F877, PROTECT_OFF
@ DEVICE pic16F877, XT_OSC

TRISA=%111111
TRISB=%00000000
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   2   
ADCON1 = 7             
'---------------------------değişkenler-----------------------------------------
    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
    Y        VAR    BIT
    SAYAC    VAR    BYTE
    TERM     VAR    BYTE
    NEM      VAR    BYTE
    KONTROL  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    HAM.BYTE0
    H1       VAR    HAM.BYTE1
    HAM      VAR    WORD
    RAW      var    word
    ISIAYAR  VAR    WORD
    ISI      VAR    WORD
    RUT      VAR    WORD
    P1       VAR    WORD
    P2       VAR    WORD
    P3       VAR    WORD             
    C        VAR    WORD
    B        VAR    WORD
    W        VAR    WORD
    DUR      VAR    BYTE
    CLK     VAR     PORTA.5
    DTA     VAR     PORTA.3
    ISARET  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
   
    symbol ROLE1=PORTC.0
    symbol ROLE2=PORTC.1
    symbol ROLE3=PORTC.2
    SYMBOL BUZER=PORTC.3
   
    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,1, "KULUCKA MAKiNESi"               
         lcdout $FE,$C0,"   VERSIYON 1.6  "
         PAUSE 2000
         LCDOUT $FE,1
         gosub ZAMAN_OKU
         HIGH BUZER:PAUSE 50:LOW BUZER         
BASLA:
        KONTROL=%00000011:HAM=0   'SICAKLIK ÖLÇME
        GOSUB OLCUMAL
        Gosub ISIHESAP:GOSUB EKRAN1
       'PAUSE 250
              KONTROL=%00000101:HAM=0 'RUTUBET ÖLÇME
        GOSUB OLCUMAL
        GOSUB RUTHESAP
       'GOSUB EKRAN2
        pause 200
        GOSUB ISIKONTROL
        GOSUB RUTKONTROL
           IF MENU=1 THEN
        WHILE MENU=1:WEND
         GOTO AYAR_MENULERI
        ENDIF
         goto BASLA       
'---------------------------------------EKRANA YAZ -----------------------------   
EKRAN1:   
         GOSUB ZAMAN_OKU
         GOSUB DONUSEBAK
          READ $07,GUN
          IF GUN=255 THEN GUN=1
        lcdout $FE,$80,DEC2 ISI1,".",dec1 ISI2 ,0,"C   ",DEC2 GUN,".GUN"
        lcdout $FE,$C0,"NEM:",DEC2 U1 ,"  ",DEC2 SAAT,":",DEC2 DAK,":",DEC2 SN
          READ $09,DUR
            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
         PAUSE 600
         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
''''''''''''''''TEK BIP'''''''''''''''''''''''''''''''''       
BIP:
    HIGH buzer   
     for sayac=0 to 2
pauseus 65535
    next
     LOW buzer
  RETURN
''''''''''''''''ÇİFT BİP''''''''''''''''''''''''''
  BIPBIP:
     HIGH buzer   
    PAUSE 50
      LOW buzer
    PAUSE 100
     HIGH BUZER
    PAUSE 50
      LOW BUZER
  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 ham<4000 then
              ISARET=1 'sıcaklık eksi değerde demek
              ISI1=(4000-HAM)/100
              ISI2=((4000-ham)//100)/10   
         goto ISISON
        endif
              ISI1=(HAM-4000)/100
              ISI2=((HAM-4000)//100)/10
ISISON:   
           
           ISI1=(HAM-4000)/100
           ISI2=((HAM-4000)//100)/10
RETURN       
'-------------------------RUTUBET HESAP ALT PROGRAMI----------------------------
RUTHESAP:
              ISI=ISI1*10+ISI2
              p1=(26542-(54722**ham+ham))**ham-25     
              P2=655+(HAM*5)+(HAM**15917)       
              P3=(P2**(ISI*10+2480))-(P2**2730)+P1   
              U1=p3/10:U2=p3//10
           IF ham>3710 THEN
              U1=0:U2=0
        ENDIF
return
'----------------------------ISI KONTROL----------------------------------------
ISIKONTROL:
         ISI=ISI1*10+ISI2 
         READ 1,ISIAYAR.BYTE1
         READ 2,ISIAYAR.BYTE0
            IF ISIAYAR=65535 THEN ISIAYAR=1
            if ISIAYAR<ISI then   
            LOW Role1
         ELSE
            HIGH ROLE1
        ENDIF
        RETURN
'----------------------------RUTKONTROL-----------------------------------------         
RUTKONTROL:
         READ 3,NEM
           IF NEM=255 THEN NEM=0
           if NEM<U1 then   
         HIGH Role2
         ELSE               
          LOW ROLE2
        ENDIF
RETURN
'-------------------------------------------------------------------------------
AYAR_MENULERI:
        WHILE MENU=1:WEND
       GOSUB TEMIZLE
ISI_AYARI:
       lcdout $fe,$c0,"   ISI LiMiTi   "
           IF MENU=1 then
        WHILE MENU=1:WEND
         GOTO TERM_KONTROL
        ENDIF

           IF ASAGI=1 then
        WHILE ASAGI=1:WEND
         GOTO NEM_AYARI
        ENDIF
   
           IF YUKARI=1 then
        WHILE YUKARI=1:WEND
         GOTO GUNN
        ENDIF
         GOTO ISI_AYARI
     
NEM_AYARI:

       lcdout $fe,$c0,"   NEM LiMiTi   "
           IF MENU=1 then
        WHILE MENU=1:WEND
         GOTO NEM_KONTROL
        ENDIF
           
           IF ASAGI=1 then
        WHILE ASAGI=1:WEND
         GOTO CIK
        ENDIF
         
           IF YUKARI=1 then
        WHILE YUKARI=1:WEND
         GOTO ISI_AYARI
        ENDIF
         
         goto NEM_AYARI     

CIK:
       WHILE MENU=1:WEND
       GOSUB TEMIZLE
CK:
     
       lcdout $fe,$c0," MENUDEN CIKIS "
           IF MENU=1 then
        WHILE MENU=1:WEND
         GOTO BASLA
        ENDIF
         
           IF ASAGI=1 then
        WHILE ASAGI=1:WEND
         GOTO MOTO
        ENDIF
         
           IF YUKARI=1 then
        WHILE YUKARI=1:WEND
         GOTO NEM_AYARI
        ENDIF   
         goto CK
MOTO:
        GOSUB TEMIZLE
MOTOR:
       
       lcdout $fe,$c0," CEViRiCi MOTOR "
           IF MENU=1 then
        WHILE MENU=1:WEND
         GOTO MOT_AYAR
        ENDIF
         
           IF ASAGI=1 then
        WHILE ASAGI=1:WEND
         GOTO SAATT
        ENDIF
         
           IF YUKARI=1 then
        WHILE YUKARI=1:WEND
         GOTO CIK
        ENDIF   
         goto MOTOR
SAATT:
       GOSUB TEMIZLE
SAT:
       lcdout $fe,$c0,"  SAAT AYARI   "
       
           IF MENU=1 then
        WHILE MENU=1:WEND
         GOTO SAATAYAR1
        ENDIF
         
           IF ASAGI=1 then
        WHILE ASAGI=1:WEND
         GOTO GUNN
        ENDIF
         
           IF YUKARI=1 then
        WHILE YUKARI=1:WEND
         GOTO MOTO
        ENDIF   
         goto SAT
         
GUNN:
       GOSUB TEMIZLE
GUNU:
     lcdout $fe,$c0,"  GUNU SIFIRLA  "
       
           IF MENU=1 then
        WHILE MENU=1:WEND
         GOTO GUNAYARI
        ENDIF
         
           IF ASAGI=1 then
        WHILE ASAGI=1:WEND
         GOTO ISI_AYARI
        ENDIF
         
           IF YUKARI=1 then
        WHILE YUKARI=1:WEND
         GOTO SAATT
        ENDIF   
         goto GUNU
GUNAYARI:
       GOSUB TEMIZLE
       WHILE MENU=1:WEND
GUNA:
       READ $07,GUN
     lcdout $FE,$C0,"GUN:",DEC2 GUN
     IF MENU=1 THEN AYARLANDI
        WHILE MENU=1:WEND
        IF YUKARI=1 THEN GUN=1
        PAUSE 10
        WRITE $07,GUN
           
           
     GOTO GUNA         
''''''''''''''''''''''''''''''''''''''''         
MOT_AYAR:
        GOSUB TEMIZLE
        WHILE MENU=1:WEND
MOTOR_AYAR:

         READ $0,SAYI
       lcdout $fe,$80,"  MOTOR DURUMU  "
       
           IF MENU=1 THEN M_ZAMANI
        WHILE MENU=1:WEND
           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 MOTOR_AYAR         
M_CALISMA:
        GOSUB TEMIZLE
        WHILE MENU=1:WEND
MOTO_CALISMA:
         READ $09,DUR
           IF MENU=1 THEN AYARLANDI
        WHILE MENU=1:WEND
       lcdout $fe,$80,"MOT.DONUS SURESi"
       lcdout $FE,$C0,"SURE :",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 $09,DUR
         GOTO MOTO_CALISMA                         
M_ZAMANI:
        GOSUB TEMIZLE
        WHILE MENU=1:WEND
MOTO_ZAMANI:
        READ $10,ZAM
        IF ZAM=255 THEN ZAM=1
        IF YUKARI=1 THEN
        ZAM=ZAM+1
        IF ZAM=5 THEN ZAM=4
        WHILE YUKARI=1:WEND
        ENDIF
       
        IF ASAGI=1 THEN
        ZAM=ZAM-1
        IF ZAM=0 THEN ZAM=1
        WHILE ASAGI=1:WEND
        ENDIF
       
        WRITE $10,ZAM:PAUSE 10
        IF MENU=1 THEN M_CALISMA
       
        lcdout $fe,$80,"MOTORU ",DEC2 ZAM," SAATTE"
        lcdout $FE,$C0,"BIR CEVIREYIM"

GOTO MOTO_ZAMANI

                                                                                 
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''   
AYARLANDI:
           IF MENU=1 then AYARLANDI
       lcdout $fe,1,"   AYARLANDI   "
        PAUSE 1000
        gosub BIPBIP
        GOSUB TEMIZLE
         goto CIK       
TEMIZLE:
        lcdout $fe,1
RETURN       
'-------------------------------------------------------------------------------
TERM_KONTROL:
       
       GOSUB TEMIZLE
       READ 1,ISIAYAR.BYTE1
       READ 2,ISIAYAR.BYTE0
       IF ISIAYAR=65535 THEN ISIAYAR=1 

TERM_KONT:
       lcdout $fe,$80,"  ISI LiMiTi    "
       lcdout $FE,$C0,"AYARI:",DEC2 ISIAYAR/10,",",DEC1 ISIAYAR//10
         
       IF YUKARI=1 then ISIAYAR=ISIAYAR+1
       WHILE YUKARI=1:WEND
       IF ISIAYAr>1210 then ISIAYAR=1210           
       IF ASAGI=1 then ISIAYAR=ISIAYAR-1
       WHILE ASAGI=1:WEND
       IF ISIAYAR=65535 then ISIAYAR=1           
       WRITE 1,ISIAYAR.BYTE1
       WRITE 2,ISIAYAR.BYTE0:PAUSE 10         
       IF MENU=1 THEN
         WHILE MENU=1:WEND 
          lcdout $fe,1
         
         GOTO AYARLANDI
       ENDIF               
      GOTO TERM_KONT             
       RETURN
'-------------------------------------------------------------------------------
NEM_KONTROL:
       GOSUB TEMIZLE
NEM_KONT:
       lcdout $fe,$80,"   NEM LiMiTi   "
       lcdout $FE,$C0,"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
           
        WRITE 3,NEM:PAUSE 10         
           IF MENU=1 THEN
        WHILE MENU=1:WEND
         GOTO AYARLANDI
        ENDIF                 
         GOTO NEM_KONT   
       RETURN
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''       
SAATAYAR1:
       lcdout $fe,1
           IF MENU=1 then SAATAYAR1
        gosub EKRAN0

SAATAYAR:
        PAUSE 200
       lcdout $fe, $c7, dec2 SAAT
       lcdout $fe,$0e
       lcdout $fe, $10
              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
           IF SAAT=24 then SAAT=0
         goto SAATAYAR

SAATIAZALT:
           IF ASAGI=1 then SAAT=SAAT-1
           IF SAAT=255 then SAAT=23
         goto SAATAYAR
DAKIKAAYAR1:
           IF MENU=1 then DAKIKAAYAR1
       lcdout $fe,1
        gosub EKRAN0
DAKIKAAYAR:
        PAUSE 200
       lcdout $fe, $ca, dec2 DAK
       lcdout $fe,$0e
       lcdout $fe, $10
              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
           IF DAK=60 then DAK=0
         goto DAKIKAAYAR
DAKAZALT:
           IF ASAGI=1 then DAK=dak-1
           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

EKRAN0:
lcdout " SAATi AYARLA "
lcdout $fe,$c0,"SAAT : ",dec2 SAAT,":",dec2 DAK,":",dec2 SN
return
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''   
END

inventor

#11
Alıntı yapılan: ete - 08 Eylül 2011, 21:47:46
Ayrıca Üyelerimizden Mucit23 ün yazdığı ve benimde yardım ettiğim bir program olması gerek. O programı alıp denesen belkide daha hayırlı olacaktır senin için. Mucit23 bu mesajı okursa buraya koyar her halde programı.

Ete

Mesajı yeni gördüm hocam. Programı tabiki koyarım ancak motor kontrol kısmı iyi anlaşılmalı. Sonuçta yazılımı yaparken mekanik kısmı gözönüne alarak yapıyoruz. Şimdi programa baktım.8200 word luk bir yazılım. Bu haliyle kimse bir şey anlamaz. Eğer hangi bölümlerde sıkıntınız olduğunu bildirirseniz gerekli düzenlemeleri yapar eklerim buraya. Aksi halde motor kontrol sistemi, zaman ayarları,yok tavuktu ,yok ördekti hepsi için ayrı bölümler var. Sonuçta her hayvanın kuluçka şartı farklı. Durum böyle olunca da sadece programı koymak anlam ifade etmeyecek. Motor kontrolü ve motorun mekanik kısmınıda eklemek lazım. O da yetemeycek sistemi komple koymak ve adım adım nerede ne yapılmak istenmiş anlatmak lazım.Fotoğraflarla da desteklemek gerekiyor. O zaman da dosyayı alıp hazır kuluçka makinesi yapılabilir. Ama gelişme sağlanamaz. Bu işi yapacak olan arkadaşlara projelerinde elimden geldiğince destek verebilirim.Yeterki hangi bölümlerde zorlandıklarını net olarak ifade etsinler.

Projeyi vermemek için neler yazmış dediğinizi duyar gibiyim. Yakın bir Abimizin forumlara eklediği sayısız projenin daha sonraları ticari olarak nasıl kullanıldığına şahit oldum. Aynı duruma düşmek istemiyorum. Dediğim gibi her türlü desteği verebilirim. Bölümler halinde kaynak kodlarını yazabilirim. Ama komple bir proje isteğine kapalıyım. Bu işi ancak bu şekilde öğrenebiliyoruz. 

Selam
Yüksel
İlmin en büyük düşmanı, sabırsızlıktır. (Şems-i Tırmizi)

toys-23

Ticari program istemem bütün ticari programlarınız sizin olsun..Ben bir amatörüm ve amacım 3-5 civciv çıkarmak.
Ete hocamız olmasa zaten bizim bu forumlarda işimizde olmaz bizden hiçbir karşılık beklemeden bide bizim sıkıntılı işlerimizle uğraşarak bizlere 1-2 parça bişe öğretiyor.
Zaten bu işleri yapanlar ete hoca gibi alçak gönüllü olsaydı diğerleri gibi kibirli ve yazdığı 2 satırdan kendi bile korkmasaydı bizim ülkemizdeki elektronikte bu durumda olmazdı.Diğer ülkelerdeki 8-10 yaşındaki çocuklar bile bizim gibi yetişkinleri cebinden çıkarıyor.
Yinede saygı duyuyorum bütün insanlara...

ete

#13
Inventor,
Aslında mesajım sana değil "Mucit23" isimli arkadaşa idi. Yanlış anlaşılmayı önelemk için bu açıklamayı veriyorum.

Toys-23,
Bu program yeterince uzun ve bunu ikidebir foruma koyarsan gereksiz bir kirliklik yaratılmış olmaktadır.
Gerekirse dosya olarak koyarsan memnun oalcağım.

Bu program aslında adam olmaz. Verdiğim satırların nem ayarı ile alakası yalnızca eprom adresi ile bağlantılı , onuda 2 yerine 3 yapmış idim. Hepsi bu. Programa müdahale ettikçe batacağız. O nedenle daha fazla kurcalamak istemiyorum.

Bu nedenle önce ISIAYAR değişkenini 1 ve 2 nolu adreslere değil $20 ve $21 adreslerine kayıt edeceğiz.
Daha sonrada NEM değişkenini dokunmamak için tekrar eski adresi olan 2 nolu adrese kayıt edilmesini sağlayacağız.

Bu değişiklikle ilgili program ilişiktedir.

Ete

KAZIMUGUR

Test :
Böyle uzun kodların " kod ekle " takı ile eklenmesi daha şık oluyor.
Yukarıdaki butonlardan " # " olanı .
Köşeli parantezlerin arasına kodlarımız...

Örnek :


DEFINE OSC 4

@ DEVICE pic16F877
@ DEVICE pic16F877, WDT_ON
@ DEVICE pic16F877, PWRT_ON
@ DEVICE pic16F877, PROTECT_OFF
@ DEVICE pic16F877, XT_OSC

TRISA=%111111
TRISB=%00000000
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   2   
ADCON1 = 7             
'---------------------------değişkenler-----------------------------------------
    E        var    byte
    AY       var    byte
    YIL      var    byte

Powered by EzPortal