@efe24
Please write in english.
Posts made by gammda
-
GUI-O Energy Meter
Here is a Energy Meter that uses the MODBus protocol and GUI-O.
>>Init file @sls 500 @cls @clh @clo @gse COD:0 TSC:39 @guis BGC:#000000 ASR:0.449671 |IM UID:im0 X:50 Y:50 W:100 H:100 ROT:0 SHE:0 VIS:1 ACT:0 OPA:1 SCM:1 PLS:1 IP:'https://i.imgur.com/zZuSWyR.png' |IM UID:imlcd X:50 Y:20 W:90 H:90 ROT:0 SHE:1 SHHR:2 SHVR:2 VIS:1 ACT:0 OPA:1 IP:'https://i.imgur.com/WGJpsI4.png' |LB UID:lben X:50 Y:20.5 ALP:0 SHE:1 SHHR:0.8 SHVR:0.8 ROT:0 FGC:#000000 FSZ:4 FFA:'font8' TXT:'25,101 KWh' |LB UID:lbv X:5 Y:35 ALP:1 SHE:1 SHHR:0.8 SHVR:0.8 ROT:0 FGC:#FFFFFF FSZ:3.5 FFA:'font10' TXT:'231.048 V' |LB UID:lba X:5 Y:40 ALP:1 SHE:1 SHHR:0.8 SHVR:0.8 ROT:0 FGC:#FFFFFF FSZ:3.5 FFA:'font10' TXT:'0.057 A' |LB UID:lbw X:5 Y:45 ALP:1 SHE:1 SHHR:0.8 SHVR:0.8 ROT:0 FGC:#FFFFFF FSZ:3.5 FFA:'font10' TXT:'7.229 W' |LB UID:lbf X:5 Y:50 ALP:1 SHE:1 SHHR:0.8 SHVR:0.8 ROT:0 FGC:#FFFFFF FSZ:3.5 FFA:'font10' TXT:'50.000 Hz' |LB UID:lbp X:5 Y:55 ALP:1 SHE:1 SHHR:0.8 SHVR:0.8 ROT:0 FGC:#FFFFFF FSZ:3.5 FFA:'font10' TXT:'PF:1.000' |LB UID:lbw1 X:5 Y:60 ALP:1 SHE:1 SHHR:0.8 SHVR:0.8 ROT:0 FGC:#FFFFFF FSZ:3.5 FFA:'font10' TXT:'Wmax 47.046 W' |LB UID:lb0 X:50 Y:6 ALP:0 SHE:1 ROT:0 FGC:#FFFFFF FSZ:5 FFA:'font7' TXT:'Energy Meter' |BSR UID:bsrsh X:52 Y:78 W:95 H:27 RAD:0 OPA:0.5 BGC:#000000 SBGC:#000000 FGC:#000000 BTH:0 |CH UID:pl1 X:50 Y:77 W:95 H:27 SHE:1 VIS:1 OPA:1 PZO:1 BGC:#000000 FGC:#FFFFFF CHT:0 FSZ:1.2 SHVL:1 VLP:0 CHN:'ENERGY METER' RAD:0.5 BTH:0 LT:0.3 XTC:6 YTC:5 XMA:6 YMA:4 YLO:0 YHI:10 SHG:0 DRAT:0.90 DRA:50 |IM UID:imexit X:85 Y:95 W:14 H:14 ROT:0 SHE:1 SHHR:1 SHVR:1 VIS:1 OPA:1 SCM:2 PLS:1 IP:'https://i.imgur.com/8hDtY92.png' |LB UID:lbms X:5 Y:95 ALP:1 SHE:1 ROT:0 FGC:#FFFFFF FSZ:2.5 FFA:'font7' TXT:'(c) gammda 2024' @hls 200
@pl1 PLI:'pl0,pl1,pl2,pl3' PLC:'#1ec78e,#06c1f7,#ee9e02,#cd1e2c' YP:'4,1.7,1.1,6' XP:'0,0,0,0'
@pl1 PLI:'pl0,pl1,pl2,pl3' PLC:'#1ec78e,#06c1f7,#ee9e02,#cd1e2c' YP:'3,3.8,2.2,8' XP:'0,0,0,0'
@pl1 PLI:'pl0,pl1,pl2,pl3' PLC:'#1ec78e,#06c1f7,#ee9e02,#cd1e2c' YP:'3,3.4,1.8,7' XP:'0,0,0,0'
@pl1 PLI:'pl0,pl1,pl2,pl3' PLC:'#1ec78e,#06c1f7,#ee9e02,#cd1e2c' YP:'2,3.2,1.6,4' XP:'0,0,0,0'
@pl1 PLI:'pl0,pl1,pl2,pl3' PLC:'#1ec78e,#06c1f7,#ee9e02,#cd1e2c' YP:'4,2.3,2.2,4.5' XP:'0,0,0,0'
@pl1 PLI:'pl0,pl1,pl2,pl3' PLC:'#1ec78e,#06c1f7,#ee9e02,#cd1e2c' YP:'5,2.2,1.6,4.8' XP:'0,0,0,0'
@pl1 PLI:'pl0,pl1,pl2,pl3' PLC:'#1ec78e,#06c1f7,#ee9e02,#cd1e2c' YP:'5.4,1.7,1.1,3.4' XP:'0,0,0,0' -
MPPT Solar Charger GUI-O Control
Here is one example of adding an Eyra electronics MPPT-100 MPPT solar charger remote control device.
[https://www.eyra-elektronika.si/solarni-regulator.htm](link url)It's a great product, now I can control it remotely via WiFi and GUI-O.
I use the RS232 port to communicate with the device. -
RE: ESP8266 bugs !!?
Check the communication lines. Be careful not to connect the RX and TX pins of the ESP8266 together with the Rx and Tx pins of the Bluetooth module.
I generally use ESP826612F in SMD or Wemos D1 mini version. Sometimes it happened that some information was missing in a very long text. I solve this problem by separating the sent text in two messages on ESP.It may also happen that the ESP does not work properly and needs to be replaced with another one.
-
RE: Audio Mixer Question
It is possible that you are using a While - Wend loop that never ends because the Sig_Sim parameter is always "0".
Check your code and change the Sig_sim variable to 1 at some point during runtime.Maybe you should try changing the While - Wend with an IF - ENDIF statement.
Alternatively, maybe modify Ischarwaiting() with serial interrupts something like this:
On Urxc Rxcom1_isr
Enable Urxc
Dim Rxdata1$ As String * 80
Dim Rxdata As BitDim Comchar1 As Byte
Enable Interrupts
DoIf Rxdata = 1 Then
Reset Rxdata1
Print Rxdata1$ 'do something with your received data
End If
LoopRxcom1_isr:
Comchar1 = Inkey()
Rxdata1$ = Rxdata1$ + Chr(comchar1)
If Comchar1 = 13 Then ' detect end of line can be 10 or any other char.
Set Rxdata
End If
Return, but it will completely change the concept of your code.
-
GUI-O Datalogger
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.comApplication 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 '-----------------------------------------------------------------------------
-
GUI-O Snail Trap
Here is a screenshot of my android phone for the snail trap.
-
Increase CB Widget - Width
I would like to make an A-meter whose scale is almost half the screen. The problem is that the CB W: (width) is limited to 100%.
Is it possible to increase this value?
Attached is a picture. -
GUI-O GSM Parking system
Here is my screenshot of GUI-O GSM parking system management.
-
GUI-O OWON XDM1041 digital multimeter
Graphical interface (Android screenshot) entirely made with GUI-O.
https://www.owon.com.hk/products_owon_4_1|2_digits_xdm1000_series_bench-type_digital_multimeter... and HW connected to the serial connector.
It can be connected via WiFi or Bluetooth to a smartphone.
-
RE: GUI-O with Nano 33 BLE and the ArduinoBLE Library
@VNB said in GUI-O with Nano 33 BLE and the ArduinoBLE Library:
[2023-09-20T09:13:57.992] @init
[2023-09-20T09:13:57.996] @cls
[2023-09-20T09:13:58.023] @guis BGC:#FFFFFF
[2023-09-20T09:13:58.180] |LB UID:title X:50 Y:15 TXT:"Simple light switch" FFA:"font8" FSZ:3.5
[2023-09-20T09:13:58.239] |LB UID:tap_me X:50 Y:70 TXT:"TAP ME!" FFA:"font8" FSZ:3 FFA:"font5"
[2023-09-20T09:13:58.295] |CB UID:brightness X:50 Y:50 W:90 BTH:5 HAH:8 HAW:8 VIS:0 STA:135 ENA:45 FGC:#000000 SFGC:#FFFF00 BGC:#CBCBCB
[2023-09-20T09:13:58.340] |IM UID:light_off X:50 Y:50 IP:"https://i.imgur.com/3VbsS0Z.png" VIS:1
[2023-09-20T09:13:58.395] |IM UID:light_on X:50 Y:50 IP:"https://i.imgur.com/gNdck9A.png" VIS:0
[2023-09-20T09:14:05.913] @light_off 1
[2023-09-20T09:14:05.913] @light_off VIS:0
[2023-09-20T09:14:05.943] @light_on VIS:1
[2023-09-20T09:14:06.004] @brightness VIS:1 VAL:100
[2023-09-20T09:14:12.333] @brightness 45.8
[2023-09-20T09:14:15.932] @brightness 16.7
[2023-09-20T09:14:19.772] @brightness 5.4Try this:
@init
@cls
@guis BGC:#FFFFFF
|LB UID:title X:50 Y:15 TXT:"Simple light switch" FFA:"font8" FSZ:3.5
|LB UID:tap_me X:50 Y:70 TXT:"TAP ME!" FFA:"font8" FSZ:3 FFA:"font5"
|CB UID:brightness X:50 Y:50 W:90 BTH:5 HAH:8 HAW:8 VIS:0 STA:135 ENA:45 FGC:#000000 SFGC:#FFFF00 BGC:#CBCBCB
|IM UID:light_off X:50 Y:50 IP:"https://i.imgur.com/3VbsS0Z.png" VIS:1
|IM UID:light_on X:50 Y:50 IP:"https://i.imgur.com/gNdck9A.png" VIS:0
@light_off 1
@light_off VIS:0
@light_on VIS:1
@brightness VIS:1 VAL:50
@brightness VAL:45.8
@brightness VAL:16.7
@brightness VAL:5.4...VAL:... is missing.
-
RE: GUIO File System Access
This is not necessary. The file is saved in the local GUI-O folder on the phone. To read it, use the read file function with an external text editor for Android. For me, this is the best solution. The file can be in *.txt format, change the extension that can be opened directly by another application, for example *.txt, *.log, *.doc, ...
I use this:
https://play.google.com/store/apps/details?id=com.apptiva.logviewer -
RE: "PGF:1" parameter
@Bernard
In your Sub, the Return statement is used twice. Maybe that's the problem.
After first return statement must be:
Guio_ini_2:@hls 250 should be at the end of the Init procedure.
I checked the Init process without the Bascom code and it works OK.Maybe put |CH
|CH UID:ch0 X:50 Y:75 W:50 H:50 XLO:0 BSZ:120 VLP:2 BGC:#E53A4456 FGC:#EF33EAF5 SHE:1 FSZ:2.5 RAD:1 CHT:2 CHN:'MESURE HUM / TEMP / PRESSION' XTC:12 YTC:6 YMA:4 XMA:2 XHI:75 PZO:0 @hls 250
just before @hls 250
Otherwise, your GUI-O screen is very nice
-
RE: Need help parsing..
@Sato
If you use Bascom, this function (GetToken) is the best for parsing text.
[https://www.mcselec.com/index2.php?option=com_forum&Itemid=59&page=viewtopic&t=2543&highlight=gettoken -
RE: Where to find the commands
@sls 500 - Request to hide loading screen. This means that all widgets will appear on the screen at the same time.
If you have many widgets in the Init procedure without this command, you may see each one being installed separately, especially if a low baud rate is used.
At the end of the initialization process must be @hls 10 The number means how long in ms the animation is displayedThese commands are useful when reinitialization happend. If you don't clear GUI-O widgets, they are duplicated and doesn't display properly.
@cls - clear the screen
@clh - clear all hardware components
@clo - clear orientation - when you want to set the screen to the default orientation@gse - this is a general setting (specify the delimiter character COD:0 - space, COD:1-coma TSC:39 means " ' " delimiter on i.e. TXT
@guis - screen definitionI usually use this:
@sls 200 @cls @clh @gse COD:0 TSC:39 @guis BGC:#000000 ASR:0.4486 .... @hls 10
ASR:0.4486 is screen ratio for Samsung A13,
BGC:#0000000 means black background on home screen. -
RE: ECG Electro Cardio Gram
@HilmihanEkim2208
Hello.
For easier communication, next time please write in English.This is done with Bascom IDE and not Arduino. The source code is in the attachment.
'------------------------------------------------------------------------------ ' ECG Electro Cardio Gram ' 2021-07-01 (c)gammda ' Ver-1 ' CardioGraph ' Use Arduino UNO analog input A1 (pinc.1) and AD8232 modul ' .-----------------------. ' |ATMEGA328 | ' |Clock 11.059200MHz | ' |Baud:19200 | ' '-----------------------' ' 1.Install GUI-O application on smartphone ' www.gui-o.com or https://play.google.com/store/apps/details?id=com.guio.guioapp ' 2.Start GUI-O and make Bluetooth connection with arduino board ' 3.Press on start GUI-O button '------------------------------------------------------------------------------ $regfile = "m328pbdef.dat" $crystal = 11059200 '$baud = 9600 'default baudrate for Bluetooth HC06 $baud = 19200 'NOTE! For proper connection, it is necessary to set 19200 on the bluetooth module HC06. 'For first test you can use default baudrate 9600 Config Serialin = Buffered , Size = 120 Const Timer1reload = 43200 Config Timer1 = Timer , Prescale = 256 Load Timer1 , Timer1reload On Ovf1 Timer1_isr Enable Timer1 Start Timer1 Enable Interrupts '-ADC-------------------------------------------------------------------------- Dim Channel As Byte 'A/D conversion Channel = 1 Config Adc = Single , Prescaler = Auto , Reference = Avcc Start Adc Enable Interrupts '------------------------------------------------------------------------------ $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 '------------------------------------------------------------------------------ Dim Cardio As Integer Dim Pulse As Byte Dim Pulsex As Byte Pulsex = 60 Dim Timx As Byte Dim Timy As Byte Dim Pul1 As Byte Dim Soun_d As Bit Soun_d = 0 Dim Flags As Bit Flags = 0 Dim Data_key As Byte Dim Znak As String * 15 Dim Rdata As String * 100 Dim Init As String * 4 Gosub Guio_ini 'start initalization procedure on GUI-O - write objects on screen of smart phone '------------------------------------------------------------------------------ Main: Do If Ischarwaiting() = 1 Then Gosub Read_data End If Cardio = Getadc(channel) 'read walue of AD If Cardio > 740 Then 'sound if amplitude je more than 740 If Soun_d = 1 Then Print "@ton1 EDUR:500" 'sound appear on smart phone End If Pul1 = Pul1 + 1 'calculate pulse If Timy = 4 Then Pulse = Pul1 * 10 Pul1 = 0 Timy = 0 End If End If Print "@ch1 PLI:" ; Chr(34) ; "pl1" ; Chr(34) ; " YP:" ; Chr(34) ; Cardio ; Chr(34) ' write graph data (AD data) ECG to GUI-O If Timx > 1 Then Print "@ch0 PLI:" ; Chr(34) ; "pl0" ; Chr(34) ; " PLC:" ; Chr(34) ; "#000000" ; Chr(34) ; " YP:" ; Chr(34) ; Pulse ; Chr(34) ; " XP:" ; Chr(34) ; "0" ; Chr(34) 'Write graph pulse to GUI-O Print "@lbpulse TXT:" ; Chr(34) ; Pulse ; Chr(34) 'write numeric value on GUI-O Timx = 0 End If Loop End 'End of main cycle '------------------------------------------------------------------------------ Read_data: Reset Watchdog Data_key = Inkey() If Data_key = "@" Then Input Rdata Noecho Sep = &H20 Pozicija = 1 Znak = Gettoken(rdata , Sep , Pozicija) If Znak = "btsound" Then Toggle Soun_d If Soun_d = 1 Then Print "@btsound BTH:0.25" 'If sound is ON button outline appear Else Print "@btsound BTH:0" 'If sound is OFF button outline disappear End If End If Init = Mid(rdata , 1 , 4) If Init = "init" Then 'reading "@init" from GUI-O Gosub Guio_ini End If Rdata = "" Return '-Initialization procedure GUI-O Objects------------------------------------------------------- Guio_ini: Print "@sls 500" 'start writting objects Print "@cls" 'clear screen Print "@clh" 'clear HW components 'Print "@clo" 'clear orientation Print "@guis BGC:#000000 ASR:0.449671" 'bacground color X-Y ratio Print "|SORI UID:sori1 HID:sori ORI:2 SEN:0" Waitms 250 Print "|IM UID:imx X:15 Y:50 W:100 H:100 ROT:0 SHE:0 VIS:1 OPA:1 SCM:2 IP:" ; Chr(34) ; "ECG.jpg" ; Chr(34) 'GUI-O Image ECG.jpg copy to smartphone \Phone\Android\data\com.guio.guioapp\files\Pictures\ Print "|TON UID:ton1 HID:ton EDUR:1000 TONT:24" 'GUI-O define ton Print "|CH UID:ch0 X:65 Y:25 W:72 H:50 BTH:0.1 XTC:10 YTC:8 VIS:1 BSZ:5 DRA:0 BGC:#FFFFFF FGC:#900000 RAD:0 LT:0.15 XMA:5 YMA:8 SHVL:1 VLP:0 CHN:" ; Chr(34) ; "PULSE" ; Chr(34) ; " FFA:" ; Chr(34) ; "font6" ; Chr(34) ; " FSZ:4" Print "|CH UID:ch1 X:65 Y:75 W:72 H:50 BTH:0.1 XTC:10 YTC:8 VIS:1 BSZ:200 DRA:0 CHT:2 BMA:0.03 XLO:0 XHI:40000 BGC:#FFFFFF FGC:#900000 RAD:0 LT:0.15 XMA:5 YMA:8 SHVL:1 VLP:0 CHN:" ; Chr(34) ; "ELECTRO CARDIOGRAM" ; Chr(34) ; " FFA:" ; Chr(34) ; "font6" ; Chr(34) ; " FSZ:4" 'GUI-O graph for pulse and Cardio Print "|LB UID:lbpulse X:87 Y:35 ALP:1 ROT:0 SHE:1 FGC:#000000 FFA:" ; Chr(34) ; "font6" ; Chr(34) ; " FSZ:16 TXT:" ; Chr(34) ; "---" ; Chr(34) 'Label for number-pulse Print "|LB UID:lbpname X:85 Y:23 ALP:1 ROT:0 SHE:1 FGC:#000000 FFA:" ; Chr(34) ; "font8" ; Chr(34) ; " FSZ:4 TXT:" ; Chr(34) ; "PULSE BMP" ; Chr(34) 'Label for name Print "|LB UID:lbname X:2 Y:92 ALP:1 ROT:0 SHE:1 FGC:#FFFFFF FFA:" ; Chr(34) ; "font7" ; Chr(34) ; " FSZ:10 TXT:" ; Chr(34) ; "ECG" ; Chr(34) 'Label general name Print "|BT UID:btsound X:22 Y:92 W:10 H:10 ROT:0 RAD:1 SHVR:0.8 SHE:1 SHC:#404040 BGC:#808B96 SBGC:#808B96 FGC:#FFFFFF FSZ:6 BTH:0 FFA:" ; Chr(34) ; "font6" ; Chr(34) ; " TXT:" ; Chr(34) ; "Sound" ; Chr(34) ; " SVAL:" ; Chr(34) ; "Stop" ; Chr(34) 'Button for sound ON/OFF Print "@ch1 PLI:" ; Chr(34) ; "pl1" ; Chr(34) ; " PLC:" ; Chr(34) ; "#000000" ; Chr(34) ; " YP:" ; Chr(34) ; Cardio ; Chr(34) ; " XP:" ; Chr(34) ; "0" ; Chr(34) 'write data for cardio Print "@hls 250" 'end writting objects Return '-Timer_ISR-------------------------------------------------------------------------------- Timer1_isr: Timx = Timx + 1 Timy = Timy + 1 Return '------------------------------------------------------------------------------------------
-
RE: Access control example
Here is the new RFID access control screen.
https://i.imgur.com/8NE7gvC.png -
GUI-O FM PLL Radio reciever
I found this simple FM radio module.
https://www.amazon.ae/Digital-FM-Radio-Module-76-0MHz-108-0MHz/dp/B01N4AHISZIt offers control via UART.
Added Arduino NANO, Bluetooth module HC-06 and of course using GUI-O.
The result is here.Here is also Youtube video and schematic.