Low space 7 segment like characters for the Explorer or Display.
Updated version
# 7 segment LED characters on Explorer
# 12 July 2021 - Tony Goodhew -Vers 2
import picoexplorer as display
import utime, random
from machine import Pin
width = display.get_width()
height = display.get_height()
display_buffer = bytearray(width * height * 2)
display.init(display_buffer)
def blk():
display.set_pen(0,0,0)
display.clear()
display.update()
# One row per digit/character
nums =[1,1,1,1,1,1,0, # 0
0,1,1,0,0,0,0, # 1
1,1,0,1,1,0,1, # 2
1,1,1,1,0,0,1, # 3
0,1,1,0,0,1,1, # 4
1,0,1,1,0,1,1, # 5
1,0,1,1,1,1,1, # 6
1,1,1,0,0,0,0, # 7
1,1,1,1,1,1,1, # 8
1,1,1,0,0,1,1, # 9
0,0,0,0,0,0,1, # -
0,0,0,0,0,0,0] # Blank
def seg7(xx,yy,n,f):
# (x, y, number, size-factor)
p = n * 7
display.set_pen(0,0,0) # Background colour
if (nums[p+0] == 0):display.rectangle(xx+1*f,yy+0*f,3*f,1*f)
if (nums[p+1] == 0):display.rectangle(xx+4*f,yy+1*f,1*f,3*f)
if (nums[p+2] == 0):display.rectangle(xx+4*f,yy+5*f,1*f,3*f)
if (nums[p+3] == 0):display.rectangle(xx+1*f,yy+8*f,3*f,1*f)
if (nums[p+4] == 0):display.rectangle(xx+0*f,yy+5*f,1*f,3*f)
if (nums[p+5] == 0):display.rectangle(xx+0*f,yy+1*f,1*f,3*f)
if (nums[p+6] == 0):display.rectangle(xx+1*f,yy+4*f,3*f,1*f)
display.set_pen(200,200,0) # LED colour
if (nums[p+0] == 1):display.rectangle(xx+1*f,yy+0*f,3*f,1*f)
if (nums[p+1] == 1):display.rectangle(xx+4*f,yy+1*f,1*f,3*f)
if (nums[p+2] == 1):display.rectangle(xx+4*f,yy+5*f,1*f,3*f)
if (nums[p+3] == 1):display.rectangle(xx+1*f,yy+8*f,3*f,1*f)
if (nums[p+4] == 1):display.rectangle(xx+0*f,yy+5*f,1*f,3*f)
if (nums[p+5] == 1):display.rectangle(xx+0*f,yy+1*f,1*f,3*f)
if (nums[p+6] == 1):display.rectangle(xx+1*f,yy+4*f,3*f,1*f)
display.update()
x0 = 6
y0 = 10
for f in range(1,14):
x1 = x0 + (14-f) *5
y1 = y0 + (14-f) *7
blk()
display.set_pen(255,100,0)
display.text("7-Seg LED", 35, 187, 200, 4)
display.set_pen(190,190,190)
display.text("Size: "+str(f), 80, 160, 200, 3)
display.set_pen(0,0,170)
display.text("Tony Goodhew", 23, 220, 240, 3)
display.update()
for c in range(10):
nn = random.randint(0,999)
hnds = int(nn/100)
nn = nn - (hnds * 100)
tens = int(nn / 10)
units = nn - (tens * 10)
seg7(x1,y1,hnds,f)
seg7(x1 + f*6,y1,tens,f)
seg7(x1 + f*12,y1,units,f)
display.update()
utime.sleep(0.3)