Log in

View Full Version : baca sht75 pake basic


Braincode
11th November 2011, 02:05 PM
salam kenal

pagi gan ada yang bisa bantu baca sensor sht75 ke lcd g gan pake bahasa basic?

mohon bimbinganya soalnya msh baru gan

rencana mau ngukur suhu ma klembaban trus ditampilin ke lcd

gw pake atmega8535 kalo ada tlong kirim ke [email protected].

terima kasih



ini coding saya tp msh eror.tlong di jlasin kaslahne





$regfile = "m8535.dat"

$crystal = 80000000







Config Lcdpin = Pinb , Db4 = Port.4 , Db5 = Port.5 , Db6 = Port.6 , Db7 = Port.7 , E = Portb.1 , Rs = Portb.3 , Rw = Portb.2



Config Lcd = 16 * 2



Dim Ctr As Byte

Dim Dataword As Word

Dim Command As Byte

Dim Dis As String * 20



Dim Calc As Single

Dim Calc2 As Single

Dim Rhlinear As Single

Dim Rhlintemp As Single

Dim Tempc As Single

Dim Tempf As Single





Dim C As Integer

Dim Pul As Integer , Sat As Integer , Kom As Integer

Dim Tpul As Integer , Tsat As Integer , Tkom As Integer

Dim Hpul As Integer , Hsat As Integer , Hkom As Integer

Dim Vt As Single , Vpul As Single , Vkom As Single

Dim Svtemp As Single , Svhumi As Single

Dim Svt As Eram Single

Dim Svh As Eram Single





Const C1 = -4

Const C2 = 0.0405

Const C3 = -0.0000028

Const T1c = 0.01

Const T2 = 0.00008

Const T1f = 0.018



Sck Alias Portb.1

Dataout Alias Portb.0

Datain Alias Pinb.0



Declare Sub Getit()

Declare Sub Getsv()



Ddrb = &B11111111 "port.b sebagai output"

Config Pinb.0 = Output

Config Pinb.1 = Output



Ddrd = &B11110000 "lsb sebagai input msb sebagai output"

Portd = &B00001111 "nilai portd adalah 00001111"



C = 0

Tpul = 0

Tsat = 0

Tkom = 0

Hpul = 0

Hsat = 0

Hkom = 0

Vpul = 0

Vkom = 0

Vt = 0





Set Dataout

For Ctr = 1 To 12

Set Sck

Waitus 2

Reset Sck

Waitus 2

Next Ctr



Do

Cls

Cursor Off

Command = &B00000011 "command untuk membaca temperatur"

Call Getit



Tempf = T1f * Dataword

Tempf = Tempf - 40



Tempc = T1c * Dataword

Tempc = Tempc - 40



Dis = Fusing(tempc , "##.##")

Locate 1 , 1

Lcd Dis ; "C "



Command = &B00000101 "command untuk membaca humidity"

Call Getit



'menghitung Rh linier

Calc = C2 * Dataword

Calc2 = Dataword * Dataword

Calc2 = C3 * Calc2

Calc = Calc + C1

Rhlinear = Calc + Calc2



'menghitung kompensasi suhu pada Rh linier

Calc = T2 * Dataword

Calc2 = Calc + T1c

Calc2 = Tempc - 25

Calc = Calc2 * Calc

Rhlintemp = Calc + Rhlinear





Dis = Fusing(rhlintemp , "##.##")

Locate 1 , 9

Lcd Dis ; " Rh"



Dis = Fusing(tempc , "##.##")

Locate 2 , 1

Lcd Dis ; " C"



Dis = Fusing(svhumi , "##.##")

Locate 2 , 9

Lcd Dis ; " Rh"

Waitms 500

Loop



'proses pembacaan Sensor sht11

Sub Getit()



Local Datavalue As Word

Local Databyte As Byte

'mulai yuk "transmission start"

Set Sck

Reset Dataout

Reset Sck

Set Sck

Set Dataout

Reset Sck

'Send Command

Shiftout Dataout , Sck , Command , 1



Ddrb = &B11111110 'set datain sebagai input

Config Pinb.0 = Input

Set Sck 'ACK

Reset Sck

Waitus 10

Bitwait Pinb.0 , Reset 'tunggusampai sht mereset datain

Shiftin Datain , Sck , Databyte , 1 'get MSB

Datavalue = Databyte



Ddrb = &B11111111

Config Pinb.0 = Output



Reset Dataout

Set Sck

Reset Sck



Ddrb = &B11111110 ' set datain sebagai input

Config Pinb.0 = Input



Shiftin Datain , Sck , Databyte , 1

Shift Datavalue , Left , 8 'get LSB

Datavalue = Datavalue Or Databyte



Dataword = Datavalue



Ddrb = &B11111111

Config Pinb.0 = Output



Reset Dataout

Set Sck

Reset Sck



Ddrb = &B11111110 "set datain sebagai input"

Config Pinb.0 = Input



Shiftin Datain , Sck , Databyte , 1 'CRC tidak digunakan



Ddrb = &B11111111

Config Pinb.0 = Output



Set Dataout

Set Sck

Reset Sck

End Sub

End

</div>