Akvaryum kontrol Devresi Önerileriniz ve Yardımlarınız.

Başlatan pckatil, 04 Ocak 2011, 19:25:00

pckatil

Herkeze merhaba ismim Ercüment aklımda bi proje var ve bunu canlandırmak istiyorum. Acaba devre hakkında bana yardımcı olurmusunuz? Aklımdaki Proje şöle;

1-) Benim belirlediğim saatlerde Dış motor çalışıcak veya durucak.
2-) Isı derecesine göre Isıtıcı veya fan çalışıcak
3-) Gece 12 den sonra Florasan sönücek ama istediğim başka ışık yanacak.
4-) Lcd ekranda ısıyı ve anlık saati göstericek.

BU projem için hangi pic entegresini kullanmalıyım ve bana yol gösterebilirmisiniz. Elektronik bölümü mezunuyum ama bu konulardan bayağı uzak kaldım. Yardımlarınız bekliyorum şimdiden teşekkürler...

gevv

pic programlama hakkında pek bilgim yok ama buradaki proje feyz verebilir :) uygulama çiçek sulamak için tasarlanmış mekanik bölümü düzenleyerek sistemi  modifiye ederek kullanabilirsiniz 
 

pckatil

Evet bunun gibi birşey bu bölümünü dış motoru açıp kapamada kullanabilirim. Peki buna ısı ölçümünü nasıl koyucam?

sigmoid

Tüm picleri kullanabilirsiniz. İşin içine Lcd ekran ve menü programlama girince gerekli olan yer kapasitesi ihtiyacı arttığından ve daha rahat çalışmak için projenizi PIC16F877A ile yapabilirsiniz. PIC'e yeni başlayanlar için MikroC derleyicisini kullanmasını tavsiye ediyorum. Mikroe.com sitesinden demosunu indirebilirsiniz. Demosu ile 2KB da kadar program derleyebiliyorsunuz. Bu boyut PIC16F877Anın 4te 1idir. ve başlangıç için size yeterli gelir. Saat olarak iki seçeneğiniz var, biri yazılımsal olarak PIC içine bir saat gömmek veya DS1307 gibi bir RTC entegresi almak. Motor ve florason kontrolü içinde röleler gerekli. Isı derecesine göre ısıtıcı veya fan çalıştırma işi biraz zor. En azından benim tam olarak hakim olmadığım konular. Kontrol teorisini bilmeyen veya yeni başlayanlar için on-off mantığında çalıştırabilirsiniz. Profesyonel bir kontrol yapmak isterseniz PID kontrolü araştırmanız gerek. Projeyi adım adım geliştirmek en mantıklısı nerede sorun çıktığını daha rahat fark ediyorsunuz. İlk başta mikroC yi indirip bir kurcalayın, led yakıp söndürün. Help dosyasının sizin için ne kadar doyurucu olacağını göreceksiniz oradaki örnekleri kurcalayarak kısa sürede LCD ye hakim olursunuz. Daha sonrada saati kullanırsınız. Başlamak bitirmenin yarısıdır.

Not: MikroC yi içindeki hazır kütüphaneler, ve yardım dosyasının anlaşılır olması nedeniyle yeni başlayanlara tavsiye ediyorum. Ama daha önce başladığım birçok çalışmada mikroc beni yarıyolda bıraktı. Kapalı kütüphanesi olması nedeniyle arka tarafta neler döndüğünü tam olarak bilmiyorsunuz. Size tam hakimiyet vermiyor. Proje belli bir aşamadan ürettiği kodlar birden katlanarak büyüyor. MikroC yi kullanırken bu gibi durumlara dikkat edin.

kolay gelsin.

RcALTIN

Genel anlamda yapıp ortaya çıkarmakta pek sıkıntı çekilmeyecek bir proje olsada; söz konusu canlılar olunca öncelikle stabil çalışan bir devreye, hatta bu devrenin sağlıklı çalıştığını kontrol eden ekstra bir mekanizmaya ihtiyaç var... Ayrıca bu sistem kendimin bir türlü başlayıp bitirmeye fırsat bulamadığı bir proje olarak hala hayal dünyamda yerini korumaktadır. :)
KİMSEYİ ENGELLEDİĞİM YOK, ÖZEL İLETİ DEVRE DIŞI !

eseneren

zamanlayı alırsan elektrıkcıden 4tl ıstedıgın zaman ısıgı acar kapatırsın.
Isıtıcı zaten termostatlı gerek yok.
Ama ıstedıgın floresan yanarken balıklar tırsmasın strese gırmesın yavas yavas aydınlansın yaas yavas sonusn bunun floresan ıcın bende cevabını bulamadım

Saygılar
Seçim yapmak için durum hakkında bilgi sahibi olmak zorunda değilsin, sonucuna hazır olmak için durum hakkında kaygılanırsın.  http://bit.ly/gixfTk

pckatil

İlginiz için hepinizden çok teşekkür ederim. Böle bi kod buldum acaba bunun doğru olup olmadığını nasıl anlarım.



'****************************************************************
'*  Name    : AQUAMATIC.BAS                                     *
'*  Author  : [  ]                                              *
'*  Notice  : Copyright (c) 2007 [zcemix2007]                   *
'*          : All Rights Reserved                               *
'*  Date    : 06.07.2007                                        *
'*  Version : 1.0                                               *
'*  Notes   :                                                   *
'*          :                                                   *
'****************************************************************
DEFINE LCD_DREG PORTC
DEFINE LCD_DBIT 0 
DEFINE LCD_EREG PORTD 
DEFINE LCD_EBIT 3
DEFINE LCD_RSREG PORTD
DEFINE LCD_RSBIT 2
DEFINE LCD_BITS 4 
DEFINE LCD_LINES 2
trisa = 0
trisd=0
PORTC=0
portd=0
porta=0
trisc=%01110000
option_reg.7 = 0
adcon1=7
'DQ var Portc.6
'temp var word
 

;_______________SAAT PROGRAMI DEĞİŞKENLERİ__________________________________________________________________  

