dht11 7segmen te nem gösterme

Başlatan KARATEPE, 06 Nisan 2016, 23:51:32

KARATEPE

selam ete haocam pbp dht11 lcd gösteriyorum fakat 7 segmentte acemi oldugumdan yapamadım nem göstergesi yapmak istiyorum yardımlarınız ve tavsiyeleriniz için şimdiden teşekkür ederim

ete

Tavsiye;
Önce 7 segment göstergesi olan bir proje bulunur. Ne gösterdiği önemli değil.
İncelenir ve sonra mantığı öğrenilir. Bu  mantık DHT li projeye uygulanır.
BU çeşit projeler Ete-Projelerinde bolca mevcut.

Diğer bir tavsiye de 7 segment gösterme sistemlerini anlatan Ders-8 detaylı şekilde incelenir. Sonra benzer şekilde mantık öğrenildikten sonra kendi projene uygulanır.

Bütün bu aşamaları geçip, bir şema oluşturman ve sonra o şema üzerinde kafa yorman gerekiyor. Daha sonra takıldığın yer olursa sorarsın.

Ete

KARATEPE

#2
İLGİNİZE TEŞEKKÜR EDERİM ETE HOCAM HEMEN TAVSİYELERİNİZE UYUP PROJEME  BAŞLIYORUM AŞAMALARI EN KISA ZAMANDA PAYLAŞIRIM

KARATEPE

#3
sn ete usta ds 18b20 ile sizin örnek proğramın üzerin ekledim kotlar çalıştı şimdilik güzel
biraz daha rutuşla düzelecek umarım
aslında dahada ciddi bir sorunum varki mutlak yardımınız gerekli kodları yazıp size enkısa zamanda yazarım
aşağıdaki kotlar çalışıyor

     @ DEVICE pic16F84A   
@ DEVICE pic16F84A, WDT_on
@ DEVICE pic16F84A, PWRT_ON
@ DEVICE pic16F84A, PROTECT_OFF
@ DEVICE pic16F84A, XT_OSC
PortA=0
TrisA=%00000011
PortB=0
TrisB=%00000000

Symbol TUSA=PORTA.0
SYMBOL TUSB=PORTA.1
Busy        VAR BIT       
HAM         VAR WORD       
ISI         VAR WORD       
Float       VAR WORD       
X           VAR WORD       
SIGN_BITI   VAR HAM.Bit11   '
NEGAT_ISI   CON 1           '
Deg         CON 223         '
SIGN        VAR BYTE        '
TEMP        VAR BYTE
ONDA VAR BYTE
SAYI     var byte
BIRLER   VAR BYTE
ONLAR    VAR BYTE
YUZLER VAR BYTE
Comm_Pin    VAR PORTB.7     '
PORTB=0
SAYI=0
'--------------------------------------------------

PAUSE 200


BASLA:

SAYI=ISI
  '----------------ISI SENSÖR --------------------------------
SENSOROKU:
         
           OWOUT   Comm_Pin, 1, [$CC, $44]'
Bekle:
           OWIN    Comm_Pin, 4, [Busy]    '
           IF      Busy = 0 THEN Bekle  '
           OWOUT   Comm_Pin, 1, [$CC, $BE]
           OWIN    Comm_Pin, 2, [HAM.Lowbyte, HAM.Highbyte]'
           GOSUB   Hesapla
           RETURN
'----------------------------------------------------------------------------------------------------   
Hesapla:                 ' ı
    Sign  = "+"
    IF SIGN_BITI = NEGAT_ISI THEN
       Sign   = "-" 
      TEMP=($ffff-ham+1)*625
       ISI  = DIV32 10
       GOTO GEC   
    endif
    TEMP = 625 * (HAM+1)        '
    ISI = DIV32 10          '
