Home
JAQForum Ver 24.01
Log In or Join  
Active Topics
Local Time 10:23 23 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 : BIG NUMBERS

Author Message
Gizmo

Admin Group

Joined: 05/06/2004
Location: Australia
Posts: 5078
Posted: 11:02am 24 Jun 2011
Copy link to clipboard 
Print this post

Here's a little routine I wrote this afternoon to display numbers on the screen, 7 segment format, in any size and aspect. I'm writting a little program to display windmill/solar data, and wanted numbers bigger than the standard font size. The future font commands Geoff is adding to the Maximite might make this redundant.




10: CLS
20: FOR i=1 TO 1000
30: Num=i : h=150 : w=40 : x=250 : y=10 : r=5 : s=10
40: gosub 1000
50: h=6 : w=3 : x=200 : y=200 : r=1 : s=2
60: gosub 1000
70: h=40 : w=30 : x=200 : y=250 : r=3 : s=5
80: gosub 1000
90: pause 100
110: next
120: end


1000: 'h = Numeric Height in pixels
1010: 'w = Numeric Width in pixels
1020: 'x = X axis start position, right justified.
1030: 'y = Y axis position, top edge of number
1040: 'r = Decimal point radius in pixels.
1050: 's = Spacing between numbers in pixels
1060: Numeric$=STR$(Num)
1070: StringLength=LEN(Numeric$)
1080: FOR StringLoc=StringLength TO 1 STEP -1
1090: line(x,y)-(x+w,y+h),0,"BF"
1100: n$=MID$(Numeric$,StringLoc,1)
1110: IF n$="0" THEN LINE(x,y)-(x+w,y+h),1,"B"
1120: IF n$="1" THEN LINE(x+w,y)-(x+w,y+h),1
1130: IF n$="2" THEN LINE(x,y)-(x+w,y),1 : LINE(x+w,y)-(x+w,y+(h/2)),1 : LINE(x+w,y+(h/2))-(x,y+(h/2)),1 : LINE(x,y+(h/2))-(x,y+H),1 : LINE(x,y+h)-(x+w,y+h),1
1140: IF n$="3" THEN LINE(x,y)-(x+w,y),1 : LINE(x+w,y)-(x+w,y+h),1 : LINE(x+w,y+h)-(x,y+h),1 : LINE(x,y+(h/2))-(x+w,y+(h/2)),1
1150: IF n$="4" THEN LINE(x,y)-(x,y+(h/2)),1 : LINE(x,y+(h/2))-(x+w,y+(h/2)),1 : LINE(x+w,y)-(x+w,y+H),1
1160: IF n$="5" THEN LINE(x,y)-(x+w,y),1 : LINE(x,y)-(x,y+(h/2)),1 : LINE(x,y+(h/2))-(x+w,y+(h/2)),1 : LINE(x+w,y+(h/2))-(x+w,y+h),1 : LINE(x,y+h)-(x+w,y+h),1
1170: IF n$="6" THEN LINE(x+w,y)-(x,y),1 : LINE(x,y)-(x,y+(h/2)),1 : LINE(x,y+(h/2))-(x+w,y+h),1,"B"
1180: IF n$="7" THEN LINE(x,y)-(x+w,y),1 : LINE(x+w,y)-(x+w,y+h),1
1190: IF n$="8" THEN LINE(x,y)-(x+w,y+h),1,"B" : LINE(x,y+(h/2))-(x+w,y+(h/2)),1
1200: IF n$="9" THEN LINE(x,y+h)-(x+w,y+h),1 : LINE(x+w,y+h)-(x+w,y+(h/2)),1 : LINE(x,y)-(x+w,y+(h/2)),1,"B"
1210: IF n$="." THEN circle(x+(W/2),y+(h/2)),r
1220: x=x-w-S
1230: NEXT
1240: return



You set the numbers width, height, spacing, etc. The x position is the left edge of the right most number, and the routine will right justify the number. The top few lines are just to increment the number for demo purposes.

Glenn
The best time to plant a tree was twenty years ago, the second best time is right now.
JAQ
 
VK6MRG

Guru

Joined: 08/06/2011
Location: Australia
Posts: 347
Posted: 02:35pm 25 Jun 2011
Copy link to clipboard 
Print this post

Can't wait to give it a try. But as i'm on night shift i'll have too!
I may get another Maximite to play with while i'm at work More time to play and less time to miss out on the fun!
Its easier to ask forgiveness than to seek permission!

............VK6MRG.............VK3MGR............
 
jman

Guru

Joined: 12/06/2011
Location: New Zealand
Posts: 711
Posted: 10:41pm 24 Jul 2011
Copy link to clipboard 
Print this post

Hi Glenn

This works really well thanks
Seems to be 1 small bug if the number to be displayed
changes from 3 to 2 digits or 2 to 1 digit the left most digit remains
on the display.
Ie if we display 99 then 100 then roll back 99 the display will
be 199

Any thoughts or have I done something dumb

Regards

John
 
jman

Guru

Joined: 12/06/2011
Location: New Zealand
Posts: 711
Posted: 05:20am 25 Jul 2011
Copy link to clipboard 
Print this post

Hi
Found a way around it. If we format the number to the max required length
the blanks are added as per below

numeric$ = format$(AFR,"%5.2f")

Now all is good

John

Picture of the work in rogress



 
Gizmo

Admin Group

Joined: 05/06/2004
Location: Australia
Posts: 5078
Posted: 08:36am 25 Jul 2011
Copy link to clipboard 
Print this post

Hi John

Glad to see you worked it out.

This is what I've been using it for.



Glenn

The best time to plant a tree was twenty years ago, the second best time is right now.
JAQ
 
Print this page


To reply to this topic, you need to log in.

© JAQ Software 2024