Comm_Pin    VAR Portb.6     ' One-wire Data-Pin "DQ" PortB.0 da
Busy        VAR BIT         ' Busy Status-Bit
poz         var BIT
GOR         VAR BYTE
HAM         VAR WORD        ' Sensör HAM okuma değeri
ISI         VAR WORD        ' Hesaplanmış ISI değeri
Float       VAR BYTE        ' Holds remainder for + temp C display
X           VAR WORD  
Y           VAR WORD
'SIGN_BITI   VAR HAM.Bit11   '   +/- sıcaklık İşaret biti,  1 = olursa eksi sıcaklık
'NEGAT_ISI   CON 1           ' Negatif_Cold = 1
Deg         CON 223         ' ° işareti
'SIGN        VAR BYTE        '  ISI değeri için  +/-  işaret
TEMP        VAR byte         ' Div32 bit hesap için geçici değişken
SAYAC       VAR BYTE
'DAK         VAR BYTE
'ESN         VAR BYTE  
AC_SAAT VAR BYTE
KAPAT_SAAT VAR BYTE
AC_DAKIKA VAR BYTE
KAPAT_DAKIKA VAR BYTE
ACMAZAMANI VAR WORD
KAPAMAZAMANI VAR WORD
REELZAMAN VAR WORD
yil var byte
ay var byte
bugun var byte
gun var byte
saat var byte
dakika var byte
yil1 var byte
ay1 var byte
gun1 var byte
saat1 var byte
dakika1 var byte
saniye var byte
derece var byte
MEM         var byte
ONLAR       VAR BYTE
BIRLER      VAR BYTE
menuno var byte
menusure var byte
lcdsure var byte
altmenuno var byte
ISIKMOD VAR BYTE
ISITICIMOD VAR BYTE
FANMOD VAR BYTE
HAVAMOD VAR BYTE
FILTREMOD VAR BYTE
HAVAAC_SAAT VAR BYTE
HAVAAC_DAKIKA VAR BYTE
HAVAKAPAT_SAAT VAR BYTE
HAVAKAPAT_DAKIKA VAR BYTE
FILTREAC_SAAT VAR BYTE
FILTREAC_DAKIKA VAR BYTE
FILTREKAPAT_SAAT VAR BYTE
FILTREKAPAT_DAKIKA VAR BYTE
ISIKAC_SAAT VAR BYTE
ISIKAC_DAKIKA VAR BYTE
ISIKKAPAT_SAAT VAR BYTE
ISIKKAPAT_DAKIKA VAR BYTE
SICAKLIK VAR BYTE
SICAKLIK_KUSUR VAR BYTE
FANSICAKLIK VAR BYTE
FANSICAKLIK_KUSUR VAR BYTE
SICAKLIK_KUSUR=0
ISI_KUSUR VAR BYTE
i var byte 
j var BYTE
hane var byte
blink var byte
YEM_MIKTAR VAR BYTE
YEMLEMENO VAR BYTE
YEMNO VAR BYTE
ISITICI VAR BYTE
ISITICISAY VAR BYTE
FAN VAR BYTE
FANSAY VAR BYTE
ISITICISAY=100
FANSAY=100
ISITICI=0
FAN=0
kilitsure var byte
kilitsure =3
YEMNO=0
YEMLEMENO=1
YEMLEME VAR BYTE  [12]
lcdsure = 20
blink=0
hane = 0
i=0
j=0
ISI_KUSUR=0
altmenuno=0
menuno=0
menusure=0
SAYI VAR BYTE
SN VAR BYTE
SYMBOL  RTC_DTA=PORTE.1
SYMBOL  RTC_CLK=PORTE.0
SYMBOL  RTC_RST=PORTE.2
low RTC_RST
low RTC_CLK
'LCDOut $fe,1,"   AQUAMATIC" 
'gosub ZAMAN_OKU
'gosub YEMLE 
READ 254,J
if J !=0 then 
for i = 0 to 255
write i,0
i=i+1
next i
J=0
WRiTE 254,J 
endif
PAUSE 500  
EKAR_OKU:
read 0 , SICAKLIK : READ 1 , SICAKLIK_KUSUR : READ 2 , ISITICIMOD
READ 3 , FANSICAKLIK : READ 4 ,FANSICAKLIK_KUSUR : READ 5 ,FANMOD 
READ 6,ISIKAC_SAAT : READ 7,ISIKAC_DAKIKA :READ 8,ISIKKAPAT_SAAT : READ 9,ISIKKAPAT_DAKIKA :READ 10,ISIKMOD
read 11,YEM_MIKTAR : READ 12,YEMLEME[0] :READ 13,YEMLEME[1]:READ 14,YEMLEME[2]:READ 15,YEMLEME[3]
READ 16,YEMLEME[4] :READ 17,YEMLEME[5]:READ 18,YEMLEME[6]:READ 19,YEMLEME[7]:READ 20,YEMLEME[8]
READ 21,YEMLEME[9] :READ 22,YEMLEME[10]:READ 23,YEMLEME[11]
READ 24,HAVAAC_SAAT : READ 25,HAVAAC_DAKIKA :READ 26,HAVAKAPAT_SAAT : READ 27,HAVAKAPAT_DAKIKA :READ 28,HAVAMOD
READ 29,FILTREAC_SAAT : READ 30,FILTREAC_DAKIKA :READ 31,FILTREKAPAT_SAAT : READ 32,FILTREKAPAT_DAKIKA :READ 33,FILTREMOD
'WRITE 34,0
READ 34,YEMNO 

'loop:
'LCDOut $fe,1," ",Sign,DEC ISI,".",DEC1 (Float)," ",Deg,"C " '2. satırda ısı

'gosub SENSOROKU
'goto loop 

main:

 


if sn <> saniye then 
if FANSAY >0 THEN FANSAY=FANSAY-1
if ISITICISAY >0 THEN ISITICISAY=ISITICISAY-1
REELZAMAN =   SAAT DIG 1 * 1000+saat DIG 0 * 100 +dakika DIG 1 * 10+ dakika DIG 0
if menusure > 0 then 
menusure = menusure - 1
if menusure = 0 then menuno=0 :altmenuno=0:hane=0:GOTO EKAR_OKU
endif
portd.1=0
if lcdsure = 0 then kilitsure=3
if lcdsure > 0 then 
portd.1=1
lcdsure =lcdsure-1
kilitsure=0
endif
if menuno=0 then
GOSUB SENSOROKU
LCDOut $fe,1,dec2 gun,"/",dec2 ay,"/",dec2 yil," ",#YEMNO,".YEM"
LCDOut $fe,$c0,dec2 saat ,":",dec2 dakika,":",dec2 saniye," ",DEC2 ISI,".",DEC1 (Float),Deg,"C"
endif
'*******************ISITMA ve SOĞUTMA BÖLÜMÜ************************
iF ISI != 0 THEN 
if ISITICIMOD=1 THEN
X=SICAKLIK * 10 + SICAKLIK_KUSUR
IF Y=>X THEN
iF ISITICI = 1 THEN ISITICI=0:ISITICISAY=100 
if ISITICISAY=0 then PORTD.6=0 
ELSE
iF ISITICI = 0 THEN ISITICI=1:ISITICISAY=100
if ISITICISAY=0 then PORTD.6=1 
ENDiF
ENDiF
if FANMOD=1 THEN
X=FANSICAKLIK * 10 + FANSICAKLIK_KUSUR
IF X=>Y THEN
iF FAN = 1 THEN FAN=0:FANSAY=100 
if FANSAY=0 then PORTD.7=0 
ELSE
iF FAN = 0 THEN FAN=1:FANSAY=100
if FANSAY=0 then PORTD.7=1 
ENDiF
endif
endif
'*******************ISITMA ve SOĞUTMA BÖLÜMÜ BİTTİ*************
'**************************************************************
'***********************YEMLEME BÖLÜMÜ*************************
YEM:             
if YEM_MIKTAR > 0 AND menusure = 0  THEN  

