Home
JAQForum Ver 24.01
Log In or Join  
Active Topics
Local Time 14:46 29 Nov 2024 Privacy Policy
Jump to

Notice. New forum software under development. It's going to miss a few functions and look a bit ugly for a while, but I'm working on it full time now as the old forum was too unstable. Couple days, all good. If you notice any issues, please contact me.

Forum Index : Microcontroller and PC projects : gui touch

     Page 1 of 2    
Author Message
stanleyella

Guru

Joined: 25/06/2022
Location: United Kingdom
Posts: 2135
Posted: 07:03pm 16 Mar 2023
Copy link to clipboard 
Print this post

Hi, sorry to bother you but trying gui area on ili9488 and errors.
The ili9488 touch is calibrated and the touch test works.
I get this error message using gui area 1,2,395,64,14
[17] GUI area 1,2,395,64,14'left button   x  y   w  h
Error : No memory allocated for GUI controls

I spent time reading the latest non vga manual but can't see allocating gui memory.
Also would "loop until pixel px%,py%,1 >0" 'test if next pixel is not black work?


triangle 2,312,66,305,66,319,rgb(yellow),rgb(blue)
gui area 1,2,395,64,14'left button
triangle 192,312,130,305,130,319,rgb(yellow),rgb(blue)
gui area 2,192,395,64,14'right button
triangle 471,2,479,66,464,66,rgb(yellow),rgb(blue)
gui area 3,464,2,14,64'up button
triangle 471,192,479,130,464,130,rgb(yellow),rgb(blue)
gui area 4,464,192,14,64'down button

dim px%=400,py%=int(rnd*200)+60,pdx%=-1,pdy%=0
dim cx%=60,cy%=int(rnd*200)+60,cdx%=-1,cdy%=0

do
 select case touch(ref)
   case 1'left button pressed
     if pdx%=0 then pdy%=0:pdx%=-1:end if
   case 2'right button pressed
     if pdx%=0 then pdy%=0:pdx%=1:end if
   case 3'up button pressed
     if pdy%=0 then pdx%=0:pdy%=-1:end if
   case 4'down button pressed
     if pdy%=0 then pdx%=0:pdy%=1:end if
 end select
 pause 500

 pixel px%,py%,rgb(yellow)'plot new pixel
 px%=px%+pdx%:py%=py%+pdy%
       
loop until pixel px%,py%,1 >0'test if next pixel is not black
 
matherp
Guru

Joined: 11/12/2012
Location: United Kingdom
Posts: 9139
Posted: 07:21pm 16 Mar 2023
Copy link to clipboard 
Print this post

Open the manual.

Use the find function to look for text "GUI". Keep Stepping down the file until you find the answer - took me about 10 seconds

Page 51
 
JohnS
Guru

Joined: 18/11/2011
Location: United Kingdom
Posts: 3816
Posted: 07:32pm 16 Mar 2023
Copy link to clipboard 
Print this post

  stanleyella said  Also would "loop until pixel px%,py%,1 >0" 'test if next pixel is not black work?

You're asking about a pixel, so using a FUNCTION, whose return value you want. It would be wise, and may well be mandatory, to use some parentheses.

More thinking, less bashing out code :)

John
Edited 2023-03-17 05:32 by JohnS
 
stanleyella

Guru

Joined: 25/06/2022
Location: United Kingdom
Posts: 2135
Posted: 07:43pm 16 Mar 2023
Copy link to clipboard 
Print this post

gui area 1,2,395,64,14
why the mmedit error?

pixel x,y,colour simple'' to plot a pixel
pixel x,y,page new.. to read a screen pixel
 
panky

Guru

Joined: 02/10/2012
Location: Australia
Posts: 1101
Posted: 09:56pm 16 Mar 2023
Copy link to clipboard 
Print this post


... almost all of the Maximites, the MicromMites, the MM Extremes, the ArmMites, the PicoMite and loving it!
 
JohnS
Guru

Joined: 18/11/2011
Location: United Kingdom
Posts: 3816
Posted: 11:42pm 16 Mar 2023
Copy link to clipboard 
Print this post

  stanleyella said  pixel x,y,page new.. to read a screen pixel