'--------------------------------------------------------------------------------------------   
GEC:
    FLOAT = (ISI //1000)/100
    ISI=ISI/1000
     

     ' ENDIF
     
      BIRLER=SAYI DIG 0
      ONLAR= SAYI DIG 1
     
     
      PORTB=240 | BIRLER
      LOW PORTB.5
      PAUSE 1
      HIGH PORTB.5
      PAUSE 1
   
      PORTB=240 | ONLAR
      LOW PORTB.4
      PAUSE 1
      HIGH PORTB.4
      PAUSE 2
                 
      GOTO BASLA
      END

         

KARATEPE

yazmak istediğim ondalıklı ısı yı eprom hafızası ile karşılaştırıp bir roleyi açıp kapatmak



     şu şekilde yazdım çalışmadı !, 

    IF  A<=ISI -0 AND B<=FLOAT -0 THEN
    HIGH ROLE
   ENDIF
   IF ISI=A +0 AND FLOAD =C -0 THEN
    LOW ROLE

onurinci

IF ISI=A +0 AND FLOAD =C -0 THEN  gibi olmuş

IF ISI=A +0 AND FLOAT =C -0 THEN  olarak değiştirirmisin.....

ete

Her şeyden önce buraya kod eklerken kod tag (üzerinde  # işareti olan buton) kullanarak ekleyin.

İkincisi program yazım kurallarına uymayan kodlar elbette çalışmaz.
Program Basla etiketi ile başlıyor sonra SensorOku etiketine geliyor. Orada da işini bitiriyor ve Gosub Hesapla komutu ile hesapla kısmına gidip hesabını bitiriyor ve tekrar aynı yere geri dönüyor. Dönerdönmez bakıyor RETURN komutu var sırada haydaa, buraya Gosub ile gelmediki Return görünce geldiği yere dönsün!!!!. Ne yapacağını şaşırır. Çünki stack dan return adresi almaya çalışır ama yok öyle bir şey çünki sıradan komut çalıştırarak oraya geldi. Bu program bir müddet sonra kilitlenir kalır.

Anlayacağın SensorOku etiketi bir alt program mantığı ile yazılmış. Yani oraya GOSUB SENSOROKU komutu ile gidilmesi ve oradaki RETURN görüldükten sonra geldiği yere dönmesi gerekir programın.
BU bilgiler ders notlarında yazıyor. Önce öğrenip sonra program yazmaya başlamak gerekmezmi sizce. Çok zor değilki dersleri okuyup öğrenmek.

Ete

KARATEPE

#7
teşekkur ederim haklısınız ete hocam aslında öğrenmeye çalışıyorum fakat beceriksizliğim sayesinde sizlerin değerli vaktini aldığıma üzülürüm .
şuanda sizi bana yardım edecek tek çare gibi görüyorum dijitleri çalıştırdım sorun yok şu ondalıkı olaraklı role açıpkapama olayını başaramatım  yani 0 ile 9 arası ondalık  ısı değeri , örnek 10.4 ve altına düştüğünde açsın
10 .8 kapasın gibi

KARATEPE

Alıntı yapılan: onurinci - 18 Nisan 2016, 07:11:59
IF ISI=A +0 AND FLOAD =C -0 THEN  gibi olmuş

IF ISI=A +0 AND FLOAT =C -0 THEN  olarak değiştirirmisin.....

ilginize teşekkür onurinci  küçük  ve büyük oparatörlerini kullanmak gibi zorunluğumuz var çünkü roleyi aktif  etmesi gerekli düşük ısıyı yükseltecek ısıtıcıyı ondalıklı olarak çalıştırıp kapatmalıyım fakat fikir güzel yeni birşeyler eklersek olur gibi

ete

Dahada kolayı, 10,4 şeklindeki ısı değerini 104 haline getirip (aslında orijinal hali böyle olup sonradan ondalık hesaplanması gerekir) karşılaştırılan değeride ondalıktan kurtarıp karşılaştırma yapmak en iyisidir. Mesela,
Sabit=105. (10,5 dereceinin karşılığı)
Isı.  =104 olsun
If Isı<Sabit then ....
Şeklindeki karşılaştırma yapılması doğru olur.

Ete

KARATEPE

#10
 sn ete hocam uygundur fakat ısı değerini ayar tuşuyla eproma yazdırıyorum  ve eprom daki ayarlarımla karşılaştırıp roleyi açıp kapamak amaç ve 01 derece hassasiyetle açıp kapamak  aslında proğramın içine doğrudan yazdığım şu kot çalıştı


SICAK:
IF ISI<=10 AND (FLOAT)<=4  THEN HIGH role
IF ISI<10 THEN HIGH role
IF ISI=10 AND (FLOAT)>6  THEN LOW role
IF ISI>=11 THEN LOW role

Powered by EzPortal