iF YEM_MIKTAR=6 and YEMNO != 6  THEN 
AC_SAAT = YEMLEME[10]:AC_DAKIKA = YEMLEME[11]
GOSUB ZAMANI_HESAPLA
iF REELZAMAN =>ACMAZAMANI THEN YEMNO = 6:WRITE 34,YEMNO : GOSUB YEMLE
ENDiF

iF YEM_MIKTAR =>5 and YEMNO != 5 THEN 
AC_SAAT = YEMLEME[8]:AC_DAKIKA = YEMLEME[9]:KAPAT_SAAT = YEMLEME[10]:KAPAT_DAKIKA = YEMLEME[11]
GOSUB ZAMANI_HESAPLA
if REELZAMAN =>ACMAZAMANI AND REELZAMAN < KAPAMAZAMANI then YEMNO = 5:WRITE 34,YEMNO : GOSUB YEMLE
endif
iF YEM_MIKTAR =>4 and YEMNO != 4 THEN 
AC_SAAT = YEMLEME[6]:AC_DAKIKA = YEMLEME[7]:KAPAT_SAAT = YEMLEME[8]:KAPAT_DAKIKA = YEMLEME[9]
GOSUB ZAMANI_HESAPLA
if REELZAMAN =>ACMAZAMANI AND REELZAMAN < KAPAMAZAMANI then YEMNO = 4:WRITE 34,YEMNO : GOSUB YEMLE
endif
iF YEM_MIKTAR =>3 and YEMNO != 3 THEN 
AC_SAAT = YEMLEME[4]:AC_DAKIKA = YEMLEME[5]:KAPAT_SAAT = YEMLEME[6]:KAPAT_DAKIKA = YEMLEME[7]
GOSUB ZAMANI_HESAPLA
if REELZAMAN =>ACMAZAMANI AND REELZAMAN < KAPAMAZAMANI then YEMNO = 3:WRITE 34,YEMNO : GOSUB YEMLE
endif
iF YEM_MIKTAR =>2 and YEMNO != 2 THEN 
AC_SAAT = YEMLEME[2]:AC_DAKIKA = YEMLEME[3]:KAPAT_SAAT = YEMLEME[4]:KAPAT_DAKIKA = YEMLEME[5]
GOSUB ZAMANI_HESAPLA
if REELZAMAN =>ACMAZAMANI AND REELZAMAN < KAPAMAZAMANI then YEMNO = 2:WRITE 34,YEMNO : GOSUB YEMLE
endif
iF YEM_MIKTAR =>1 and YEMNO != 1 THEN 
AC_SAAT = YEMLEME[0]:AC_DAKIKA = YEMLEME[1]:KAPAT_SAAT = YEMLEME[2]:KAPAT_DAKIKA = YEMLEME[3]
GOSUB ZAMANI_HESAPLA
if REELZAMAN =>ACMAZAMANI AND REELZAMAN < KAPAMAZAMANI then YEMNO = 1:WRITE 34,YEMNO : GOSUB YEMLE
endif
ENDiF
'********************YEMLEME BÖLÜMÜ BİTTİ***********************

if FANMOD=0 THEN PORTD.7=0
if FANMOD=2 THEN PORTD.7=1 
if HAVAMOD=0 THEN PORTD.4=0
if HAVAMOD=2 THEN PORTD.4=1
if FILTREMOD=0 THEN PORTC.7=0
if FILTREMOD=2 THEN PORTC.7=1
if ISIKMOD=0 THEN PORTD.5=0
if ISIKMOD=2 THEN PORTD.5=1
if ISITICIMOD=0 THEN PORTD.6=0
if ISITICIMOD=2 THEN PORTD.6=1 

if ISIKMOD = 1 THEN
AC_SAAT =ISIKAC_SAAT :KAPAT_SAAT =ISIKKAPAT_SAAT
AC_DAKIKA =ISIKAC_DAKIKA:KAPAT_DAKIKA=ISIKKAPAT_DAKIKA
GOSUB ZAMANI_HESAPLA
if ACMAZAMANI <= KAPAMAZAMANI THEN
IF REELZAMAN => ACMAZAMANI THEN PORTD.5=1
IF REELZAMAN => KAPAMAZAMANI or REELZAMAN < ACMAZAMANI THEN PORTD.5=0
ENDiF 
if ACMAZAMANI > KAPAMAZAMANI THEN
IF REELZAMAN => ACMAZAMANI OR REELZAMAN < KAPAMAZAMANI THEN PORTD.5=1
IF REELZAMAN <= ACMAZAMANI and REELZAMAN > KAPAMAZAMANI THEN PORTD.5=0


ENDiF 
endif
if HAVAMOD = 1 THEN
AC_SAAT =HAVAAC_SAAT :KAPAT_SAAT =HAVAKAPAT_SAAT
AC_DAKIKA =HAVAAC_DAKIKA:KAPAT_DAKIKA=HAVAKAPAT_DAKIKA
GOSUB ZAMANI_HESAPLA
if ACMAZAMANI <= KAPAMAZAMANI THEN
IF REELZAMAN => ACMAZAMANI THEN PORTD.4=1
IF REELZAMAN => KAPAMAZAMANI or REELZAMAN < ACMAZAMANI THEN PORTD.4=0
ENDiF 
if ACMAZAMANI > KAPAMAZAMANI THEN
IF REELZAMAN => ACMAZAMANI OR REELZAMAN < KAPAMAZAMANI THEN PORTD.4=1
IF REELZAMAN <= ACMAZAMANI and REELZAMAN > KAPAMAZAMANI THEN PORTD.4=0

ENDiF 
endif
if FILTREMOD = 1 THEN
AC_SAAT =FILTREAC_SAAT :KAPAT_SAAT =FILTREKAPAT_SAAT
AC_DAKIKA =FILTREAC_DAKIKA:KAPAT_DAKIKA=FILTREKAPAT_DAKIKA
GOSUB ZAMANI_HESAPLA
if ACMAZAMANI <= KAPAMAZAMANI THEN
IF REELZAMAN => ACMAZAMANI THEN PORTC.7=1
IF REELZAMAN => KAPAMAZAMANI or REELZAMAN < ACMAZAMANI THEN PORTC.7=0
ENDiF 
if ACMAZAMANI > KAPAMAZAMANI THEN
IF REELZAMAN <= ACMAZAMANI and REELZAMAN > KAPAMAZAMANI THEN PORTC.7=0
IF REELZAMAN => ACMAZAMANI OR REELZAMAN < KAPAMAZAMANI THEN PORTC.7=1
ENDiF 
endif

 

 


