Hello.
There is an example Bascom GUI-O Datalogger made on Arduino Nano/ Bluetooth HC06 and GUI-O android application for measurement temperature and humidity using AM2301 sensor.
GUI-O application
https://play.google.com/store/apps/details?id=com.guio.guioapp
or
www.gui-o.com
Application store data in the smartphone, directory
Code:
\Phone\Android\data\com.guio.guioapp\files\
SD card and big processor not required on electronic site.
Sharing and opening file is also possible direct from application. On phone screen type on filename and opening external application to open stored file.
Typing on text »Datalogger« performed Init procedure again.
Type on label www.gui-o.com to visit this for more details.
In case that temperature is less then 0 C a warning appears - Vibra and tone from smart phone
In attach is source code, schematic, Prenos.gif picture, which is needed to copy in directory to Android smart phone in the directory:
Code:
\ Phone \ Android \ data \ com.guio.guioapp \ files \ Pictures \
When the button “Start Logging” is pushed, GIF animation start.
NOTE. When you program Arduino via USB (bootloader) it is recommended that disconnect Rx and Tx pin to HC06.
There is also Youtube video.
'--------------------------------------------------------------
'
' HW: Arduino Nano ATMEGA 328
' GUI-O Datalogger
' GUI-O Ver 0.10.1
' 2021-04-10
'--------------------------------------------------------------
$regfile = "m328pdef.dat"
$crystal = 16000000
$baud = 9600
$hwstack = 30 ' default use 32 for the hardware stack
$swstack = 30 ' default use 10 for the SW stack
$framesize = 30
Config Serialin = Buffered , Size = 120
Enable Interrupts
' https://www.mcselec.com/index2.php?option=com_forum&Itemid=59&page=viewtopic&t=2543&highlight=gettoken
$lib "GetToken.Lib"
$external Gettoken
Declare Function Gettoken(strinput As String , Byval Bseparator As Byte , Byval Bcount As Byte ) As String
Dim Sep As Byte
Dim Pozicija As Byte
'-AM2301 Sensor------------------------------------------------------------
Dht_put Alias Portb.0 : Set Dht_put 'Sensor pins
Dht_get Alias Pinb.0
Dht_io_set Alias Ddrb.0 : Set Dht_io_set
Dim Data_dht(5) As Byte , Temperature As String * 6 , Humidity As String * 5 , Dht_type As Byte
Declare Sub Get_humidity()
'--------------------------------------------------------------------------
'-Declaration variables ---------------------------------------------------
Dim Data_key As Byte
Dim Rdata As String * 100
Dim Znak As String * 5
Dim Init As String * 4
Dim Datum As String * 8
Dim Ura As String * 8
Dim Tempv As Single
Dim Humv As Single
Dim Flgst As Bit
Flgst = 0
Dim Filenx As String * 20
Dim Temperaturex As String * 10
Dim Humidityx As String * 10
Dim Timeint As Byte
Dim Sec_t As String * 2
Dim Sec_v As Byte
Dim Sec_a As Byte
Dim Interval As String * 12
Gosub R_eep
Gosub Guio_ini
'-Main ----------------------------------------------------------------------
Main:
Do
If Ischarwaiting() = 1 Then
Gosub Read_data
End If
Gosub R_eep
Gosub Time_int
Loop
'----------------------------------------------------------------------------
End
'----------------------------------------------------------------------------
Time_int:
If Timeint = 1 And Flgst = 1 Then
If Sec_v <> Sec_a Then
Gosub Write_dat
Sec_a = Sec_v
End If
End If
If Timeint = 10 And Flgst = 1 Then
Select Case Sec_v
Case 0 : Gosub Write_dat
Case 10 : Gosub Write_dat
Case 20 : Gosub Write_dat
Case 30 : Gosub Write_dat
Case 40 : Gosub Write_dat
Case 50 : Gosub Write_dat
End Select
End If
If Timeint = 30 And Flgst = 1 Then
Select Case Sec_v
Case 0 : Gosub Write_dat
Case 30 : Gosub Write_dat
End Select
End If
If Timeint = 60 And Flgst = 1 Then
Select Case Sec_v
Case 00 : Gosub Write_dat
End Select
End If
Return
'----------------------------------------------------------------------------
Write_dat: 'writting data on smart phone \Phone\Android\data\com.guio.guioapp\files\
If Sec_v <> Sec_a Then
Print "@ch1 PLI:" ; Chr(34) ; "pl1,pl2" ; Chr(34) ; " PLC:" ; Chr(34) ; "#80c5de, #cd1e2c" ; Chr(34) ; " YP:" ; Chr(34) ; Humidity ; "," ; Temperature ; Chr(34) ; " XP:" ; Chr(34) ; "0,0" ; Chr(34)
Print "@extf1 FAC:1 FP:" ; Chr(34) ; Datum ; "," ; Ura ; "," ; Temperature ; "," ; Humidity ; Chr(34)
Sec_a = Sec_v
End If
Return
'-GUI-O Initialization process --------------------------------------
Guio_ini:
Gosub R_eep
'Disable Timer1
Print "@sls" ' hide writing objects
Print "@cls" ' clear HW components of phone
Print "@clh" ' clear screen on smart phone
Print "@guis BGC:#000000 ASR:0.449671" ' set beckground- black and resolution of phone"
'Picture:
'https://www.google.com/search?q=technology+gif&tbm=isch&ved=2ahUKEwi7tbDykfbvAhW95bsIHe4ZDHgQ2-cCegQIABAA&oq=technology+gif&gs_lcp=
'CgNpbWcQAzIECCMQJzICCAAyAggAMgIIADICCAAyAggAMgIIADICCAAyAggAMgIIADoECAAQQzoGCAAQBxAeUKodWIsyYJ01aABwAHgAgAFNiAGmBZIBAjEwmAEAoAEBqg
'ELZ3dzLXdpei1pbWfAAQE&sclient=img&ei=ceRyYPu4O73L7_UP7rOwwAc&bih=1184&biw=2379&rlz=1C1CHBD_enSI893SI893&hl=en#imgrc=B0Xz2DikVtub4M&imgdii=7ZOKvs7fe1PToM
'Picture "prenos.gif >> copy this picture on smart phone to directory " \Phone\Android\data\com.guio.guioapp\files\Pictures"
Print "|IM UID:im1 X:50 Y:40 W:100 H:100 ROT:0 SHE:0 PLS:0 IP:" ; Chr(34) ; "prenos.gif" ; Chr(34)
'Label
Print "|LB UID:lbname X:45 Y:8 ALP:1 SHE:1 ROT:0 FGC:#42ECF5 FSZ:4.5 FFA:" ; Chr(34) ; "font6" ; Chr(34) ; " TXT:" ; Chr(34) ; "GUI-O Datalogger" ; Chr(34)
'Button Hide because transparent is "0" #0042ECF5 - first 2 data from color
Print "|BT UID:bt_init X:76 Y:8 W:30 H:5 VIS:1 ROT:0 RAD:1.5 SHE:1 BGC:#00000000 SBGC:#00000000 FSZ:3 FGC:#0042ECF5 SHE:1 BTH:0.2 FFA:" ; Chr(34) ; "font6" ; Chr(34) ; " TXT:" ; Chr(34) ; "Init" ; Chr(34) ; " SVAL:" ; Chr(34) ; "1" ; Chr(34)
'Button Start/Stop logging
Print "|BT UID:bt_start X:76 Y:17 W:30 H:5 VIS:1 ROT:0 RAD:1.5 SHE:1 BGC:#000000 SBGC:#000000 FSZ:3 FGC:#42ECF5 SHE:1 BTH:0.2 FFA:" ; Chr(34) ; "font6" ; Chr(34) ; " TXT:" ; Chr(34) ; "Start Logging" ; Chr(34) ; " SVAL:" ; Chr(34) ; "1" ; Chr(34)
'Label Date and time
Print "|LB UID:datum X:11 Y:17 ROT:0 SHE:1 ALP:1 FGC:#42ECF5 FSZ:3 FFA:" ; Chr(34) ; "font6" ; Chr(34) ; " TXT:" ; Chr(34) ; "" ; Chr(34) 'Labela Date
Print "|LB UID:ura X:33 Y:17 ROT:0 SHE:1 ALP:1 FGC:#42ECF5 FSZ:3 FFA:" ; Chr(34) ; "font6" ; Chr(34) ; " TXT:" ; Chr(34) ; "" ; Chr(34) 'Labela Time
'Label for input file name
Print "|LB UID:lbfilen X:33 Y:29 ROT:0 SHE:1 ALP:1 FGC:#42ECF5 FSZ:3 FFA:" ; Chr(34) ; "font6" ; Chr(34) ; " TXT:" ; Chr(34) ; Filenx ; Chr(34) 'Labela T1
'Button to open file
Print "|BT UID:bt_filer X:60 Y:29 W:40 H:5 VIS:1 ROT:0 RAD:1.5 SHE:1 BGC:#00000000 SBGC:#00000000 FSZ:3 FGC:#0042ECF5 SHE:1 BTH:0.2 FFA:" ; Chr(34) ; "font6" ; Chr(34) ; " TXT:" ; Chr(34) ; "" ; Chr(34) ; " SVAL:" ; Chr(34) ; "1" ; Chr(34)
'Label with https home page www.gui-o.com - parameter URL:1
Print "|LB UID:lbguio X:33 Y:46.5 ROT:0 SHE:1 ALP:1 URL:1 FGC:#42ECF5 FSZ:2 FFA:" ; Chr(34) ; "font6" ; Chr(34) ; " TXT:" ; Chr(34) ; "www.gui-o.com" ; Chr(34) 'Labela T1
'Label for interval of storing data
Print "|LB UID:lbtimiv X:33 Y:33 ROT:0 SHE:1 ALP:1 FGC:#42ECF5 FSZ:3 FFA:" ; Chr(34) ; "font6" ; Chr(34) ; " TXT:" ; Chr(34) ; Interval ; Chr(34) 'Labela T1
'Circular bar for graphical presenting measurement values temperature and Humidity
Print "|CB UID:temp_i X:72 Y:60 W:43 CE:0 HAW:0 FGC:#cd1e2c SFGC:#cd1e2c BGC:#35444d BTH:2 LVAL:0 HVAL:50"
Print "|CB UID:hum_i X:72 Y:60 W:33 CE:0 HAW:0 FGC:#80c5de SFGC:#80c5de BGC:#35444d BTH:2 LVAL:0 HVAL:100"
Print "|LB UID:temp_v X:72 Y:58 FGC:#cd1e2c FFA:" ; Chr(34) ; "font6" ; Chr(34) ; " FSZ:4 TXT:" ; Chr(34) ; "24°C" ; Chr(34)
Print "|LB UID:hum_v X:72 Y:62 FGC:#80c5de FFA:" ; Chr(34) ; "font6" ; Chr(34) ; " FSZ:4 TXT:" ; Chr(34) ; "25%" ; Chr(34)
'Graph for presenting data
Print "|CH UID:ch1 X:50 Y:83 W:96 H:25 BTH:0 XTC:4 YTC:5 VIS:0 BGC:#35444d FGC:#42ECF5 RAD:1 CHN:" ; Chr(34) ; "Temperature (°C) Humidity (%)" ; Chr(34) ; " FFA:" ; Chr(34) ; "font6" ; Chr(34) ; " FSZ:1.8"
Print "|LB UID:lbfilesi X:3 Y:75 ROT:0 SHE:1 ALP:1 VIS:1 FGC:#42ECF5 FSZ:3.5 FFA:" ; Chr(34) ; "font6" ; Chr(34) ; " TXT:" ; Chr(34) ; "File name" ; Chr(34) 'Labela T1
'Text input for entering data file name
Print "|TI UID:tifilen X:63 Y:75.5 W:65 ROT:0 SHE:1 VIS:1 BGC:#35444d FGC:#42ECF5 SHE:1 FSZ:3.5 FFA:" ; Chr(34) ; "font6" ; Chr(34) ; " RAD:1 BTH:0.5 TXT:" ; Chr(34) ; Filenx ; Chr(34)
Print "|LB UID:lbtimsi X:3 Y:82 ROT:0 SHE:1 ALP:1 FGC:#42ECF5 FSZ:3.5 FFA:" ; Chr(34) ; "font6" ; Chr(34) ; " TXT:" ; Chr(34) ; "Timer Interval" ; Chr(34) 'Labela T1
'Buttons for time intervaling
Print "|BT UID:bt_1sec X:51 Y:82 W:30 H:5 VIS:1 ROT:0 RAD:1.5 SHE:1 BGC:#000000 SBGC:#000000 FSZ:3 FGC:#cd1e2c SHE:1 BTH:0.2 FFA:" ; Chr(34) ; "font6" ; Chr(34) ; " TXT:" ; Chr(34) ; "1-second" ; Chr(34) ; " SVAL:" ; Chr(34) ; "" ; Chr(34)
Print "|BT UID:bt_10sec X:51 Y:86 W:30 H:5 VIS:1 ROT:0 RAD:1.5 SHE:1 BGC:#000000 SBGC:#000000 FSZ:3 FGC:#42ECF5 SHE:1 BTH:0.2 FFA:" ; Chr(34) ; "font6" ; Chr(34) ; " TXT:" ; Chr(34) ; "10-seconds" ; Chr(34) ; " SVAL:" ; Chr(34) ; "" ; Chr(34)
Print "|BT UID:bt_30sec X:51 Y:90 W:30 H:5 VIS:1 ROT:0 RAD:1.5 SHE:1 BGC:#000000 SBGC:#000000 FSZ:3 FGC:#42ECF5 SHE:1 BTH:0.2 FFA:" ; Chr(34) ; "font6" ; Chr(34) ; " TXT:" ; Chr(34) ; "30-seconds" ; Chr(34) ; " SVAL:" ; Chr(34) ; "" ; Chr(34)
Print "|BT UID:bt_1min X:51 Y:94 W:30 H:5 VIS:1 ROT:0 RAD:1.5 SHE:1 BGC:#000000 SBGC:#000000 FSZ:3 FGC:#42ECF5 SHE:1 BTH:0.2 FFA:" ; Chr(34) ; "font6" ; Chr(34) ; " TXT:" ; Chr(34) ; "1-minute" ; Chr(34) ; " SVAL:" ; Chr(34) ; "" ; Chr(34)
Print "|BT UID:bt_pub X:84 Y:82 W:24 H:5 VIS:1 ROT:0 RAD:1.5 SHE:1 BGC:#000000 SBGC:#000000 FSZ:3 FGC:#42ECF5 SHE:1 BTH:0.2 FFA:" ; Chr(34) ; "font6" ; Chr(34) ; " TXT:" ; Chr(34) ; "Share" ; Chr(34) ; " SVAL:" ; Chr(34) ; "" ; Chr(34)
'Define file on smart phone to storing data
Print "|EXTF UID:extf1 HID:extf FAC:0 FNA:" ; Chr(34) ; Filenx ; Chr(34)
'Define RTC on smart phone
Print "|RTC UID:rtc1 HID:rtc RTCE:1 RTCR:1 RTCF:" ; Chr(34) ; "yy.MM.dd HH:mm:ss" ; Chr(34) '@rtc1 2018/12/16 20:31:48:242
'Define tone on smart phone
Print "|TON UID:ton1 HID:ton EDUR:1000 TONT:24"
'Define Vibration on smart phone
Print "|VIB UID:vib1 HID:vib EDUR:1000"
'Depends od stored setup setting color of buttons for interval
If Timeint = 1 Then
Print "@bt_1sec BGC:#000000 SBGC:#000000 FGC:#cd1e2c"
Print "@bt_10sec BGC:#000000 SBGC:#000000 FGC:#42ECF5"
Print "@bt_30sec BGC:#000000 SBGC:#000000 FGC:#42ECF5"
Print "@bt_1min BGC:#000000 SBGC:#000000 FGC:#42ECF5"
End If
If Timeint = 10 Then
Print "@bt_1sec BGC:#000000 SBGC:#000000 FGC:#42ECF5"
Print "@bt_10sec BGC:#000000 SBGC:#000000 FGC:#cd1e2c"
Print "@bt_30sec BGC:#000000 SBGC:#000000 FGC:#42ECF5"
Print "@bt_1min BGC:#000000 SBGC:#000000 FGC:#42ECF5"
End If
If Timeint = 30 Then
Print "@bt_1sec BGC:#000000 SBGC:#000000 FGC:#42ECF5"
Print "@bt_10sec BGC:#000000 SBGC:#000000 FGC:#42ECF5"
Print "@bt_30sec BGC:#000000 SBGC:#000000 FGC:#cd1e2c"
Print "@bt_1min BGC:#000000 SBGC:#000000 FGC:#42ECF5"
End If
If Timeint = 60 Then
Print "@bt_1sec BGC:#000000 SBGC:#000000 FGC:#42ECF5"
Print "@bt_10sec BGC:#000000 SBGC:#000000 FGC:#42ECF5"
Print "@bt_30sec BGC:#000000 SBGC:#000000 FGC:#42ECF5"
Print "@bt_1min BGC:#000000 SBGC:#000000 FGC:#cd1e2c"
End If
Print "@hls 10" 'show complete picture on smart phone
Gosub Ton_vib ' sound and vibra activated
Return
'-Reading data from serialport from GUI-O ----------------------------
Read_data:
Data_key = Inkey()
If Data_key = "@" Then Input Rdata Noecho
Sep = &H20
Pozicija = 1
Znak = Gettoken(rdata , Sep , Pozicija)
If Znak = "bt_start" Then 'button start is pressed
Toggle Flgst
If Flgst = 1 Then
Print "@bt_start TXT:" ; Chr(34) ; "Stop Logging" ; Chr(34)
Print "@im1 PLS:1"
Print "@ch1 VIS:1"
Print "@lbfilesi VIS:0"
Print "@tifilen VIS:0"
Print "@lbtimsi VIS:0"
Print "@bt_1sec VIS:0"
Print "@bt_10sec VIS:0"
Print "@bt_30sec VIS:0"
Print "@bt_1min VIS:0"
Print "@bt_pub VIS:0"
End If
If Flgst = 0 Then
Print "@bt_start TXT:" ; Chr(34) ; "Start Logging" ; Chr(34)
Print "@im1 PLS:0"
Print "@ch1 VIS:0"
Print "@lbfilesi VIS:1"
Print "@tifilen VIS:1"
Print "@lbtimsi VIS:1"
Print "@bt_1sec VIS:1"
Print "@bt_10sec VIS:1"
Print "@bt_30sec VIS:1"
Print "@bt_1min VIS:1"
Print "@bt_pub VIS:1"
End If
End If
If Znak = "bt_1sec" Then 'button 1 second is pressed
Print "@bt_1sec BGC:#000000 SBGC:#000000 FGC:#cd1e2c"
Print "@bt_10sec BGC:#000000 SBGC:#000000 FGC:#42ECF5"
Print "@bt_30sec BGC:#000000 SBGC:#000000 FGC:#42ECF5"
Print "@bt_1min BGC:#000000 SBGC:#000000 FGC:#42ECF5"
Timeint = 1
Writeeeprom Timeint , &H30
Gosub R_eep
Print "@lbtimiv TXT:" ; Chr(34) ; Interval ; Chr(34)
End If
If Znak = "bt_10sec" Then 'button 10 second is pressed
Print "@bt_1sec BGC:#000000 SBGC:#000000 FGC:#42ECF5"
Print "@bt_10sec BGC:#000000 SBGC:#000000 FGC:#cd1e2c"
Print "@bt_30sec BGC:#000000 SBGC:#000000 FGC:#42ECF5"
Print "@bt_1min BGC:#000000 SBGC:#000000 FGC:#42ECF5"
Timeint = 10
Writeeeprom Timeint , &H30
Gosub R_eep
Print "@lbtimiv TXT:" ; Chr(34) ; "10-seconds" ; Chr(34)
End If
If Znak = "bt_30sec" Then 'button 30 second is pressed
Print "@bt_1sec BGC:#000000 SBGC:#000000 FGC:#42ECF5"
Print "@bt_10sec BGC:#000000 SBGC:#000000 FGC:#42ECF5"
Print "@bt_30sec BGC:#000000 SBGC:#000000 FGC:#cd1e2c"
Print "@bt_1min BGC:#000000 SBGC:#000000 FGC:#42ECF5"
Timeint = 30
Writeeeprom Timeint , &H30
Print "@lbtimiv TXT:" ; Chr(34) ; "30-seconds" ; Chr(34)
End If
If Znak = "bt_1min" Then 'button 1 minute is pressed
Print "@bt_1sec BGC:#000000 SBGC:#000000 FGC:#42ECF5"
Print "@bt_10sec BGC:#000000 SBGC:#000000 FGC:#42ECF5"
Print "@bt_30sec BGC:#000000 SBGC:#000000 FGC:#42ECF5"
Print "@bt_1min BGC:#000000 SBGC:#000000 FGC:#cd1e2c"
Timeint = 60
Writeeeprom Timeint , &H30
Print "@lbtimiv TXT:" ; Chr(34) ; "1-minute" ; Chr(34)
End If
If Znak = "tifilen" Then 'Object TI Text input is confirm
Sep = " "
Pozicija = 2
Filenx = Gettoken(rdata , Sep , Pozicija)
Writeeeprom Filenx , &H10
Print "@clh" 'clear init hardware components on smart phone
'Again initialization hardware components
Print "|EXTF UID:extf1 HID:extf FNA:" ; Chr(34) ; Filenx ; Chr(34) ; " FAC:0"
Print "|RTC UID:rtc1 HID:rtc RTCE:1 RTCR:1 RTCF:" ; Chr(34) ; "yy.MM.dd HH:mm:ss" ; Chr(34) '@rtc1 2018/12/16 20:31:48:242
Print "|TON UID:ton1 HID:ton EDUR:1000 TONT:24"
Print "|VIB UID:vib1 HID:vib EDUR:1000"
Print "@lbfilen TXT:" ; Chr(34) ; Filenx ; Chr(34)
Znak = " "
End If
If Znak = "bt_filer" Then 'Open File with external application
Print "@extf1 FAC:5"
Znak = " "
End If
If Znak = "bt_pub" Then ' Share File
Print "@extf1 FAC:7"
Znak = " "
End If
If Znak = "bt_init" Then ' Init button from application
Gosub R_eep
Gosub Guio_ini
End If
If Znak = "Init" Then
Gosub R_eep
Gosub Guio_ini
End If
Init = Mid(rdata , 1 , 4)
If Init = "init" Then ' Init button with start button
Gosub R_eep
Gosub Guio_ini
End If
If Znak = "rtc1" Then 'reading RTC values from phone
Sep = &H20
Pozicija = 2
Datum = Gettoken(rdata , Sep , Pozicija)
Sep = &H20
Pozicija = 3
Ura = Gettoken(rdata , Sep , Pozicija)
Sep = ":"
Pozicija = 3
Sec_t = Gettoken(ura , Sep , Pozicija)
Sec_v = Val(sec_t)
Print "@datum TXT:" ; Chr(34) ; Datum ; Chr(34)
Print "@ura TXT:" ; Chr(34) ; Ura ; Chr(34)
Gosub Meritev
If Tempv < 0 Then 'In case that temperature is less then 0 degrees
Select Case Sec_v 'Alert every 15 seconds
Case 0 : Gosub Ton_vib
Case 15 : Gosub Ton_vib
Case 30 : Gosub Ton_vib
Case 45 : Gosub Ton_vib
End Select
End If
End If
Znak = ""
Rdata = ""
Return
'-Ton Vibra procedures----------------------------------------------------------
Ton_vib:
Print "@ton1 EDUR:500"
Print "@vib1 EDUR:200"
Return
'-Measurement of Temperature and Humidity---------------------------------------
'https://www.mcselec.com/index2.php?option=com_forum&Itemid=59&page=viewtopic&t=13759&highlight=dht11
Meritev:
Call Get_humidity
Print "@temp_i VAL:" ; Temperature
Print "@hum_i VAL:" ; Humidity
Temperaturex = Temperature + "°"
Humidityx = Humidity + "%"
Print "@temp_v TXT:" ; Chr(34) ; Temperaturex ; Chr(34)
Print "@hum_v TXT:" ; Chr(34) ; Humidityx ; Chr(34)
Return
'-------------------------------------------------------------------------------
'=============================== DHT11/DHT22 ===================================
'MCS Forum
'https://www.mcselec.com/index2.php?option=com_forum&Itemid=59&page=viewtopic&t=13759&highlight=dht11
Sub Get_humidity()
Local Number_dht As Byte , Byte_dht As Byte , Dht_single As Single
Set Dht_io_set 'bus is output
Reset Dht_put : Waitms 1 'bus=0
Set Dht_put : Waitus 40 'bus=1
Reset Dht_io_set : Waitus 40 'bus is input
If Dht_get = 1 Then 'not DHT22?
Goto Dht11_check 'try DHT11
Else
Waitus 80
If Dht_get = 0 Then
Humidity = " - " 'DHT22 not response!!!
Exit Sub
Else
Dht_type = 22 'really DHT22
Goto Read_dht_data
End If
End If
Dht11_check:
Set Dht_io_set 'bus is output
Reset Dht_put : Waitms 20 'bus=0
Set Dht_put : Waitus 40 'bus=1
Reset Dht_io_set : Waitus 40 'bus is input
If Dht_get = 1 Then
Humidity = " - " 'DHT11 not response!!!
Exit Sub
End If
Waitus 80
If Dht_get = 0 Then
Humidity = " - " 'DHT11 not response!!!
Exit Sub
Else
Dht_type = 11 'really DHT11
End If
Read_dht_data:
Bitwait Dht_get , Reset 'wait for transmission
For Number_dht = 1 To 5
For Byte_dht = 7 To 0 Step -1
Bitwait Dht_get , Set
Waitus 35
If Dht_get = 1 Then
Data_dht(number_dht).byte_dht = 1
Bitwait Dht_get , Reset
Else
Data_dht(number_dht).byte_dht = 0
End If
Next
Next
Set Dht_io_set : Set Dht_put
If Dht_type = 22 Then 'CRC check
Byte_dht = Data_dht(1) + Data_dht(2)
Byte_dht = Byte_dht + Data_dht(3)
Byte_dht = Byte_dht + Data_dht(4)
Else
Byte_dht = Data_dht(1) + Data_dht(3)
End If
If Byte_dht <> Data_dht(5) Then
Temperature = "error"
Humidity = "error" 'CRC error!!!
Else
If Dht_type = 22 Then
Dht_single = Data_dht(1) * 256
Dht_single = Dht_single + Data_dht(2)
Dht_single = Dht_single / 10
Humidity = Fusing(dht_single , "#.#")
If Data_dht(3).7 = 1 Then
Data_dht(3).7 = 0
Temperature = "-"
Else
Temperature = ""
End If
Dht_single = Data_dht(3) * 256
Dht_single = Dht_single + Data_dht(4)
Dht_single = Dht_single / 10
Temperature = Temperature + Fusing(dht_single , "#.#")
Tempv = Val(temperature)
Humv = Val(humidity)
Else
End If
End If
End Sub
'-Read data from EEPROM-------------------------------------------------------
R_eep:
Readeeprom Filenx , &H10
Readeeprom Timeint , &H30
Select Case Timeint
Case 1 : Interval = "1-second"
Case 10 : Interval = "10-seconds"
Case 30 : Interval = "30-seconds"
Case 60 : Interval = "1-minute"
End Select
Return
'-----------------------------------------------------------------------------