Which page of the manual is that from?

John
Edited 2023-03-17 09:43 by JohnS
 
stanleyella

Guru

Joined: 25/06/2022
Location: United Kingdom
Posts: 2135
Posted: 02:18am 17 Mar 2023
Copy link to clipboard 
Print this post

option gui controls 4 in teraterm seems to have sorted gui controls but says maximum is 3 not 4, so set option gui controls 10.
pixel (x,y) >0 worked. getting there. Now computer opponent... done it before
 
Bowden_P
Senior Member

Joined: 20/03/2019
Location: United Kingdom
Posts: 162
Posted: 01:03pm 17 Mar 2023
Copy link to clipboard 
Print this post

Hi,
I was interested to see how/whether Picomite's "GUI AREA" coped with a co-ordinate off-screen in Stanleyella's:-
gui area 1,2,395,,64,14

Admittedly I have a Waveshare ILI9488W screen - 480 x 320 pixels, not stanleyella's exact model, but with :-
> option gui controls 1
> gui area 1,2,395,64,14
Error : 1 is invalid (valid is 1 to 0)

and :-
> option gui controls 2
> gui area 1,2,395,64,14
Error : 395 is invalid (valid is 0 to 320)

Error messaging seems a bit unhappy with the single control !

With best regards, Paul.

p.s. I have PicoMite MMBasic Version 5.07.07b27
Nothing so constant as change.
 
stanleyella

Guru

Joined: 25/06/2022
Location: United Kingdom
Posts: 2135
Posted: 04:05pm 17 Mar 2023
Copy link to clipboard 
Print this post

Hi Pual. the same error , it was a typo.
touch seems to like fingernails more than finger prints,
touch supposed to be NOT like a phone touch screen.
my first try on ili9488. maybe ili9341 better, will try

triangle 2,312,66,305,66,319,rgb(yellow),rgb(blue)
gui area 1,1,295,64,16
triangle 192,312,130,305,130,319,rgb(yellow),rgb(blue)
gui area 2,128,295,64,16
triangle 471,2,479,66,464,66,rgb(yellow),rgb(blue)
gui area 3,464,2,16,64
triangle 471,192,479,130,464,130,rgb(yellow),rgb(blue)
gui area 4,464,130,16,64
 
Mixtel90

Guru

Joined: 05/10/2019
Location: United Kingdom
Posts: 6814
Posted: 05:04pm 17 Mar 2023
Copy link to clipboard 
Print this post

Touch on all the LCD displays supported by MMBasic is resistive, not capacitive. That's why you find it works better with fingernals than a finger. The bast way to use these displays is with a stylus (they are often supplied with one).

When you want to test an area of the screen it's better to test for the X and Y edges of that rather than for a point. The GUI commands take this into account.
Mick

Zilog Inside! nascom.info for Nascom & Gemini
Preliminary MMBasic docs & my PCB designs
 
stanleyella

Guru

Joined: 25/06/2022
Location: United Kingdom
Posts: 2135
Posted: 05:36pm 17 Mar 2023
Copy link to clipboard 
Print this post

Thanks all for helping me. I did read the manual but didn't get gui controls relevance
my simple tron




'tron ili9488
OPTION EXPLICIT
OPTION DEFAULT NONE
cls
box 0,0,463,303,1,rgb(white),rgb(black)
dim ts%
ts%=int(rnd*200)+60
triangle 0,ts%,12,ts%+8,0,ts%+16,rgb(White)
ts%=int(rnd*200)+60
triangle 461,ts%,449,ts%+8,461,ts%+16,rgb(White)
ts%=int(rnd*360)+60
triangle ts%,0,ts%+8,10,ts%+16,0,rgb(White)
ts%=int(rnd*360)+60
triangle ts%,303,ts%+8,293,ts%+16,303,rgb(White)

triangle 2,312,66,305,66,319,rgb(yellow),rgb(blue)
gui area 1,1,295,64,16
triangle 192,312,130,305,130,319,rgb(yellow),rgb(blue)
gui area 2,128,295,64,16
triangle 471,2,479,66,464,66,rgb(yellow),rgb(blue)
gui area 3,464,2,16,64
triangle 471,192,479,130,464,130,rgb(yellow),rgb(blue)
gui area 4,464,130,16,64
dim px%=400,py%=int(rnd*200)+60,pdx%=-1,pdy%=0
dim cx%=60,cy%=int(rnd*200)+60,cdx%=1,cdy%=0