sn = saniye
endif
buton:

if portc.4=0 then
pause 50
if portc.4=0 then
gosub tuskilit
gosub buzzer
lcdsure=20
ISIKMOD = ISIKMOD+1
if ISIKMOD>2 THEN ISIKMOD=0
write 10,ISIKMOD
altmenuno=2
gosub altmenugoster
pause 500
altmenuno=0
menuno=0
ENDiF
endif
if portc.5=0 then
pause 50
if portc.5=0 then
gosub tuskilit
gosub buzzer
lcdsure=20
HAVAMOD = HAVAMOD+1
if HAVAMOD>2 THEN HAVAMOD=0
write 28,HAVAMOD
altmenuno=5
gosub altmenugoster
altmenuno=0
menuno=0
pause 500
ENDiF
endif
if portc.6=0 then
pause 50
if portc.6=0 then
gosub tuskilit
gosub buzzer
lcdsure=20
FILTREMOD = FILTREMOD+1
if FILTREMOD>2 THEN FILTREMOD=0
write 33,FILTREMOD
altmenuno=6
gosub altmenugoster
altmenuno=0
menuno=0
pause 500
ENDiF
endif
'*****************YUKARI BUTONU**********************
if portb.0 = 0 then
pause 50
if portb.0=0 then
gosub tuskilit
gosub buzzer
menusure = 10
lcdsure = 20
if altmenuno=0 then
menuno=menuno+1 
if menuno > 7 then menuno=1
gosub menugoster
endif

if altmenuno=7 then
if hane=1 then 
gun1=gun1+1
if gun1 > 31 then gun1 = 1
endif
if hane=2 then 
ay1=ay1+1
if ay1 > 12 then ay1 = 1
endif
if hane=3 then 
yil1=yil1+1
if yil1 > 99 then yil1 = 0
endif
if hane=4 then 
saat1=saat1+1
if saat1 > 23 then saat1 = 0

endif

if hane=5 then 
dakika1=dakika1+1
if dakika1 > 59 then dakika1 = 0
endif

endif


if altmenuno=1 then 
if hane = 0 then
YEM_MIKTAR = YEM_MIKTAR + 1
if YEM_MIKTAR >6 THEN YEM_MIKTAR = 0   
ENDif
if hane > 0 then 
YEMLEME[HANE-1] = YEMLEME[HANE-1]+1 
if hane*5//2 = 1 and YEMLEME[hane-1] > 23 then YEMLEME[hane-1] = 0
if hane*5//2 = 0 and YEMLEME[hane-1] > 59 then YEMLEME[hane-1] = 0 
endif 
ENDiF

if altmenuno=5 then 
if hane=1 then
HAVAAC_SAAT = HAVAAC_SAAT + 1
if HAVAAC_SAAT > 23 then HAVAAC_SAAT = 0
endif
if hane=2 then
HAVAAC_DAKIKA = HAVAAC_DAKIKA + 1
if HAVAAC_DAKIKA > 59 then HAVAAC_DAKIKA = 0
endif
if hane=3 then
HAVAKAPAT_SAAT = HAVAKAPAT_SAAT + 1
if HAVAKAPAT_SAAT > 23 then HAVAKAPAT_SAAT = 0
endif
if hane=4 then
HAVAKAPAT_DAKIKA = HAVAKAPAT_DAKIKA + 1
if HAVAKAPAT_DAKIKA > 59 then HAVAKAPAT_DAKIKA = 0
endif
if hane = 0 then 
HAVAMOD = HAVAMOD+1
if HAVAMOD>2 THEN HAVAMOD=0 
ENDiF
endif

if altmenuno=6 then 
if hane=1 then
FILTREAC_SAAT = FILTREAC_SAAT + 1
if FILTREAC_SAAT > 23 then FILTREAC_SAAT = 0
endif
if hane=2 then
FILTREAC_DAKIKA = FILTREAC_DAKIKA + 1
if FILTREAC_DAKIKA > 59 then FILTREAC_DAKIKA = 0
endif
if hane=3 then
FILTREKAPAT_SAAT = FILTREKAPAT_SAAT + 1
if FILTREKAPAT_SAAT > 23 then FILTREKAPAT_SAAT = 0
endif
if hane=4 then
FILTREKAPAT_DAKIKA = FILTREKAPAT_DAKIKA + 1
if FILTREKAPAT_DAKIKA > 59 then FILTREKAPAT_DAKIKA = 0
endif
if hane = 0 then 
FILTREMOD = FILTREMOD+1
if FILTREMOD>2 THEN FILTREMOD=0 
ENDiF
endif
 
if altmenuno=2 then 
if hane=1 then
ISIKAC_SAAT = ISIKAC_SAAT + 1
if ISIKAC_SAAT > 23 then ISIKAC_SAAT = 0
endif
if hane=2 then
ISIKAC_DAKIKA = ISIKAC_DAKIKA + 1
if ISIKAC_DAKIKA > 59 then ISIKAC_DAKIKA = 0
endif
if hane=3 then
ISIKKAPAT_SAAT = ISIKKAPAT_SAAT + 1
if ISIKKAPAT_SAAT > 23 then ISIKKAPAT_SAAT = 0
endif
if hane=4 then
ISIKKAPAT_DAKIKA = ISIKKAPAT_DAKIKA + 1
if ISIKKAPAT_DAKIKA > 59 then ISIKKAPAT_DAKIKA = 0
endif
if hane = 0 then 
ISIKMOD = ISIKMOD+1
if ISIKMOD>2 THEN ISIKMOD=0 
ENDiF
endif

if altmenuno=3 then 
if hane=1 then
SICAKLIK_KUSUR = SICAKLIK_KUSUR + 5
if SICAKLIK_KUSUR = 10 then SICAKLIK_KUSUR = 0 : SICAKLIK=SICAKLIK+1 
endif
if hane = 0 then 
ISITICIMOD = ISITICIMOD+1
if ISITICIMOD>2 THEN ISITICIMOD=0 
ENDiF
endif

if altmenuno=4 then 
if hane=1 then
FANSICAKLIK_KUSUR = FANSICAKLIK_KUSUR + 5
if FANSICAKLIK_KUSUR = 10 then FANSICAKLIK_KUSUR = 0 : FANSICAKLIK=FANSICAKLIK+1 
endif
if hane = 0 then 
FANMOD = FANMOD+1
if FANMOD>2 THEN FANMOD=0 
ENDiF
endif
if altmenuno > 0 then gosub altmenugoster
endif
endif
'*****************YUKARI BUTONU BİTTİ*****************
'*****************************************************
'**********AŞAĞI BUTONU*******************************
if portb.3 = 0 then
pause 50
if portb.3=0 then
gosub tuskilit
gosub buzzer
menusure = 10
lcdsure = 20
if altmenuno = 0 then
if menuno=0 then menuno=8
menuno=menuno-1
if menuno < 1 then menuno=7 
gosub menugoster
endif

