Bluetooth ile sıcaklık verisi gönderme

Başlatan yolcu27, 10 Ağustos 2016, 11:46:40

yolcu27

DS18B20 sensörünü pic16f628 ile ete hocamın programı ile okuyarak hserout komutu ile bluetooth üzerinden android programına göndermek istiyorum.

ISI1    VAR     BYTE       'BU PROGRAMDA VAR. 29-04-2005 DE
ISI2    VAR     BYTE  
BUSY    VAR     BIT
HAM     VAR     WORD
ISI     VAR     WORD        ' Hesaplanmış ISI değeri
      
SIGN_BITI   VAR HAM.11'Bit11   '   +/- sıcaklık İşaret biti,  1 = olursa eksi sıcaklık
NEGAT_ISI   CON 1           ' Negatif_Cold = 1
SIGN        VAR BYTE        '  ISI değeri için  +/-  işaret
ISARET      VAR BYTE
TEMP        VAR BYTE         

SENSOROKU: 
'           ham=$FFBF:Gosub hesapla:RETURN  'NORMAL ÇALIŞMADA BU SATIR SİLİNECEK
           OWOUT   Comm_Pin, 1, [$CC, $44]' ISI değerini oku
Bekle:
           OWIN    Comm_Pin, 4, [Busy]    ' Busy değerini oku
           IF      Busy = 0 THEN Bekle  ' hala meşgulmü? , evet ise goto Bekle..!
           OWOUT   Comm_Pin, 1, [$CC, $BE]' scratchpad memory oku
           OWIN    Comm_Pin, 2, [HAM.Lowbyte, HAM.Highbyte]' İki byte oku ve okumayı bitir.
           GOSUB   Hesapla
           RETURN
'----------------------ISI HESAP ALT PROGRAMI-----------------------------------          
Hesapla:                 ' Ham değerden Santigrat derece hesabı
    Sign  = "+"
    IF SIGN_BITI = NEGAT_ISI THEN
       Sign   = "-"  
'       temp=($ffff-ham+1)*625 'bu satır alttakinin yerine kullanıldı
       Temp=625*(~HAM+2)
       ISI  = DIV32 1000 
       GOTO GEC   
    endif
    TEMP = 625*(HAM)        ' 
    ISI = DIV32 1000          ' Div32 hassas derece hesabı için 32 bit bölme yapıyoruz.
GEC:
    ISI2 = (ISI //10)
    ISI1=ISI/10
    RETURN

HSEROUT[ISI1]



tam incelemedim denemeden kopyala yapıştır yaptım sıralama aşağı yukarı bu şekilde olacak.

normalde devrede bir butona basarak SELAM yazısını gönderip andorid programda görebiliyorum yazıyı. burada ISI1 değişkenini göndermek istiyorum yani sensorden gelen veri ISI1 degişkenine aktarılacak ve bu degisken 25 se telefona 25 yazısı gidecek şekilde olmalı
HSEROUT[ISI1]


şeklinde gönderirsem metin olarak mı gider yoksa  değişkenin değeri olarak mı gider?  daha önce buton ile kullandıgımda veri göndeririken

if porta.1=1 then
 HSEROUT["SELAM"]
else goto basla
endif


şeklinde kullanınca direk text olarak gidiyordu takıldıgım nokta text degilde degiskenin içindeki degeri gönderme konusunda fikirlere açıgım deneme imkanım suan yok elimde pic kalmadı yarın deneyecegim.

yolcu27

şu şekilde düzenledim


' --------------------GENEL DEĞİŞKENLER-------------
ISI1    VAR     BYTE       'BU PROGRAMDA VAR. 29-04-2005 DE
ISI2    VAR     BYTE  
BUSY    VAR     BIT
HAM     VAR     WORD
ISI     VAR     WORD        ' Hesaplanmış ISI değeri
      
SIGN_BITI   VAR HAM.11'Bit11   '   +/- sıcaklık İşaret biti,  1 = olursa eksi sıcaklık
NEGAT_ISI   CON 1           ' Negatif_Cold = 1
SIGN        VAR BYTE        '  ISI değeri için  +/-  işaret
ISARET      VAR BYTE
TEMP1        VAR BYTE         
SYMBOL Comm_Pin=PORTA.0   

SENSOROKU: 
'           ham=$FFBF:Gosub hesapla:RETURN  'NORMAL ÇALIŞMADA BU SATIR SİLİNECEK
           OWOUT   Comm_Pin, 1, [$CC, $44]' ISI değerini oku
Bekle:
           OWIN    Comm_Pin, 4, [Busy]    ' Busy değerini oku
           IF      Busy = 0 THEN Bekle  ' hala meşgulmü? , evet ise goto Bekle..!
           OWOUT   Comm_Pin, 1, [$CC, $BE]' scratchpad memory oku
           OWIN    Comm_Pin, 2, [HAM.Lowbyte, HAM.Highbyte]' İki byte oku ve okumayı bitir.
           GOSUB   Hesapla
           RETURN
'----------------------ISI HESAP ALT PROGRAMI-----------------------------------          
Hesapla:                 ' Ham değerden Santigrat derece hesabı
    Sign  = "+"
    IF SIGN_BITI = NEGAT_ISI THEN
       Sign   = "-"  
'       temp1=($ffff-ham+1)*625 'bu satır alttakinin yerine kullanıldı
       Temp1=625*(~HAM+2)
       ISI  = DIV32 1000 
       GOTO GEC   
    endif
    TEMP1 = 625*(HAM)        ' 
    ISI = DIV32 1000          ' Div32 hassas derece hesabı için 32 bit bölme yapıyoruz.
GEC:
    ISI2 = (ISI //10)
    ISI1=ISI/10
    RETURN
    
    HSEROUT [SIGN,ISI]     
   


sıcaklık ölçümü ve yollama kısmı şu şekilde olacak. bunu veri kontrolü yaptıgım döngü içerisine koyacağım. döngünün sonuna geldikçe bilgi gönderecek. @ete hocamın rf termometre alıcı verici kısmındaki verici kodları içerisinden aldım kodları. derlerken hata vermedi fakat elimde pic olmadıgı icin deneyemedim daha. bir türlüde isiste bu tarz devrelerin simulasyonunu yapamadım.

Maxim

son durum nedir
bunu isis te deneyebilirsin
sadece piclerin tx rx uclarını birleştir, arada bluetooth olmayacak yani