do
 if pixel (px%,py%) >0 then end
 pixel px%,py%,rgb(yellow)
 px%=px%+pdx%:py%=py%+pdy%
 
 if TOUCH(REF) >0 then 'check user button pressed
   select case touch(ref)
     case 1 'left
       if pdx%=0 then pdy%=0:pdx%=-1
     case 2 'right
       if pdx%=0 then pdy%=0:pdx%=1
     case 3 'up
       if pdy%=0 then pdx%=0:pdy%=-1
     case 4 'down
       if pdy%=0 then pdx%=0:pdy%=1
   end select
 end if

 'computer move
 if cdx%=-1 then
   if pixel (cx%-1,cy%) >0 then
     cdx%=0
     if py%>cy% then
       cdy%=1
     else
       cdy%=-1
     end if
   end if
 else if cdx%=1 then
   if pixel (cx%+1,cy%) >0 then
     cdx%=0
     if py%>cy% then
       cdy%=1
     else
       cdy%=-1
     end if  
   end if
 else if cdy%=-1 then
   if pixel (cx%,cy%-1) >0 then
     cdy%=0
     if px%>cx% then
       cdx%=1
     else
       cdx%=-1
     end if  
   end if
 else if cdy%=1 then
   if pixel (cx%,cy%+1) >0 then
     cdy%=0
     if px%>cx% then
       cdx%=1
     else
       cdx%=-1
     end if  
   end if
 end if
 cx%=cx%+cdx%:cy%=cy%+cdy%
 if pixel (cx%,cy%) >0 then end
 pixel cx%,cy%,rgb(cyan)
 
 pause 50      
loop
 
vegipete

Guru

Joined: 29/01/2013
Location: Canada
Posts: 1110
Posted: 06:22pm 17 Mar 2023
Copy link to clipboard 
Print this post

Looks fun...

Because I can't help compressing code:
  ' computer move
  if cdx% then   ' moving in x direction
    if pixel(cx%+cdx%) then  ' move blocked
      cdx% = 0
      cdy% = -1 + 2 * (py% > cy%)  ' turn toward player
    endif
  else           ' moving in y direction
    if pixel(cy%+cdy%) then  ' move blocked
      cdy% = 0
      cdx% = -1 + 2 * (px% > cx%)  ' turn toward player
    endif
  endif
  cx%=cx%+cdx%:cy%=cy%+cdy%
  if pixel(cx%,cy%) > 0 then end   ' computer can't move!
  pixel cx%,cy%,rgb(cyan)

Visit Vegipete's *Mite Library for cool programs.
 
stanleyella

Guru

Joined: 25/06/2022
Location: United Kingdom
Posts: 2135
Posted: 09:06pm 17 Mar 2023
Copy link to clipboard 
Print this post

working on another algo
I thought pixel needed x,y
"if pixel(cx%+cdx%) then ' move blocked" ?
pixel plotting page 111
pixel reading page 135
 
vegipete

Guru

Joined: 29/01/2013
Location: Canada
Posts: 1110
Posted: 09:21pm 17 Mar 2023
Copy link to clipboard 
Print this post

You are right. I was sloppy. Should be:
if pixel(cx%+cdx%,cy%) then  ' move blocked
and
if pixel(cx%,cy%+cdy%) then  ' move blocked

Visit Vegipete's *Mite Library for cool programs.
 
paceman
Guru

Joined: 07/10/2011
Location: Australia
Posts: 1329
Posted: 11:20am 18 Mar 2023
Copy link to clipboard 
Print this post

Just tried this using version b25 but it doesn't like GUI CONTROLS 4, it needs GUI CONTROLS 5 for some reason.