if altmenuno=7 then
if hane=1 then
if gun1=1 then gun1 = 32 
gun1=gun1-1
endif
if hane=2 then 
if ay1 = 1 then ay1 = 13
ay1=ay1-1
endif
if hane=3 then 
if yil1 = 0 then yil1 = 100
yil1=yil1-1
endif
if hane=4 then
if saat1 = 0 then saat1 = 24 
saat1=saat1-1
endif
if hane=5 then 
if dakika1 = 0 then dakika1 = 60
dakika1=dakika1-1
endif 
endif

if altmenuno=1 then 
if hane = 0 then
if YEM_MIKTAR =0 THEN YEM_MIKTAR = 7
YEM_MIKTAR = YEM_MIKTAR - 1
ENDif
if hane > 0 then 
if hane*5//2 = 1 and YEMLEME[hane-1] = 0 then YEMLEME[hane-1] = 24
if hane*5//2 = 0 and YEMLEME[hane-1] = 0 then YEMLEME[hane-1] = 60
YEMLEME[HANE-1] = YEMLEME[HANE-1]-1 
endif 
ENDiF
if altmenuno=5 then 
if hane = 1 then
if HAVAAC_SAAT = 0 then HAVAAC_SAAT =24 
HAVAAC_SAAT = HAVAAC_SAAT - 1
endif
if hane = 2 then
if HAVAAC_DAKIKA = 0 then HAVAAC_DAKIKA =60 
HAVAAC_DAKIKA = HAVAAC_DAKIKA - 1
endif
if hane = 3 then
if HAVAKAPAT_SAAT = 0 then HAVAKAPAT_SAAT =24 
HAVAKAPAT_SAAT = HAVAKAPAT_SAAT - 1
endif
if hane = 4 then
if HAVAKAPAT_DAKIKA = 0 then HAVAKAPAT_DAKIKA =60 
HAVAKAPAT_DAKIKA = HAVAKAPAT_DAKIKA - 1
endif
if hane = 0 then 
if HAVAMOD=0 THEN HAVAMOD=3
HAVAMOD = HAVAMOD-1 
ENDiF
ENDiF

if altmenuno=6 then 
if hane = 1 then
if FILTREAC_SAAT = 0 then FILTREAC_SAAT =24 
FILTREAC_SAAT = FILTREAC_SAAT - 1
endif
if hane = 2 then
if FILTREAC_DAKIKA = 0 then FILTREAC_DAKIKA =60 
FILTREAC_DAKIKA = FILTREAC_DAKIKA - 1
endif
if hane = 3 then
if FILTREKAPAT_SAAT = 0 then FILTREKAPAT_SAAT =24 
FILTREKAPAT_SAAT = FILTREKAPAT_SAAT - 1
endif
if hane = 4 then
if FILTREKAPAT_DAKIKA = 0 then FILTREKAPAT_DAKIKA =60 
FILTREKAPAT_DAKIKA = FILTREKAPAT_DAKIKA - 1
endif
if hane = 0 then 
if FILTREMOD=0 THEN FILTREMOD=3
FILTREMOD = FILTREMOD-1 
ENDiF 
ENDiF

if altmenuno=2 then 
if hane = 1 then
if ISIKAC_SAAT = 0 then ISIKAC_SAAT =24 
ISIKAC_SAAT = ISIKAC_SAAT - 1
endif
if hane = 2 then
if ISIKAC_DAKIKA = 0 then ISIKAC_DAKIKA =60 
ISIKAC_DAKIKA = ISIKAC_DAKIKA - 1
endif
if hane = 3 then
if ISIKKAPAT_SAAT = 0 then ISIKKAPAT_SAAT =24 
ISIKKAPAT_SAAT = ISIKKAPAT_SAAT - 1
endif
if hane = 4 then
if ISIKKAPAT_DAKIKA = 0 then ISIKKAPAT_DAKIKA =60 
ISIKKAPAT_DAKIKA = ISIKKAPAT_DAKIKA - 1
endif
if hane = 0 then 
if ISIKMOD=0 THEN ISIKMOD=3
ISIKMOD = ISIKMOD-1 
ENDiF
ENDiF

if altmenuno=3 then 
if hane = 1 then
if SICAKLIK_KUSUR = 0 then SICAKLIK_KUSUR =10 
SICAKLIK_KUSUR = SICAKLIK_KUSUR - 5
if SICAKLIK_KUSUR = 5 then SICAKLIK=SICAKLIK-1
endif
if hane = 0 then 
if ISITICIMOD=0 THEN ISITICIMOD=3
ISITICIMOD = ISITICIMOD-1 
ENDiF
endif
if altmenuno=4 then 
if hane = 1 then
if FANSICAKLIK_KUSUR = 0 then FANSICAKLIK_KUSUR =10 
FANSICAKLIK_KUSUR = FANSICAKLIK_KUSUR - 5
if FANSICAKLIK_KUSUR = 5 then FANSICAKLIK=FANSICAKLIK-1
endif
if hane = 0 then 
if FANMOD=0 THEN FANMOD=3
FANMOD = FANMOD-1 
ENDiF

