Dht11 için basicten protona kod çevrimi ile ilgili..

Başlatan mustafa_cmbz, 01 Ocak 2015, 18:20:47

mustafa_cmbz

Merhabalar..

DHT11 ile çalışmalar yapmak istiyorum.Nette araştırırken ete hocanın ve bir arkadaşın vasıtası ile çalışıyor dedikleri güzel bir kod buldum fakat ben protonda yazdığım için ufak tefek değişiklikler istiyor fakat işin içinden çıkmadım.


SURE    var Byte
I       VAR Byte
TAMRUT  VAR Byte
ONDARUT VAR Byte
TAMISI  VAR Byte
ONDAISI VAR Byte
X       VAR Byte
Dim control  As Byte
bbb var Byte 
Symbol dta=PORTA.3'sensor dATA PİNİ PORTA.0 A BAĞLI


BASLA:


Output dta
Low dta
Pause 18       '18 ms bekle
High dta           'Data pinini High yap
Pauseus 40   '40 us bekle
Input dta
While dta=0:Wend
PAUSEUS 85

If dta=1 Then hata

TAMRUT=0
For I=7 To 0 STEP-1  'MSB bitleri önce geleceği için döngümüzü tersten kuruyoruz.
  While dta=0:Wend  
   Pauseus 40
  If dta=1 Then TAMRUT.0[I]=1
  While dta=1:Wend
 Next



ONDARUT=0
For I=7 To 0 STEP-1  'MSB bitleri önce geleceği için döngümüzü tersten kuruyoruz.
  While dta=0:Wend
   Pauseus 40
  If dta=1 Then ONDARUT.0[I]=1
  While dta=1:Wend 
Next

TAMISI=0
For I=7 To 0 STEP-1  'MSB bitleri önce geleceği için döngümüzü tersten kuruyoruz.
  While dta=0:Wend
    Pauseus 40
  If dta=1 Then TAMISI.0[I]=1
  While dta=1:Wend  
Next

ONDAISI=0
For I=7 To 0 STEP-1  'MSB bitleri önce geleceği için döngümüzü tersten kuruyoruz.
  While dta=0:Wend  
   Pauseus 40
  If dta=1 Then ONDAISI.0[I]=1
  While dta=1:Wend
  
Next

 control=0
For I=7 To 0 STEP-1  'MSB bitleri önce geleceği için döngümüzü tersten kuruyoruz.
  While dta=0:Wend 
   Pauseus 40
  If dta=1 Then control.0[I]=1
  While dta=1:Wend
  
Next

LCDOUT $FE,1  
LCDOUT $FE,$80,"NEM=",Dec TAMRUT,",",Dec ONDARUT
LCDOUT $FE,$C0,"ISI=",Dec TAMISI,",", Dec ONDAISI
PAUSE 800

GoTo BASLA

hata:
LCDOUT $FE,1  
LCDOUT $FE,$80,"SENSOR HATASI"

GoTo BASLA

End




fakat derlemeye kalktığımda :

If dta=1 Then control.0[I]=1



bu ve buna benzer işlemlerin yapıldığı 3-4 satırda   "=" ile ilgili hata veriyor.

Bu satırı protonda kullanmak için neyin yerini ters çevirmeli yada protona göre nasıl uyarlamalıyım ?



OG

control.0[I]=1
yerine

For I=7 To 0 STEP-1 
  While dta=0:Wend 
   Pauseus 40

If dta=1 Then
SetBit control,I
endif

  While dta=1:Wend
Next

-------

control.0[I]=0

yerine

For I=7 To 0 STEP-1 
  While dta=0:Wend 
   Pauseus 40

If dta=1 Then
ClearBit control,I
endif

  While dta=1:Wend
Next

gibi.

mesaj birleştirme:: 01 Ocak 2015, 18:56:42

Ve diğerleri için de aynı değişiklik.
FORUMU İLGİLENDİREN KONULARA ÖM İLE CEVAP VERİLMEZ.

mustafa_cmbz

eyv. hocam bir gün şöyle senelik izine çıkmadan felan alıcam şu proton help'in çıktısını hatim edicem.

Çok sağol hocam çalıştırdım..





  Dim SURE         As Byte
  Dim I            As Byte
  Dim TAMRUT       As Byte
  Dim ONDARUT      As Byte
  Dim TAMISI       As Byte
  Dim ONDAISI      As Byte
  Dim X            As Byte
  Dim control      As Byte

  Symbol dta   =  PORTA.3 
  Symbol BUZZER = PORTB.1

  BASLA:
 
  Output dta
  Low dta
  Pause 18       '18 ms bekle
  High dta           'Data pinini High yap
  Pauseus 40   '40 us bekle
  Input dta
  While dta=0:Wend
  PAUSEUS 85

  If dta=1 Then SENSOR_YOK

  TAMRUT=0
  For I=7 To 0 STEP-1  'MSB bitleri önce geleceği için döngümüzü tersten kuruyoruz.
  While dta=0:Wend  
  Pauseus 40
  If dta=1 Then  
  SetBit TAMRUT,I
  EndIf   
  While dta=1:Wend
  
  Next



  ONDARUT=0
  For I=7 To 0 STEP-1  'MSB bitleri önce geleceği için döngümüzü tersten kuruyoruz.
  While dta=0:Wend
  Pauseus 40
  If dta=1 Then 
  SetBit ONDARUT,I 
  EndIf 
  While dta=1:Wend 
  
  Next

  TAMISI=0
  For I=7 To 0 STEP-1  'MSB bitleri önce geleceği için döngümüzü tersten kuruyoruz.
  While dta=0:Wend
  Pauseus 40
  If dta=1 Then 
  SetBit TAMISI,I
  EndIf
  While dta=1:Wend  
  
  Next

  ONDAISI=0
  For I=7 To 0 STEP-1  'MSB bitleri önce geleceği için döngümüzü tersten kuruyoruz.
  While dta=0:Wend  
  Pauseus 40
  If dta=1 Then 
  SetBit ONDAISI,I
  EndIf
  While dta=1:Wend
  
  Next

  control=0
  For I=7 To 0 STEP-1  'MSB bitleri önce geleceği için döngümüzü tersten kuruyoruz.
  While dta=0:Wend 
  Pauseus 40
  If dta=1 Then
  SetBit control,I 
  EndIf
  While dta=1:Wend
   
  Next
  


  DelayMS 200 
  Print At 1,1,"NEM=",Dec TAMRUT,",",Dec ONDARUT
  Print At 2,1,"ISI=",Dec TAMISI,",",Dec ONDAISI
  DelayMS 1000

  GoTo BASLA

  SENSOR_YOK:
  
  Print At 1,1,"SENSOR HATASI"
  DelayMS 2000 : Cls : DelayMS 200 

  GoTo BASLA

  End