> run
[17] GUI area 1,1,295,64,16
Error : No memory allocated for GUI controls
> option gui controls 4
> run
[23] GUI area 4,464,130,16,64
Error : 4 is invalid (valid is 1 to 3)
> option list
PicoMite MMBasic Version 5.07.07b25
OPTION SYSTEM SPI GP18,GP19,GP20
OPTION SYSTEM I2C GP0,GP1
OPTION COLOURCODE ON
OPTION DISPLAY 40, 100
OPTION LCDPANEL ILI9488, RLANDSCAPE,GP26,GP27,GP28
OPTION GUI CONTROLS 4
OPTION TOUCH GP22,GP21,GP5
GUI CALIBRATE 0, 254, 139, 1289, 841
OPTION SDCARD GP3
> option gui controls 5
> RUN
> RUN  ' running fine from here
 
Mixtel90

Guru

Joined: 05/10/2019
Location: United Kingdom
Posts: 6814
Posted: 11:47am 18 Mar 2023
Copy link to clipboard 
Print this post

As the amount of RAM used for GUI CONTROLS is rounded up to 2048 bytes anyway there's no point in specifying such low numbers. One control will require 2048 bytes as will 39 controls (39*52=2028 bytes). 40 controls will require 4096 bytes of RAM.
Mick

Zilog Inside! nascom.info for Nascom & Gemini
Preliminary MMBasic docs & my PCB designs
 
stanleyella

Guru

Joined: 25/06/2022
Location: United Kingdom
Posts: 2135
Posted: 02:57pm 18 Mar 2023
Copy link to clipboard 
Print this post

@paceman That's the error I got. I thought the gui controls started at zero but don't.
Mick- thanks for clearing that up.
It's in the manual but option gui controls isn't really mentioned and the number of gui controls could be better explained imho. pixel page 111 and 135,why not same page?
This is my first touch test and seems I'm not the only one who found it not as easy as it looks. I didn't want to ask the forum but I was getting errors I couldn't resolve.

I can see why mechanical buttons are used and has anyone tried using resistors and buttons and one a-d input pin? Each button giving a different voltage when pressed.
cheers, stan.
Edited 2023-03-19 01:02 by stanleyella
 
Mixtel90

Guru

Joined: 05/10/2019
Location: United Kingdom
Posts: 6814
Posted: 03:02pm 18 Mar 2023
Copy link to clipboard 
Print this post

In most cases I've had no problems with the Gui controls. They can get a bit awkward if you start to try to do odd things, but most of the time I've found them to be very good indeed. You do need to have a good play to get the most out of them. Above all, remember that when you use them everything is controlled by the user, not by your program. You mustn't go doing things that the user hasn't requested or you can get into an awful knot.
Edited 2023-03-19 01:05 by Mixtel90
Mick

Zilog Inside! nascom.info for Nascom & Gemini
Preliminary MMBasic docs & my PCB designs
 
stanleyella

Guru

Joined: 25/06/2022
Location: United Kingdom
Posts: 2135
Posted: 06:20pm 18 Mar 2023
Copy link to clipboard 
Print this post

Hi Mick. I noticed cls after gui area disables them,  probably says so somewhere.
As you can't re dim or define gui area only once, I stuck it all at the start so I could restart the game in code and found moving cls after gui area disabled it. How to restart the game and use cls?
dim px%,py%,pdx%,pdy%
dim cx%,cy%,cdx%,cdy%
dim ts%,tr%
cls 'works here
gui area 1,1,295,64,16 'left button
gui area 2,128,295,64,16 'right button
gui area 3,464,2,16,64 'up button
gui area 4,464,130,16,64 'down button
'start
'cls 'disables gui area here
 
Mixtel90

Guru

Joined: 05/10/2019
Location: United Kingdom
Posts: 6814
Posted: 06:35pm 18 Mar 2023
Copy link to clipboard 
Print this post

Do you need to CLS? Can you use GUI HIDE to hide all GUI controls and GUI SHOW to bring them back?

You can also use GUI REDRAW if the screen has become corrupted.

Then GUI SETUP n can set up controls on page n and you can swap them any time with GUI PAGE n.
Mick

Zilog Inside! nascom.info for Nascom & Gemini
Preliminary MMBasic docs & my PCB designs
 
     Page 1 of 2    
Print this page
© JAQ Software 2024