endif
if altmenuno > 0 then gosub altmenugoster
endif
endif
'**********AŞAĞI BUTONU BİTTİ***************
'*******************************************
'**********SAĞA BUTONU *********************
if portb.1 = 0 then
pause 50
if portb.1=0 then
gosub tuskilit
gosub buzzer
menusure = 10
lcdsure = 20
HANE=HANE+1
if ALTMENUNO=3 OR ALTMENUNO=4  AND HANE > 1 THEN HANE = 0
if altmenuno=2 OR altmenuno=5 OR altmenuno=6 and hane>4 then hane=0 
if altmenuno=7 and hane>5 then hane=1 
if altmenuno=1 and hane>12 then hane=0
if altmenuno=2 and ISIKMOD != 1 THEN hane=0 
if altmenuno=3 and ISITICIMOD != 1 THEN hane=0
if altmenuno=4 and FANMOD != 1 THEN hane=0
if altmenuno=5 and HAVAMOD != 1 THEN hane=0
if altmenuno=6 and FILTREMOD != 1 THEN hane=0
gosub ALTmenugoster
endif
endif 
'**********SAĞA BUTONU BİTTİ***************
'*******************************************
'**********SOLA BUTONU ********************* 
if portb.2 = 0 then
pause 50
if portb.2=0 then
gosub tuskilit
gosub buzzer
menusure = 10
lcdsure = 20
if altmenuno=1 and hane=0then hane=13
if altmenuno=2 OR altmenuno=5 OR altmenuno=6 and hane=0 then hane=5
if altmenuno=7 and hane=1 then hane=6 
if ALTMENUNO=3 OR ALTMENUNO=4  AND HANE =0 THEN HANE = 2
HANE=HANE-1
if altmenuno=2 and ISIKMOD != 1 THEN hane=0 
if altmenuno=3 and ISITICIMOD != 1 THEN hane=0
if altmenuno=4 and FANMOD != 1 THEN hane=0
if altmenuno=5 and HAVAMOD != 1 THEN hane=0
if altmenuno=6 and FILTREMOD != 1 THEN hane=0
gosub ALTmenugoster
endif 
endif
'**********SOLA BUTONU BİTTİ**************
'*****************************************
'**********ENTER BUTONU****************
if portb.4 = 0 then
pause 50
if portb.4=0 then
gosub tuskilit
gosub buzzer
if portb.5=0 then
PAUSE 3000 
if portb.5=0 then
gosub yemle
endif
ENDiF
menusure = 10
lcdsure = 20
if altmenuno=7 then 
gun=gun1: ay=ay1:yil=yil1:saat=saat1:dakika=dakika1
menuno=ALTMENUNO:ALTMENUNO=0:HANE=0
gosub ZAMAN_YAZ  
'LCDOut $fe,1,"SAAT" 
'LCDOut $fe,$c0,"AYARLANDI"
PAUSE 1000
gosub menugoster 
goto main
endif
if altmenuno >0 then goto EKAR_YAZ
if menuno > 0 then altmenuno=menuno
if menuno=7 then gun1=gun: ay1=ay:yil1=yil:saat1=saat:dakika1=dakika:hane=1
gosub altmenugoster
endif 
endif
'*****************************************
'***********İPTAL BUTONU******************
if portb.5 = 0 then
pause 50
if portb.5=0 then
if menuno=0 then goto main
gosub buzzer
if altmenuno = 0 then
menuno=0
menusure=0
GOTO EKAR_OKU

else
altmenuno=0
endif
gosub menugoster
endif 
endif
'************************************************
'GOSUB SENSOROKU 
if altmenuno > 0 then gosub altmenugoster
gosub ZAMAN_OKU
GOTO main
end

'*****************************************
menugoster:
if menuno > 7 then menuno=1
'GOSUB TUS_BIRAK_KONTROL
if menuno = 1 then
LCDOut $fe,1,"YEM"
endif
if menuno = 2 then
LCDOut $fe,1,"ISIK"
endif
if menuno = 3 then
LCDOut $fe,1,"ISI"
endif
if menuno = 4 then
LCDOut $fe,1,"FAN"
endif
if menuno = 5 then
LCDOut $fe,1,"HAVA"
endif
if menuno = 6 then
LCDOut $fe,1,"FiLTRE"
endif
if menuno = 7 then
LCDOut $fe,1,"SAAT"
endif
LCDOut $fe,$c0,"AYARI"
pause 100
return
'***************************
altmenugoster:
'GOSUB TUS_BIRAK_KONTROL
if altmenuno>7 then altmenuno=0 :goto main
if menuno = 1 then
if hane <= 2 then YEMLEMENO=1 :j=0
if hane => 3 then YEMLEMENO=2 :j=2 
if hane => 5 then YEMLEMENO=3 :j=4
if hane => 7 then YEMLEMENO=4 :j=6
if hane => 9 then YEMLEMENO=5 :j=8
if hane => 11 then YEMLEMENO=6 :j=10 
LCDOut $fe,1,"YEM MiKTARI=",#YEM_MIKTAR
LCDOut $fe,$c0,#YEMLEMENO,".YEMLEME=",DEC2 YEMLEME[j],":",DEC2 YEMLEME[j+1]
endif
if ALTmenuno = 2 then
if ISIKMOD=1 then
LCDOut $fe,1,"ISIK OTO."
LCDOut $fe,$c0,"ON",dec2 ISIKAC_SAAT,":",dec2 ISIKAC_DAKIKA," OFF",dec2 ISIKKAPAT_SAAT,":",dec2 ISIKKAPAT_DAKIKA
endif
if ISIKMOD=0 then
LCDOut $fe,1,"ISIK KAPALI"
'LCDOut $fe,$c0,"ON",dec2 ISIKAC_SAAT,":",dec2 ISIKAC_DAKIKA," OFF",dec2 ISIKKAPAT_SAAT,":",dec2 ISIKKAPAT_DAKIKA
endif
if ISIKMOD=2 then
LCDOut $fe,1,"ISIK ACIK"
'LCDOut $fe,$c0,"ON",dec2 ISIKAC_SAAT,":",dec2 ISIKAC_DAKIKA," OFF",dec2 ISIKKAPAT_SAAT,":",dec2 ISIKKAPAT_DAKIKA
endif
ENDiF
if ALTmenuno = 3 then
if ISITICIMOD=1 THEN
if SICAKLIK_KUSUR >10 then SICAKLIK_KUSUR=0
LCDOut $fe,1,"ISITICI OTO."
LCDOut $fe,$c0,"ISI=",dec2 SICAKLIK,".",#SICAKLIK_KUSUR," C"
ENDiF
if ISITICIMOD=2 THEN
LCDOut $fe,1,"ISITICI ACIK"
'LCDOut $fe,$c0,"SICAKLIK=",dec2 SICAKLIK,".",#SICAKLIK_KUSUR," C"
ENDiF
if ISITICIMOD=0 THEN
LCDOut $fe,1,"ISITICI KAPALI"
'LCDOut $fe,$c0,"SICAKLIK=",dec2 SICAKLIK,".",#SICAKLIK_KUSUR," C"
ENDiF

