def dual(use_spi=False, soft=True): ssd0 = setup(False, soft) # I2C display ssd1 = setup(True, False) # SPI instance Writer.set_textpos(ssd0, 0, 0) # In case previous tests have altered it wri0 = Writer(ssd0, small, verbose=False) wri0.set_clip(False, False, False) Writer.set_textpos(ssd1, 0, 0) # In case previous tests have altered it wri1 = Writer(ssd1, small, verbose=False) wri1.set_clip(False, False, False) nfields = [] dy = small.height() + 6 col = 15 for n, wri in enumerate((wri0, wri1)): nfields.append([]) y = 2 for txt in ('X:', 'Y:', 'Z:'): Label(wri, y, 0, txt) nfields[n].append(Label(wri, y, col, wri.stringlen('99.99'), True)) y += dy for _ in range(10): for n, wri in enumerate((wri0, wri1)): for field in nfields[n]: value = int.from_bytes(uos.urandom(3), 'little') / 167772 field.value('{:5.2f}'.format(value)) wri.device.show() utime.sleep(1) for wri in (wri0, wri1): Label(wri, 0, 64, ' DONE ', True) wri.device.show()
def dual(use_spi=False, soft=True): ssd0 = setup(False, soft) # I2C display ssd1 = setup(True, False) # SPI instance Writer.set_textpos(ssd0, 0, 0) # In case previous tests have altered it wri0 = Writer(ssd0, small, verbose=False) wri0.set_clip(False, False, False) Writer.set_textpos(ssd1, 0, 0) # In case previous tests have altered it wri1 = Writer(ssd1, small, verbose=False) wri1.set_clip(False, False, False) nfields = [] dy = small.height() + 6 col = 15 for n, wri in enumerate((wri0, wri1)): nfields.append([]) y = 2 for txt in ('X:', 'Y:', 'Z:'): Label(wri, y, 0, txt) nfields[n].append(Label(wri, y, col, wri.stringlen('99.99'), True)) y += dy for _ in range(10): for n, wri in enumerate((wri0, wri1)): for field in nfields[n]: value = int.from_bytes(uos.urandom(3),'little')/167772 field.value('{:5.2f}'.format(value)) wri.device.show() utime.sleep(1) for wri in (wri0, wri1): Label(wri, 0, 64, ' DONE ', True) wri.device.show()
def multi_fields(use_spi=False, soft=True): ssd = setup(use_spi, soft) # Create a display instance Writer.set_textpos(ssd, 0, 0) # In case previous tests have altered it wri = Writer(ssd, small, verbose=False) wri.set_clip(False, False, False) nfields = [] dy = small.height() + 6 y = 2 col = 15 width = wri.stringlen('99.99') for txt in ('X:', 'Y:', 'Z:'): Label(wri, y, 0, txt) nfields.append(Label(wri, y, col, width, bdcolor=None)) # Draw border y += dy random = xorshift64star(2**24 - 1) for _ in range(10): for field in nfields: value = random() / 167772 field.value('{:5.2f}'.format(value)) refresh(ssd) utime.sleep(1) Label(wri, 0, 64, ' DONE ', True) refresh(ssd)
def wrap(use_spi=False, soft=True): ssd = setup(use_spi, soft) # Create a display instance Writer.set_textpos(ssd, 0, 0) # In case previous tests have altered it wri = Writer(ssd, freesans20, verbose=False) wri.set_clip(False, False, True) # Word wrap wri.printstring('the quick brown fox jumps over') ssd.show()
def tabs(use_spi=False, soft=True): ssd = setup(use_spi, soft) # Create a display instance Writer.set_textpos(ssd, 0, 0) # In case previous tests have altered it wri = Writer(ssd, fixed, verbose=False) wri.set_clip(False, False, False) # Char wrap wri.printstring('1\t2\n') wri.printstring('111\t22\n') wri.printstring('1111\t1') ssd.show()
def fonts(use_spi=False, soft=True): ssd = setup(use_spi, soft) # Create a display instance Writer.set_textpos(ssd, 0, 0) # In case previous tests have altered it wri = Writer(ssd, freesans20, verbose=False) wri.set_clip(False, False, False) # Char wrap wri_f = Writer(ssd, small, verbose=False) wri_f.set_clip(False, False, False) # Char wrap wri_f.printstring('Sunday\n') wri.printstring('12 Aug 2018\n') wri.printstring('10.30am') ssd.show()
def usd_tabs(use_spi=False, soft=True): ssd = setup(use_spi, soft) # Create a display instance CWriter.invert_display(ssd) CWriter.set_textpos(ssd, 0, 0) wri = CWriter(ssd, fixed, verbose=False) wri.set_clip(False, False, False) # Char wrap wri.printstring('1\t2\n') wri.printstring('111\t22\n') wri.printstring('1111\t1') ssd.show() CWriter.invert_display(ssd, False) # For subsequent tests
def usd(use_spi=False, soft=True): ssd = setup(use_spi, soft) # Create a display instance # Only CWriter can do usd CWriter.invert_display(ssd) CWriter.set_textpos(ssd, 0, 0) wri = CWriter(ssd, freesans20, verbose=False) wri.set_clip(False, False, False) # Char wrap wri.printstring('Sunday\n') wri.printstring('12 Aug 2018\n') wri.printstring('10.30am') ssd.show() CWriter.invert_display(ssd, False) # For subsequent tests
def test(use_spi=False): ssd = setup(use_spi) # Create a display instance rhs = WIDTH -1 ssd.line(rhs - 20, 0, rhs, 20, 1) square_side = 10 ssd.fill_rect(rhs - square_side, 0, square_side, square_side, 1) wri = Writer(ssd, freesans20) Writer.set_textpos(ssd, 0, 0) # verbose = False to suppress console output wri.printstring('Sunday\n') wri.printstring('12 Aug 2018\n') wri.printstring('10.30am') ssd.show()
def inverse(use_spi=False, soft=True): ssd = setup(use_spi, soft) # Create a display instance rhs = WIDTH - 1 ssd.line(rhs - 20, 0, rhs, 20, 1) square_side = 10 ssd.fill_rect(rhs - square_side, 0, square_side, square_side, 1) Writer.set_textpos(ssd, 0, 0) # In case previous tests have altered it wri = Writer(ssd, freesans20, verbose=False) wri.set_clip(False, False, False) # Char wrap wri.printstring('Sunday\n') wri.printstring('12 Aug 2018\n') wri.printstring('10.30am', True) # Inverse text ssd.show()
def inverse(use_spi=False, soft=True): ssd = setup(use_spi, soft) # Create a display instance rhs = WIDTH -1 ssd.line(rhs - 20, 0, rhs, 20, 1) square_side = 10 ssd.fill_rect(rhs - square_side, 0, square_side, square_side, 1) Writer.set_textpos(ssd, 0, 0) # In case previous tests have altered it wri = Writer(ssd, freesans20, verbose=False) wri.set_clip(False, False, False) # Char wrap wri.printstring('Sunday\n') wri.printstring('12 Aug 2018\n') wri.printstring('10.30am', True) # Inverse text ssd.show()
def meter(use_spi=False, soft=True): ssd = setup(use_spi, soft) wri = Writer(ssd, arial10, verbose=False) ssd.fill(0) refresh(ssd) m0 = Meter(wri, 5, 2, height = 50, divisions = 4, legends=('0.0', '0.5', '1.0')) m1 = Meter(wri, 5, 44, height = 50, divisions = 4, legends=('-1', '0', '+1')) m2 = Meter(wri, 5, 86, height = 50, divisions = 4, legends=('-1', '0', '+1')) steps = 10 for n in range(steps + 1): m0.value(int.from_bytes(uos.urandom(3),'little')/16777216) m1.value(n/steps) m2.value(1 - n/steps) refresh(ssd) utime.sleep(1)
def fields(use_spi=False, soft=True): ssd = setup(use_spi, soft) # Create a display instance Writer.set_textpos(ssd, 0, 0) # In case previous tests have altered it wri = Writer(ssd, fixed, verbose=False) wri.set_clip(False, False, False) textfield = Label(wri, 0, 2, wri.stringlen('longer')) numfield = Label(wri, 25, 2, wri.stringlen('99.99'), bdcolor=None) countfield = Label(wri, 0, 90, wri.stringlen('1')) n = 1 for s in ('short', 'longer', '1', ''): textfield.value(s) numfield.value('{:5.2f}'.format(int.from_bytes(uos.urandom(2),'little')/1000)) countfield.value('{:1d}'.format(n)) n += 1 refresh(ssd) utime.sleep(2) textfield.value('Done', True) refresh(ssd)
def usd_scroll(use_spi=False, soft=True): ssd = setup(use_spi, soft) # Create a display instance # Only CWriter can do usd CWriter.invert_display(ssd) CWriter.set_textpos(ssd, 0, 0) wri = CWriter(ssd, freesans20, verbose=False) wri.set_clip(False, False, False) # Char wrap wri.printstring('Sunday\n') wri.printstring('12 Aug 2018\n') wri.printstring('10.30am') for x in range(5): ssd.show() utime.sleep(2) wri.printstring('\nCount = {:2d}'.format(x)) ssd.show() utime.sleep(2) wri.printstring('\nDone.') ssd.show() CWriter.invert_display(ssd, False) # For subsequent tests
def scroll(use_spi=False, soft=True): ssd = setup(use_spi, soft) # Create a display instance rhs = WIDTH - 1 ssd.line(rhs - 20, 0, rhs, 20, 1) square_side = 10 ssd.fill_rect(rhs - square_side, 0, square_side, square_side, 1) Writer.set_textpos(ssd, 0, 0) # In case previous tests have altered it wri = Writer(ssd, freesans20, verbose=False) wri.set_clip(False, False, False) # Char wrap wri.printstring('Sunday\n') wri.printstring('12 Aug 2018\n') wri.printstring('10.30am') for x in range(5): ssd.show() utime.sleep(2) wri.printstring('\nCount = {:2d}'.format(x)) ssd.show() utime.sleep(2) wri.printstring('\nDone.') ssd.show()
def scroll(use_spi=False, soft=True): ssd = setup(use_spi, soft) # Create a display instance rhs = WIDTH -1 ssd.line(rhs - 20, 0, rhs, 20, 1) square_side = 10 ssd.fill_rect(rhs - square_side, 0, square_side, square_side, 1) Writer.set_textpos(ssd, 0, 0) # In case previous tests have altered it wri = Writer(ssd, freesans20, verbose=False) wri.set_clip(False, False, False) # Char wrap wri.printstring('Sunday\n') wri.printstring('12 Aug 2018\n') wri.printstring('10.30am') for x in range(5): ssd.show() utime.sleep(2) wri.printstring('\nCount = {:2d}'.format(x)) ssd.show() utime.sleep(2) wri.printstring('\nDone.') ssd.show()
def meter(use_spi=False, soft=True): ssd = setup(use_spi, soft) wri = Writer(ssd, arial10, verbose=False) ssd.fill(0) refresh(ssd) m0 = Meter(wri, 5, 2, height=50, divisions=4, legends=('0.0', '0.5', '1.0')) m1 = Meter(wri, 5, 44, height=50, divisions=4, legends=('-1', '0', '+1')) m2 = Meter(wri, 5, 86, height=50, divisions=4, legends=('-1', '0', '+1')) steps = 10 random = xorshift64star(2**24 - 1) for n in range(steps + 1): m0.value(random() / 16777216) m1.value(n / steps) m2.value(1 - n / steps) refresh(ssd) utime.sleep(1)
def rjust(use_spi=False, soft=True): ssd = setup(use_spi, soft) # Create a display instance Writer.set_textpos(ssd, 0, 0) # Previous tests may have altered it wri = Writer(ssd, freesans20, verbose=False) wri.set_clip(False, False, False) # Char wrap my_str = 'Sunday\n' l = wri.stringlen(my_str) Writer.set_textpos(ssd, col=WIDTH - l) wri.printstring(my_str) my_str = '12 Aug 2018\n' l = wri.stringlen(my_str) Writer.set_textpos(ssd, col=WIDTH - l) wri.printstring(my_str) my_str = '10.30am' l = wri.stringlen(my_str) Writer.set_textpos(ssd, col=WIDTH - l) wri.printstring(my_str) ssd.show()
def rjust(use_spi=False, soft=True): ssd = setup(use_spi, soft) # Create a display instance Writer.set_textpos(ssd, 0, 0) # Previous tests may have altered it wri = Writer(ssd, freesans20, verbose=False) wri.set_clip(False, False, False) # Char wrap my_str = 'Sunday\n' l = wri.stringlen(my_str) Writer.set_textpos(ssd, col = WIDTH - l) wri.printstring(my_str) my_str = '12 Aug 2018\n' l = wri.stringlen(my_str) Writer.set_textpos(ssd, col = WIDTH - l) wri.printstring(my_str) my_str = '10.30am' l = wri.stringlen(my_str) Writer.set_textpos(ssd, col = WIDTH - l) wri.printstring(my_str) ssd.show()
# Font import freesans20 import bme280 import time valt=False def callback(p): global valt valt=not valt p_fel=machine.Pin(12,machine.Pin.IN, machine.Pin.PULL_UP) p_fel.irq(trigger=machine.Pin.IRQ_RISING, handler=callback) i2c = machine.I2C(-1, machine.Pin(4), machine.Pin(5)) ssd = setup(False) # Create a display instance wri = Writer(ssd, freesans20) while(1): Writer.set_textpos(ssd, 0, 0) # verbose = False to suppress console output strr=bme280.BME280(i2c=i2c).values[0]+' \n' wri.printstring(strr) #if 0: if valt==False: strr=bme280.BME280(i2c=i2c).values[1]+' \n' else: altitude=((1-((float(bme280.BME280(i2c=i2c).values[1].split('h')[0])/1013.25)**0.190284))*145366.45)*0.3048 strr=str(altitude)+'m \n' wri.printstring(strr) strr=bme280.BME280(i2c=i2c).values[2]+' ' wri.printstring(strr) ssd.show()