![]() |
Forum Index : Microcontroller and PC projects : VGAclocks
![]() ![]() |
|||||
Author | Message | ||||
dddns Senior Member ![]() Joined: 20/09/2024 Location: GermanyPosts: 257 |
Frame rate for one cycle in the drawing routine takes between fantastic 5ms to 40ms for a complete screen filled! The arrays could be floats. math shift doesn't support it but math scale could be used with scale = 1 I _think_ this is the fastest possible approach to do it. But I would be thankful if somebody would tell me! |
||||
dddns Senior Member ![]() Joined: 20/09/2024 Location: GermanyPosts: 257 |
Good morning! A picture of a new structure build on Area51 is going through the rainbow press today. It delivers the perfect reason why I'm doing that with this level of intensity. I'm 57, retired and grandfather. I'm a mechanic and not a salesman and I'm a system engineer and not a programmer. Now since I've retired I'm doing all the things I wanted to do for my whole life and its a joy to do that. So I dug up the old math and tried what I can do _without_ asking a single question but discovering this journey for myself in the first step. Saying all that please take a look at the picture.. time's up they said to me All the best! spontaneous thought: I'm laying out a design which looks like that :)) edit2: my only help was the fantastic user manual from Geoff. Many thanks!! Edited 2025-04-19 17:30 by dddns |
||||
lizby Guru ![]() Joined: 17/05/2016 Location: United StatesPosts: 3309 |
Keep up the good work. We need mechanics and system engineers here doing out-of-the-mainstream work, so please pursue your interests and show your work in MMBasic here as you have been doing. Thanks. PicoMite, Armmite F4, SensorKits, MMBasic Hardware, Games, etc. on fruitoftheshed |
||||
dddns Senior Member ![]() Joined: 20/09/2024 Location: GermanyPosts: 257 |
![]() Lclk_hand_corners_s1: Data 8 Lclk_hand_corners_xs11: Data -5, 5,-25, 0, -5, 35,5 Lclk_hand_corners_ys11: Data -5,70, 70,210, 90,100,-5 Lclk_hand_corners_m1: Data 6 Lclk_hand_corners_xm11: Data -25,-25, 0, 20, 25 Lclk_hand_corners_ym11: Data 0, 165,185,165, 0 Lclk_hand_corners_h1: Data 12 Lclk_hand_corners_xh11: Data -2, -2, -2,-10,-10,-2,-10, 20, -2, 20, 20, -2,-2 Lclk_hand_corners_yh11: Data -15,125,-15, 0,135,125,135,135,125,135, 0,-15,120 |
||||
dddns Senior Member ![]() Joined: 20/09/2024 Location: GermanyPosts: 257 |
Thats's my plan as the circle is closing. It started at 12 with an AIM65 which was bleeding edge and now PicoMite MMbasic which is state of the art. The Rockwell sparked everything.. Edited 2025-04-20 00:30 by dddns |
||||
dddns Senior Member ![]() Joined: 20/09/2024 Location: GermanyPosts: 257 |
Hello everyone! Everything is reworked! This has now almost all features I wanted for the first release. The database has tripled and there is variable party now :) The database contains three working configs cause I didn't have time for more. My heart and my soul went into this and I lived in front of my PC spending another 200 hours since my last post :) I hope you like it. If you don't have PSRAM then 640x480 with the RP2350 should work in mode 3 if you use a framebuffer. newfinal.bas.zip ![]() ![]() |
||||
lizby Guru ![]() Joined: 17/05/2016 Location: United StatesPosts: 3309 |
Pretty clocks, but don't you want "IX" instead of "IV" and "XII" instead if "VII"? PicoMite, Armmite F4, SensorKits, MMBasic Hardware, Games, etc. on fruitoftheshed |
||||
dddns Senior Member ![]() Joined: 20/09/2024 Location: GermanyPosts: 257 |
Its a string and its four o'clock in the morning..should have payed more attention :)) But this is only to demonstrate that you can have any printable character at any place.if you blank it then nothing will be printed. clocks look pretty but are... because there is not one special case but the whole thing is very individual. So its only restricted by your fantasy how its looks like. You can have four colors for all items and you can set any dimension parameter..give it a try :) Edited 2025-05-05 12:03 by dddns |
||||
dddns Senior Member ![]() Joined: 20/09/2024 Location: GermanyPosts: 257 |
Hello! after taking some hours of sleep and doing some more life near things, I want to finish this now untill I can call it version 1. As lizby stated right this all seems like pure playground but I think this is not. For me it was more to get in touch closer with Pythagoras and finally we became friends just within this project. I was looking for something sense making in the graphical vector universe for which PicoMite seems to be made for. I discovered all these wonderful math commands and with open eyes I could read the beautiful mind of the developer who intended just this I think. The project has grown and I made up my mind. I think this will be in the end a graphical creator/design GUI for vector graphic objects on which a complete object can be arranged and designed and then it dumps all variables and a runtime version of the drawing routine in a file, which is a complete basic program with an empty main loop. So it will create itself. That's way to go but should be not that hard to do. And coming back to lizby's statement, it could as well be easily a very small box with some hardware buttons which can be attached to an old 50" TV and it's a display for small stores, your private party or just sell it over ebay and there you go. But _this_ is not my interest even though I'm poor! Back to technique: one cycle through the routine which draws one complete object takes about 100ms for a 600 diameter object The memory consumption is so low that it runs on any PicoMite, with small modifications on a RP2040 with a LCD attached even though there are about 120 arrays dimension-ed. The only problem is the framebuffer which is needed to have a flicker free picture. Now RP2350 with PSRAM is the only way to have a framebuffer at 800x600 with 16 colours. But PSRAM is slow so it increases the cycletime up to 200ms in total 300ms. The numbers took almost a week for me to get them done correctly as they keep position and change text font and text scale according to the scale of the complete object. You can use your own font. Every number is a string and can be any printable charater. if you define it to "" then noting will be printed at that position. Auto positioning can be configured to a static one of your choise as well as font and its scale. Minute and second labels are polygons with 6 corners but symmetric on y on each position. You have an outer polygon with the setup dimensions. This will be scaled by keeping the aspect ratio and is drawn again in the same center. This is done with all polygons as well for the up to 16 corned clock hands. And/or you can draw circles at these positions. So you can have up to 4 different colours on those sub-objects. Every dimension including line width and every colour can be set in the database which is pretty structured now. The alignment of almost all sub-object take place on a radius centered in objects center. Every sub-object has an y-offset which can be set in database and this is the radius they are aligned on. The gauge start and end can be any 30 degree position on the clock. Every position again can have any labeling. This is done by choosing an existing one and add 100 to the object number. object 101 would be layout of clock 1 in terms of colour and dimension and be drawn in gauge style. The clock time string is used to set the parameters: "120:240:210" would be a scale from 10 to 2 o'clock and the gauge hand is the second and would have position 5min past the hour. Movement in scaled mode is seamless. Every sub-object can be disabled by setting its colour to 16. If a coulor is set to 16 no part of code gets touched except for the if statements. I took special care that it is done as efficiently as for me and my knowledge possible. and last but not least: every parameter stored in an array of cause can be altered by your code and effects immediately the next drawing e.g.some colour. Edited 2025-05-05 23:55 by dddns |
||||
lizby Guru ![]() Joined: 17/05/2016 Location: United StatesPosts: 3309 |
Congratulations. A lot of work went into this. Thanks very much. My apology for having niggled. Thanks for providing insight into your goals (and your accomplishment). PicoMite, Armmite F4, SensorKits, MMBasic Hardware, Games, etc. on fruitoftheshed |
||||
dddns Senior Member ![]() Joined: 20/09/2024 Location: GermanyPosts: 257 |
Thanks!. This is dedicated to the backshed and to us all, I hope you like it and find it useful. Your niggling caused this detailed explanation so thanks as well Lizby :) Edited 2025-05-06 00:57 by dddns |
||||
dddns Senior Member ![]() Joined: 20/09/2024 Location: GermanyPosts: 257 |
What do you think? A some minute work with a graphic from the internet. I love the look but some would call it pixel-graphic others would say digital art..you decide :) ![]() |
||||
dddns Senior Member ![]() Joined: 20/09/2024 Location: GermanyPosts: 257 |
Hello :) I didn't try before really whats possible, now Lizby triggerd me :)) Some snapshots I took yesterday with my mobile as testpics for a background. Adjusted one time with gimp scale and progressive and exported: ![]() if you are interested in the shots 800x600: testpics.zip |
||||
dddns Senior Member ![]() Joined: 20/09/2024 Location: GermanyPosts: 257 |
My plan was to finish this and then go further as I have so many ideas. I wanted to implement the scalable fonts shown on the page before and I have ideas parsing gcode or an svg and draw these backgrounds as vector graphics. But the brake was pushed today as my PGA2350 with PSRAM is not working correct and shows errors related to its design. I will have to buy now one the reference designs to continue. I'm not sure how I can realize so up to then, I will stop this development..sorry for that but I can't help it Edited 2025-05-08 00:00 by dddns |
||||
dddns Senior Member ![]() Joined: 20/09/2024 Location: GermanyPosts: 257 |
@bfwolf In Linux you don't really need a terminal. If you open e.g. gnome-terminal then this is fully VT-100 compatible terminal emulation already. This is what you need to feed it: Usage: ascii-xfr -s|-r [-dvn] [-l linedelay] [-c character delay] filename I have integrated it into geany: ![]() the script I call from geany: stty -F /dev/ttyACM0 115200 -parenb cs8 -cstopb echo "autosave" > /dev/ttyACM0 sleep 2 ascii-xfr -s $1 -l 25 > /dev/ttyACM0 sleep 2 printf "\x1a" > /dev/ttyACM0 I tried it and 25ms make the transfer completely error free, checked a hundred times now. I can Upload, run and ctrl-c now within the editor Edited 2025-05-08 08:22 by dddns |
||||
lizby Guru ![]() Joined: 17/05/2016 Location: United StatesPosts: 3309 |
Excellent. Congrats. PicoMite, Armmite F4, SensorKits, MMBasic Hardware, Games, etc. on fruitoftheshed |
||||
dddns Senior Member ![]() Joined: 20/09/2024 Location: GermanyPosts: 257 |
I'm very happy to be able to continue plus that this basic issue is now solved for me :) This could be of interest for the Windows users, even though I don't like it :)) Edited 2025-05-08 08:43 by dddns |
||||
![]() ![]() |
![]() |
![]() |
The Back Shed's forum code is written, and hosted, in Australia. | © JAQ Software 2025 |