endif
if ALTmenuno = 4 then
iF FANMOD=1 THEN 
if FANSICAKLIK_KUSUR >10 then FANSICAKLIK_KUSUR=0
LCDOut $fe,1,"FAN OTO."
LCDOut $fe,$c0,"ISI=",dec2 FANSICAKLIK,".",#FANSICAKLIK_KUSUR," C"
ENDiF
iF FANMOD=2 THEN 
LCDOut $fe,1,"FAN ACIK"
'LCDOut $fe,$c0,"SICAKLIK=",dec2 FANSICAKLIK,".",#FANSICAKLIK_KUSUR," C"
ENDiF
iF FANMOD=0 THEN 
LCDOut $fe,1,"FAN KAPALI"
'LCDOut $fe,$c0,"SICAKLIK=",dec2 FANSICAKLIK,".",#FANSICAKLIK_KUSUR," C"
ENDiF
endif
if ALTmenuno = 5 then
if HAVAMOD=1 then
LCDOut $fe,1,"HAVA OTO."
LCDOut $fe,$c0,"ON",dec2 HAVAAC_SAAT,":",dec2 HAVAAC_DAKIKA," OFF",dec2 HAVAKAPAT_SAAT,":",dec2 HAVAKAPAT_DAKIKA
endif
if HAVAMOD=0 then
LCDOut $fe,1,"HAVA KAPALI"
'LCDOut $fe,$c0,"ON",dec2 ISIKAC_SAAT,":",dec2 ISIKAC_DAKIKA," OFF",dec2 ISIKKAPAT_SAAT,":",dec2 ISIKKAPAT_DAKIKA
endif
if HAVAMOD=2 then
LCDOut $fe,1,"HAVA ACIK"
'LCDOut $fe,$c0,"ON",dec2 ISIKAC_SAAT,":",dec2 ISIKAC_DAKIKA," OFF",dec2 ISIKKAPAT_SAAT,":",dec2 ISIKKAPAT_DAKIKA
endif
endif
if ALTmenuno = 6 then
if FILTREMOD=1 then
LCDOut $fe,1,"FiLTRE OTO."
LCDOut $fe,$c0,"ON",dec2 FILTREAC_SAAT,":",dec2 FILTREAC_DAKIKA," OFF",dec2 FILTREKAPAT_SAAT,":",dec2 FILTREKAPAT_DAKIKA
endif
if FILTREMOD=0 then
LCDOut $fe,1,"FiLTRE KAPALI"
'LCDOut $fe,$c0,"ON",dec2 ISIKAC_SAAT,":",dec2 ISIKAC_DAKIKA," OFF",dec2 ISIKKAPAT_SAAT,":",dec2 ISIKKAPAT_DAKIKA
endif
if FILTREMOD=2 then
LCDOut $fe,1,"FiLTRE ACIK"
'LCDOut $fe,$c0,"ON",dec2 ISIKAC_SAAT,":",dec2 ISIKAC_DAKIKA," OFF",dec2 ISIKKAPAT_SAAT,":",dec2 ISIKKAPAT_DAKIKA
endif
endif 
if altmenuno=7 then
LCDOut $fe,1,"SAATi AYARI"
LCDOut $fe,$c0,dec2 gun1,"/",dec2 ay1,"/",dec2 yil1," ",dec2 saat1 ,":",dec2 dakika1
endif
if menusure > 0 then 
if blink=1 then 
if hane= 0 then 
lcdout $FE,254,"                   "
endif
if hane= 1  and altmenuno > 2 and altmenuno < 5 then 
LCDOut $fe,196,"     "
endif
if altmenuno = 2 OR altmenuno = 5 OR altmenuno = 6 then 
if hane=1 then LCDOut $fe,194,"  "
if hane=2 then LCDOut $fe,197,"  " 
if hane=3 then LCDOut $fe,203,"  " 
if hane=4 then LCDOut $fe,206,"  " 
endif
if altmenuno = 7 then 
if hane=1 then LCDOut $fe,192,"  "
if hane=2 then LCDOut $fe,195,"  " 
if hane=3 then LCDOut $fe,198,"  " 
if hane=4 then LCDOut $fe,201,"  " 
if hane=5 then LCDOut $fe,204,"  " 
endif
if altmenuno=1 then
if hane != 0 then
if hane*5//2 = 1 then LCDOut $fe,202,"  "
if hane*5//2 = 0 then LCDOut $fe,205,"  " 
endif
endif 
blink = 0
else 
blink=1
endif
endif   
pause 100 ' menuhızı
return
ZAMAN_OKU:
'LCDOUT 254,1,"  Zaman Oku"
'         sayac=1-sayac: 'if sayac=1 then low porta.3
         high RTC_RST : PAUSE 10
         shiftout RTC_DTA, RTC_CLK, 0, [$BF]
         SHIFTIN RTC_DTA, RTC_CLK, 1, [Saniye, Dakika, Saat,gun , ay, MEM, yil, MEM]  'OKU
         MEM=Saniye:GOSUB CEVIR:Saniye=SAYI
         MEM=Dakika:GOSUB CEVIR:Dakika=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 : PAUSE 10
           
         return
          

ZAMAN_YAZ:
MEM=SN:GOSUB TERSCEVIR:SN=SAYI
MEM=Dakika:GOSUB TERSCEVIR:Dakika=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 : pause 10
         SHIFTOUT RTC_DTA, RTC_CLK, 0, [$8E, 0]    'YAZMAK İÇİN HAZIRLA
         low RTC_RST:PAUSE 10 
         high RTC_RST          
         SHIFTOUT  RTC_DTA, RTC_CLK, 0, [$BE, Saniye, Dakika, Saat,gun , ay, 0, yil, 0]
         PAUSE 10  'YAZ
         low RTC_RST 
        
         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

    
EKAR_YAZ:
if altmenuno=2 then write 6,ISIKAC_SAAT : write 7,ISIKAC_DAKIKA :write 8,ISIKKAPAT_SAAT : write 9,ISIKKAPAT_DAKIKA :write 10,ISIKMOD
if altmenuno=3 then write 0 ,SICAKLIK : write 1 ,SICAKLIK_KUSUR : write 2 ,ISITICIMOD
if altmenuno=4 then write 3 ,FANSICAKLIK : write 4 ,FANSICAKLIK_KUSUR : write 5 ,FANMOD
if altmenuno=1 then
if YEM_MIKTAR < 6 THEN YEMLEME [YEM_MIKTAR*2]=23 :YEMLEME [YEM_MIKTAR*2+1]=59  
write 11,YEM_MIKTAR : write 12,YEMLEME[0] :write 13,YEMLEME[1]:write 14,YEMLEME[2]:write 15,YEMLEME[3]
write 16,YEMLEME[4] :write 17,YEMLEME[5]:write 18,YEMLEME[6]:write 19,YEMLEME[7]:write 20,YEMLEME[8]
write 21,YEMLEME[9] :write 22,YEMLEME[10]:write 23,YEMLEME[11]
endif
iF altmenuno=5 then
write 24,HAVAAC_SAAT : write 25,HAVAAC_DAKIKA :write 26,HAVAKAPAT_SAAT : write 27,HAVAKAPAT_DAKIKA :write 28,HAVAMOD
endif
if altmenuno=6 then
write 29,FILTREAC_SAAT : write 30,FILTREAC_DAKIKA :write 31,FILTREKAPAT_SAAT : write 32,FILTREKAPAT_DAKIKA :write 33,FILTREMOD
endif
LCDOut $fe,1,"KAYDEDiLDi" 
'LCDOut $fe,$c0,"KAYDEDiLDi"
menuno=ALTMENUNO:ALTMENUNO=0:HANE=0
PAUSE 1000
gosub menugoster
GOTO main
         '----------------ISI SENSÖR OKUMA BÖLÜMÜ --------------------------------
