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=0TrisA=%00000011PortB=0TrisB=%00000000Symbol TUSA=PORTA.0SYMBOL 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 BYTESAYI     var byteBIRLER   VAR BYTEONLAR    VAR BYTEYUZLER VAR BYTEComm_Pin    VAR PORTB.7     ' PORTB=0SAYI=0'--------------------------------------------------PAUSE 200BASLA: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