'----------------ISI SENSÖR OKUMA BÖLÜMÜ --------------------------------
'----------------ISI SENSÖR OKUMA BÖLÜMÜ --------------------------------
SENSOROKU: 
           OWOUT   Comm_Pin, 1, [$CC, $44]' ISI değerini oku
Bekle:
           OWIN    Comm_Pin, 4, [Busy]    ' Busy değerini oku
           OWOUT   Comm_Pin, 1, [$CC, $BE]' scratchpad memory oku
           OWIN    Comm_Pin, 0, [HAM.Lowbyte, HAM.Highbyte]' İki byte oku ve okumayı bitir.
           GOSUB   Hesapla
           RETURN
             
Hesapla:                 ' Ham değerden Santigrat derece hesabı
    'Sign  = "+"
   'IF SIGN_BITI = NEGAT_ISI THEN
     '  Sign   = "-"  
     '  temp=($ffff-ham+1)*625
     '  ISI  = DIV32 10 
      ' GOTO GEC   
    'endif
    'TEMP = 625 * HAM        ' 
    'ISI = DIV32 10          ' Div32 hassas derece hesabı için 32 bit bölme yapıyoruz.
GEC:
    
    TEMP=HAM//2
    FLOAT = TEMP*5
    ISI =HAM/2
    Y=ISI*10+FLOAT
    
    RETURN              
   
 YEMLE:
 portd.1=0
 LCDOUT $fe,1,"YEM"
'LCDOut $fe,$c0,"A",#ACMAZAMANI,"  K",#KAPAMAZAMANI
 i=0
 FOR i = 0 to 23
 
 porta.2=0:porta.0=1
 pause 400     
 porta.3=0:porta.1=1
 pause 400
 porta.0=0:porta.2=1 
 pause 400
 porta.1=0:porta.3=1
 pause 400
 i=i+1
 next i
 porta=0
 i=0
 j=0
 return 
ZAMANI_HESAPLA:
ACMAZAMANI =  AC_SAAT DIG 1 * 1000+AC_SAAT DIG 0 * 100 +AC_DAKIKA DIG 1 * 10+ AC_DAKIKA DIG 0
KAPAMAZAMANI= KAPAT_SAAT DIG 1 * 1000+KAPAT_SAAT DIG 0 * 100 +KAPAT_DAKIKA DIG 1 * 10+ KAPAT_DAKIKA DIG 0
RETURN  
tuskilit:
if kilitsure > 0 then 
kilitsure =kilitsure-1
pause 1000
goto buton
endif
return 
buzzer:
portd.0=1
pause 30
portd.0=0
return 
    
    '********************TUSLAR BIRAKILMISMI KONTROLET******************************
    'TUS_BIRAK_KONTROL:
    'PAUSE 50
    'if PORTB.0 = 0 or PORTB.1 = 0 or PORTB.2 = 0 or PORTB.3 = 0 or PORTB.4 = 0 or PORTB.5 = 0 THEN TUS_BIRAK_KONTROL
    'RETURN

fahri-

Pic'lerle yeni uğraşmaya başladıysanız, devrenizi boş bir akvaryumda bir kaç ay test etmeden kullanmanızı tavsiye etmem. Balıklarınızı pişirebilirsiniz.

floresan

Alıntı yapılan: senerenemre - 05 Ocak 2011, 03:17:29.
Ama ıstedıgın floresan yanarken balıklar tırsmasın strese gırmesın yavas yavas aydınlansın yaas yavas sonusn bunun floresan ıcın bende cevabını bulamadım

Saygılar
floresana gerek yok en iyisi slikonlu şerit led. bunu pwm ile sürersek olur. veya liner şekilde.

eseneren

Maksat akvaryumunun aydınlanması degıl floresan'ın balıkların psıkologısı ve gelısımınde etkısı var o sebeple cıkamadık.
Kulagı terseden vs denemelerımız oldu ama esas ıs floresanı dımmer ıle yakmada.

- Bizim denedıgımız il k basta 15 dakıkada yavas yavas ledler yanıyor max sıddetıne kavusuyor sonra floresan yanıyor.
Burada floresan anıden yandıgı ıcın yıne ıstenen olmuyor.

- Mekanık olarak cozdum floresan altında ısık gecırmeyen levha floresan yanıyor kımsenın haberı yok sonra yavas yavas levha hareketı ıle ısık yavasca acılmıs gıbı gunus takıt edılmıyor. ( lakın bunu yapmadım sadece dusnmede )
Seçim yapmak için durum hakkında bilgi sahibi olmak zorunda değilsin, sonucuna hazır olmak için durum hakkında kaygılanırsın.  http://bit.ly/gixfTk

sigmoid

flarosanlar dimmer ile kontrol edilemiyor diye biliyorum. mekanik çözüm daha mantikli. model araba ve helikopterdeki servo motorla düşündüğünüz mekanizmayi kontrol edebilirsiniz.

florasanin baliklara olan faydasini merak ettim. 

eseneren

Dalga boyu ıle alakalıdır.
http://www.sera.de/en/guides/ratgeber-alt/the-new-aquarium/technical-equipment-lighting.html
Misal akvaryumda 4 floresan var 6 ayda bır degıstırmek gerekıyor.Aynı marka aynı gucte flo. takacak olsan bıle
onerılen mısal 4 floresanın 4 unude aynı anda degıstırmek yerıne 3. ayda 2 sını 6 ayda dıger ıkısını gıbı gıbı..
(Ledler ucunda mercek olanlar dırek kuma vurdugu ıcın balıklar dıpte yuzmezler gozler her an tetıkde oldugu ıcınde cok yorulurlar
zaten takdıkdan bır kac gun sonra balık sureklı bır oraya bır buraya stresı hısseder besleyen.)

Seçim yapmak için durum hakkında bilgi sahibi olmak zorunda değilsin, sonucuna hazır olmak için durum hakkında kaygılanırsın.  http://bit.ly/gixfTk

ipek

Trodonic atko firmasından dimm edilebilen balastlar aldım çok başarılılar
0...10 volt pot bağlanından tutun remot'lu ve daisy chain 255 adresli olanları mevcut
sadece DMX512 değiller kendilerine ait protokolleri var..
Çin mutlaka bunları imal etmiştir 32W T5 Fluo için 125€
DALİ ve DSI-protocol (Digital Serial Interface) Dmx te var fakat 7 sene evvel istemiştim 100 adet şartı vardı

pckatil

Arkadaşlar gönderdiğim kod hakkında bişey söliyebilirmisiniz? Eksik yerleri varmı ?

malpaslan1979

Proteus İSİS simülasyon yaparsanız daha sağlıklı sonuçlar alırsınız. Bunun yerine breadboarda da kurabilirsiniz devreyi.

Keşke devrenin şemasını da koysaydınız.

İyi çalışmalar.