Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # WS 2.0" 320x240 Roll 2 dice
- # Tony Goodhew 3 May 2022, for thepihut.com
- from machine import Pin,SPI,PWM
- import framebuf
- import utime
- import math
- import random
- BL = 13
- DC = 8
- RST = 12
- MOSI = 11
- SCK = 10
- CS = 9
- class lcd_1inch3(framebuf.FrameBuffer): # For 320x240 display
- def __init__(self):
- self.width = 320
- self.height = 240
- self.cs = Pin(CS,Pin.OUT)
- self.rst = Pin(RST,Pin.OUT)
- self.cs(1)
- self.spi = SPI(1)
- self.spi = SPI(1,1000_000)
- self.spi = SPI(1,100000_000,polarity=0, phase=0,sck=Pin(SCK),mosi=Pin(MOSI),miso=None)
- self.dc = Pin(DC,Pin.OUT)
- self.dc(1)
- self.buffer = bytearray(self.height * self.width * 2)
- super().__init__(self.buffer, self.width, self.height, framebuf.RGB565)
- self.init_display()
- self.RED = 0x07E0
- self.GREEN = 0x001f
- self.BLUE = 0xf800
- self.WHITE = 0xffff
- self.BALCK = 0x0000
- def write_cmd(self, cmd):
- self.cs(1)
- self.dc(0)
- self.cs(0)
- self.spi.write(bytearray([cmd]))
- self.cs(1)
- def write_data(self, buf):
- self.cs(1)
- self.dc(1)
- self.cs(0)
- self.spi.write(bytearray([buf]))
- self.cs(1)
- def init_display(self):
- """Initialize display"""
- self.rst(1)
- self.rst(0)
- self.rst(1)
- self.write_cmd(0x36)
- self.write_data(0x70)
- self.write_cmd(0x3A)
- self.write_data(0x05)
- self.write_cmd(0xB2)
- self.write_data(0x0C)
- self.write_data(0x0C)
- self.write_data(0x00)
- self.write_data(0x33)
- self.write_data(0x33)
- self.write_cmd(0xB7)
- self.write_data(0x35)
- self.write_cmd(0xBB)
- self.write_data(0x19)
- self.write_cmd(0xC0)
- self.write_data(0x2C)
- self.write_cmd(0xC2)
- self.write_data(0x01)
- self.write_cmd(0xC3)
- self.write_data(0x12)
- self.write_cmd(0xC4)
- self.write_data(0x20)
- self.write_cmd(0xC6)
- self.write_data(0x0F)
- self.write_cmd(0xD0)
- self.write_data(0xA4)
- self.write_data(0xA1)
- self.write_cmd(0xE0)
- self.write_data(0xD0)
- self.write_data(0x04)
- self.write_data(0x0D)
- self.write_data(0x11)
- self.write_data(0x13)
- self.write_data(0x2B)
- self.write_data(0x3F)
- self.write_data(0x54)
- self.write_data(0x4C)
- self.write_data(0x18)
- self.write_data(0x0D)
- self.write_data(0x0B)
- self.write_data(0x1F)
- self.write_data(0x23)
- self.write_cmd(0xE1)
- self.write_data(0xD0)
- self.write_data(0x04)
- self.write_data(0x0C)
- self.write_data(0x11)
- self.write_data(0x13)
- self.write_data(0x2C)
- self.write_data(0x3F)
- self.write_data(0x44)
- self.write_data(0x51)
- self.write_data(0x2F)
- self.write_data(0x1F)
- self.write_data(0x1F)
- self.write_data(0x20)
- self.write_data(0x23)
- self.write_cmd(0x21)
- self.write_cmd(0x11)
- self.write_cmd(0x29)
- def show(self):
- self.write_cmd(0x2A)
- self.write_data(0x00)
- self.write_data(0x00)
- self.write_data(0x01)
- self.write_data(0x3f)
- self.write_cmd(0x2B)
- self.write_data(0x00)
- self.write_data(0x00)
- self.write_data(0x00)
- self.write_data(0xEF)
- self.write_cmd(0x2C)
- self.cs(1)
- self.dc(1)
- self.cs(0)
- self.spi.write(self.buffer)
- self.cs(1)
- # Colour Mixing Routine
- def colour(R,G,B): # Convert RGB888 to RGB565
- return (((G&0b00011100)<<3) +((B&0b11111000)>>3)<<8) + (R&0b11111000)+((G&0b11100000)>>5)
- def clear(c):
- lcd.fill(c)
- # ===========Start of FONTS Section=========================
- # Standard ASCII 5x8 font
- # https://gist.github.com/tdicola/229b3eeddc12d58fb0bc724a9062aa05
- FONT_HEIGHT = 8
- FONT_WIDTH = 5
- FONT = bytes([
- 0x00, 0x00, 0x00, 0x00, 0x00, # <space>
- 0x3E, 0x5B, 0x4F, 0x5B, 0x3E,
- 0x3E, 0x6B, 0x4F, 0x6B, 0x3E,
- 0x1C, 0x3E, 0x7C, 0x3E, 0x1C,
- 0x18, 0x3C, 0x7E, 0x3C, 0x18,
- 0x1C, 0x57, 0x7D, 0x57, 0x1C,
- 0x1C, 0x5E, 0x7F, 0x5E, 0x1C,
- 0x00, 0x18, 0x3C, 0x18, 0x00,
- 0xFF, 0xE7, 0xC3, 0xE7, 0xFF,
- 0x00, 0x18, 0x24, 0x18, 0x00,
- 0xFF, 0xE7, 0xDB, 0xE7, 0xFF,
- 0x30, 0x48, 0x3A, 0x06, 0x0E,
- 0x26, 0x29, 0x79, 0x29, 0x26,
- 0x40, 0x7F, 0x05, 0x05, 0x07,
- 0x40, 0x7F, 0x05, 0x25, 0x3F,
- 0x5A, 0x3C, 0xE7, 0x3C, 0x5A,
- 0x7F, 0x3E, 0x1C, 0x1C, 0x08,
- 0x08, 0x1C, 0x1C, 0x3E, 0x7F,
- 0x14, 0x22, 0x7F, 0x22, 0x14,
- 0x5F, 0x5F, 0x00, 0x5F, 0x5F,
- 0x06, 0x09, 0x7F, 0x01, 0x7F,
- 0x00, 0x66, 0x89, 0x95, 0x6A,
- 0x60, 0x60, 0x60, 0x60, 0x60,
- 0x94, 0xA2, 0xFF, 0xA2, 0x94,
- 0x08, 0x04, 0x7E, 0x04, 0x08, # UP
- 0x10, 0x20, 0x7E, 0x20, 0x10, # Down
- 0x08, 0x08, 0x2A, 0x1C, 0x08, # Right
- 0x08, 0x1C, 0x2A, 0x08, 0x08, # Left
- 0x1E, 0x10, 0x10, 0x10, 0x10,
- 0x0C, 0x1E, 0x0C, 0x1E, 0x0C,
- 0x30, 0x38, 0x3E, 0x38, 0x30,
- 0x06, 0x0E, 0x3E, 0x0E, 0x06,
- 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x5F, 0x00, 0x00,
- 0x00, 0x07, 0x00, 0x07, 0x00,
- 0x14, 0x7F, 0x14, 0x7F, 0x14,
- 0x24, 0x2A, 0x7F, 0x2A, 0x12,
- 0x23, 0x13, 0x08, 0x64, 0x62,
- 0x36, 0x49, 0x56, 0x20, 0x50,
- 0x00, 0x08, 0x07, 0x03, 0x00,
- 0x00, 0x1C, 0x22, 0x41, 0x00,
- 0x00, 0x41, 0x22, 0x1C, 0x00,
- 0x2A, 0x1C, 0x7F, 0x1C, 0x2A,
- 0x08, 0x08, 0x3E, 0x08, 0x08,
- 0x00, 0x80, 0x70, 0x30, 0x00,
- 0x08, 0x08, 0x08, 0x08, 0x08,
- 0x00, 0x00, 0x60, 0x60, 0x00,
- 0x20, 0x10, 0x08, 0x04, 0x02,
- 0x3E, 0x51, 0x49, 0x45, 0x3E,
- 0x00, 0x42, 0x7F, 0x40, 0x00,
- 0x72, 0x49, 0x49, 0x49, 0x46,
- 0x21, 0x41, 0x49, 0x4D, 0x33,
- 0x18, 0x14, 0x12, 0x7F, 0x10,
- 0x27, 0x45, 0x45, 0x45, 0x39,
- 0x3C, 0x4A, 0x49, 0x49, 0x31,
- 0x41, 0x21, 0x11, 0x09, 0x07,
- 0x36, 0x49, 0x49, 0x49, 0x36,
- 0x46, 0x49, 0x49, 0x29, 0x1E,
- 0x00, 0x00, 0x14, 0x00, 0x00,
- 0x00, 0x40, 0x34, 0x00, 0x00,
- 0x00, 0x08, 0x14, 0x22, 0x41,
- 0x14, 0x14, 0x14, 0x14, 0x14,
- 0x00, 0x41, 0x22, 0x14, 0x08,
- 0x02, 0x01, 0x59, 0x09, 0x06,
- 0x3E, 0x41, 0x5D, 0x59, 0x4E,
- 0x7C, 0x12, 0x11, 0x12, 0x7C, # A
- 0x7F, 0x49, 0x49, 0x49, 0x36,
- 0x3E, 0x41, 0x41, 0x41, 0x22,
- 0x7F, 0x41, 0x41, 0x41, 0x3E,
- 0x7F, 0x49, 0x49, 0x49, 0x41,
- 0x7F, 0x09, 0x09, 0x09, 0x01,
- 0x3E, 0x41, 0x41, 0x51, 0x73,
- 0x7F, 0x08, 0x08, 0x08, 0x7F,
- 0x00, 0x41, 0x7F, 0x41, 0x00,
- 0x20, 0x40, 0x41, 0x3F, 0x01,
- 0x7F, 0x08, 0x14, 0x22, 0x41,
- 0x7F, 0x40, 0x40, 0x40, 0x40,
- 0x7F, 0x02, 0x1C, 0x02, 0x7F,
- 0x7F, 0x04, 0x08, 0x10, 0x7F,
- 0x3E, 0x41, 0x41, 0x41, 0x3E,
- 0x7F, 0x09, 0x09, 0x09, 0x06,
- 0x3E, 0x41, 0x51, 0x21, 0x5E,
- 0x7F, 0x09, 0x19, 0x29, 0x46,
- 0x26, 0x49, 0x49, 0x49, 0x32,
- 0x03, 0x01, 0x7F, 0x01, 0x03,
- 0x3F, 0x40, 0x40, 0x40, 0x3F,
- 0x1F, 0x20, 0x40, 0x20, 0x1F,
- 0x3F, 0x40, 0x38, 0x40, 0x3F,
- 0x63, 0x14, 0x08, 0x14, 0x63,
- 0x03, 0x04, 0x78, 0x04, 0x03,
- 0x61, 0x59, 0x49, 0x4D, 0x43,
- 0x00, 0x7F, 0x41, 0x41, 0x41,
- 0x02, 0x04, 0x08, 0x10, 0x20,
- 0x00, 0x41, 0x41, 0x41, 0x7F,
- 0x04, 0x02, 0x01, 0x02, 0x04,
- 0x40, 0x40, 0x40, 0x40, 0x40,
- 0x00, 0x03, 0x07, 0x08, 0x00,
- 0x20, 0x54, 0x54, 0x78, 0x40,
- 0x7F, 0x28, 0x44, 0x44, 0x38,
- 0x38, 0x44, 0x44, 0x44, 0x28,
- 0x38, 0x44, 0x44, 0x28, 0x7F,
- 0x38, 0x54, 0x54, 0x54, 0x18,
- 0x00, 0x08, 0x7E, 0x09, 0x02,
- 0x18, 0xA4, 0xA4, 0x9C, 0x78,
- 0x7F, 0x08, 0x04, 0x04, 0x78,
- 0x00, 0x44, 0x7D, 0x40, 0x00,
- 0x20, 0x40, 0x40, 0x3D, 0x00,
- 0x7F, 0x10, 0x28, 0x44, 0x00,
- 0x00, 0x41, 0x7F, 0x40, 0x00,
- 0x7C, 0x04, 0x78, 0x04, 0x78,
- 0x7C, 0x08, 0x04, 0x04, 0x78,
- 0x38, 0x44, 0x44, 0x44, 0x38,
- 0xFC, 0x18, 0x24, 0x24, 0x18,
- 0x18, 0x24, 0x24, 0x18, 0xFC,
- 0x7C, 0x08, 0x04, 0x04, 0x08,
- 0x48, 0x54, 0x54, 0x54, 0x24,
- 0x04, 0x04, 0x3F, 0x44, 0x24,
- 0x3C, 0x40, 0x40, 0x20, 0x7C,
- 0x1C, 0x20, 0x40, 0x20, 0x1C,
- 0x3C, 0x40, 0x30, 0x40, 0x3C,
- 0x44, 0x28, 0x10, 0x28, 0x44,
- 0x4C, 0x90, 0x90, 0x90, 0x7C,
- 0x44, 0x64, 0x54, 0x4C, 0x44,
- 0x00, 0x08, 0x36, 0x41, 0x00,
- 0x00, 0x00, 0x77, 0x00, 0x00,
- 0x00, 0x41, 0x36, 0x08, 0x00,
- 0x02, 0x01, 0x02, 0x04, 0x02,
- 0x3C, 0x26, 0x23, 0x26, 0x3C,
- 0x1E, 0xA1, 0xA1, 0x61, 0x12, # Extension starts here
- 0x3A, 0x40, 0x40, 0x20, 0x7A,
- 0x38, 0x54, 0x54, 0x55, 0x59,
- 0x21, 0x55, 0x55, 0x79, 0x41,
- 0x22, 0x54, 0x54, 0x78, 0x42, # a-umlaut
- 0x21, 0x55, 0x54, 0x78, 0x40,
- 0x20, 0x54, 0x55, 0x79, 0x40,
- 0x0C, 0x1E, 0x52, 0x72, 0x12,
- 0x39, 0x55, 0x55, 0x55, 0x59,
- 0x39, 0x54, 0x54, 0x54, 0x59,
- 0x39, 0x55, 0x54, 0x54, 0x58,
- 0x00, 0x00, 0x45, 0x7C, 0x41,
- 0x00, 0x02, 0x45, 0x7D, 0x42,
- 0x00, 0x01, 0x45, 0x7C, 0x40,
- 0x7D, 0x12, 0x11, 0x12, 0x7D, # A-umlaut
- 0xF0, 0x28, 0x25, 0x28, 0xF0,
- 0x7C, 0x54, 0x55, 0x45, 0x00,
- 0x20, 0x54, 0x54, 0x7C, 0x54,
- 0x7C, 0x0A, 0x09, 0x7F, 0x49,
- 0x32, 0x49, 0x49, 0x49, 0x32,
- 0x3A, 0x44, 0x44, 0x44, 0x3A, # o-umlaut
- 0x32, 0x4A, 0x48, 0x48, 0x30,
- 0x3A, 0x41, 0x41, 0x21, 0x7A,
- 0x3A, 0x42, 0x40, 0x20, 0x78,
- 0x00, 0x9D, 0xA0, 0xA0, 0x7D,
- 0x3D, 0x42, 0x42, 0x42, 0x3D, # O-umlaut
- 0x3D, 0x40, 0x40, 0x40, 0x3D,
- 0x3C, 0x24, 0xFF, 0x24, 0x24,
- 0x48, 0x7E, 0x49, 0x43, 0x66,
- 0x2B, 0x2F, 0xFC, 0x2F, 0x2B,
- 0xFF, 0x09, 0x29, 0xF6, 0x20,
- 0xC0, 0x88, 0x7E, 0x09, 0x03,
- 0x20, 0x54, 0x54, 0x79, 0x41,
- 0x00, 0x00, 0x44, 0x7D, 0x41,
- 0x30, 0x48, 0x48, 0x4A, 0x32,
- 0x38, 0x40, 0x40, 0x22, 0x7A,
- 0x00, 0x7A, 0x0A, 0x0A, 0x72,
- 0x7D, 0x0D, 0x19, 0x31, 0x7D,
- 0x26, 0x29, 0x29, 0x2F, 0x28,
- 0x26, 0x29, 0x29, 0x29, 0x26,
- 0x30, 0x48, 0x4D, 0x40, 0x20,
- 0x38, 0x08, 0x08, 0x08, 0x08,
- 0x08, 0x08, 0x08, 0x08, 0x38,
- 0x2F, 0x10, 0xC8, 0xAC, 0xBA,
- 0x2F, 0x10, 0x28, 0x34, 0xFA,
- 0x00, 0x00, 0x7B, 0x00, 0x00,
- 0x08, 0x14, 0x2A, 0x14, 0x22,
- 0x22, 0x14, 0x2A, 0x14, 0x08,
- 0x55, 0x00, 0x55, 0x00, 0x55, # 176 (25% block) missing in old code
- 0xAA, 0x55, 0xAA, 0x55, 0xAA, # 50% block
- 0xFF, 0x55, 0xFF, 0x55, 0xFF, # 75% block
- 0x00, 0x00, 0x00, 0xFF, 0x00,
- 0x10, 0x10, 0x10, 0xFF, 0x00,
- 0x14, 0x14, 0x14, 0xFF, 0x00,
- 0x10, 0x10, 0xFF, 0x00, 0xFF,
- 0x10, 0x10, 0xF0, 0x10, 0xF0,
- 0x14, 0x14, 0x14, 0xFC, 0x00,
- 0x14, 0x14, 0xF7, 0x00, 0xFF,
- 0x00, 0x00, 0xFF, 0x00, 0xFF,
- 0x14, 0x14, 0xF4, 0x04, 0xFC,
- 0x14, 0x14, 0x17, 0x10, 0x1F,
- 0x10, 0x10, 0x1F, 0x10, 0x1F,
- 0x14, 0x14, 0x14, 0x1F, 0x00,
- 0x10, 0x10, 0x10, 0xF0, 0x00,
- 0x00, 0x00, 0x00, 0x1F, 0x10,
- 0x10, 0x10, 0x10, 0x1F, 0x10,
- 0x10, 0x10, 0x10, 0xF0, 0x10,
- 0x00, 0x00, 0x00, 0xFF, 0x10,
- 0x10, 0x10, 0x10, 0x10, 0x10,
- 0x10, 0x10, 0x10, 0xFF, 0x10,
- 0x00, 0x00, 0x00, 0xFF, 0x14,
- 0x00, 0x00, 0xFF, 0x00, 0xFF,
- 0x00, 0x00, 0x1F, 0x10, 0x17,
- 0x00, 0x00, 0xFC, 0x04, 0xF4,
- 0x14, 0x14, 0x17, 0x10, 0x17,
- 0x14, 0x14, 0xF4, 0x04, 0xF4,
- 0x00, 0x00, 0xFF, 0x00, 0xF7,
- 0x14, 0x14, 0x14, 0x14, 0x14,
- 0x14, 0x14, 0xF7, 0x00, 0xF7,
- 0x14, 0x14, 0x14, 0x17, 0x14,
- 0x10, 0x10, 0x1F, 0x10, 0x1F,
- 0x14, 0x14, 0x14, 0xF4, 0x14,
- 0x10, 0x10, 0xF0, 0x10, 0xF0,
- 0x00, 0x00, 0x1F, 0x10, 0x1F,
- 0x00, 0x00, 0x00, 0x1F, 0x14,
- 0x00, 0x00, 0x00, 0xFC, 0x14,
- 0x00, 0x00, 0xF0, 0x10, 0xF0,
- 0x10, 0x10, 0xFF, 0x10, 0xFF,
- 0x14, 0x14, 0x14, 0xFF, 0x14,
- 0x10, 0x10, 0x10, 0x1F, 0x00,
- 0x00, 0x00, 0x00, 0xF0, 0x10,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xF0, 0xF0, 0xF0, 0xF0, 0xF0,
- 0xFF, 0xFF, 0xFF, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0xFF, 0xFF,
- 0x0F, 0x0F, 0x0F, 0x0F, 0x0F,
- 0x38, 0x44, 0x44, 0x38, 0x44, # alpha - Greek characters start here at 224
- 0xFC, 0x4A, 0x4A, 0x4A, 0x34, # sharp-s or beta
- 0x7E, 0x02, 0x02, 0x06, 0x06,
- 0x02, 0x7E, 0x02, 0x7E, 0x02, # pi
- 0x63, 0x55, 0x49, 0x41, 0x63,
- 0x38, 0x44, 0x44, 0x3C, 0x04,
- 0x40, 0x7E, 0x20, 0x1E, 0x20, # mu
- 0x06, 0x02, 0x7E, 0x02, 0x02,
- 0x99, 0xA5, 0xE7, 0xA5, 0x99,
- 0x1C, 0x2A, 0x49, 0x2A, 0x1C,
- 0x4C, 0x72, 0x01, 0x72, 0x4C, # omega
- 0x30, 0x4A, 0x4D, 0x4D, 0x30,
- 0x30, 0x48, 0x78, 0x48, 0x30,
- 0xBC, 0x62, 0x5A, 0x46, 0x3D,
- 0x3E, 0x49, 0x49, 0x49, 0x00,
- 0x7E, 0x01, 0x01, 0x01, 0x7E, # End of Greek chars
- 0x2A, 0x2A, 0x2A, 0x2A, 0x2A, # equivalent to 240
- 0x44, 0x44, 0x5F, 0x44, 0x44, # + or -
- 0x40, 0x51, 0x4A, 0x44, 0x40, # >=
- 0x40, 0x44, 0x4A, 0x51, 0x40, # <=
- 0x00, 0x00, 0xFF, 0x01, 0x03, # top of integral
- 0xE0, 0x80, 0xFF, 0x00, 0x00, # bottom of integral
- 0x08, 0x08, 0x6B, 0x6B, 0x08,
- 0x36, 0x12, 0x36, 0x24, 0x36, # approximately
- 0x06, 0x0F, 0x09, 0x0F, 0x06,
- 0x00, 0x00, 0x18, 0x18, 0x00,
- 0x00, 0x00, 0x10, 0x10, 0x00,
- 0x30, 0x40, 0xFF, 0x01, 0x01, # sq root
- 0x00, 0x1F, 0x01, 0x01, 0x1E, # n superscript
- 0x00, 0x19, 0x1D, 0x17, 0x12, # squared (^2)
- 0x00, 0x3C, 0x3C, 0x3C, 0x3C,
- 0x00, 0x00, 0x00, 0x00, 0x00 # 255 also a <space>
- ])
- def character(asc,xt,yt,sz,r,g,b): # Single character sz is size: 1 or 2
- cc = colour(r,g,b)
- code = asc * 5 # 5 bytes per character
- for ii in range(5):
- line = FONT[code + ii]
- for yy in range(8):
- if (line >> yy) & 0x1:
- lcd.pixel(ii*sz+xt,yy*sz+yt,cc)
- if sz > 1:
- lcd.pixel(ii*sz+xt+1,yy*sz+yt,cc)
- lcd.pixel(ii*sz+xt,yy*sz+yt+1,cc)
- lcd.pixel(ii*sz+xt+1,yy*sz+yt+1,cc)
- if sz == 3:
- lcd.pixel(ii*sz+xt, yy*sz+yt+2,cc)
- lcd.pixel(ii*sz+xt+1,yy*sz+yt+2,cc)
- lcd.pixel(ii*sz+xt+2,yy*sz+yt+2,cc)
- lcd.pixel(ii*sz+xt+2,yy*sz+yt,cc)
- lcd.pixel(ii*sz+xt+2,yy*sz+yt+1,cc)
- def prnt_st(asci,xx,yy,sz,r,g,b): # Text string
- if sz == 1: move = 6
- if sz == 2: move = 11
- if sz == 3: move = 17
- for letter in(asci):
- asci = ord(letter)
- character(asci,xx,yy,sz,r,g,b)
- xx = xx + move
- def cntr_st(s,y,sz,r,g,b): # Centres text on line y
- if sz == 1: w = 6
- if sz == 2: w = 11
- if sz == 3: w = 17
- gap = int((width - len(s) * w)/2)
- prnt_st(s,gap,y,sz,r,g,b)
- # =========== End of font support routines ===========
- # ==== Main ====
- width = 320
- height = 240
- pwm = PWM(Pin(BL))
- pwm.freq(1000)
- pwm.duty_u16(32768)#max 65535
- lcd = lcd_1inch3()
- lcd.fill(0)
- lcd.show()
- cntr_st(" Roll 2 dice",50,3,255,255,0)
- cntr_st("1000 times",100,3,0,255,0)
- cntr_st("ThePiHut.com",180,2,255,140,25)
- cntr_st('Waveshare Pico-LCD-2" 320x240 pixels',220,1,255,0,0)
- lcd.show()
- utime.sleep(3)
- # Dice
- clear(0)
- lcd.show()
- b = colour(0,0,255)
- r = colour(255,0,0)
- y = colour(255,255,0)
- colwidth = 20
- totals = [0,0,0,0,0,0,0,0,0,0,0,0,0]
- for i in range(2,13):
- lcd.text(str(i),15+i*colwidth,225,y)
- lcd.hline(50,220,230,b)
- lcd.vline(50,40,180,b)
- for i in range(1,191,10):
- lcd.hline(40,39+i,10,b)
- for i in range(1,191,50):
- lcd.hline(35,69+i,245,b)
- for i in range(0,151,50):
- lcd.text(str(i),8,217-i,b)
- lcd.text("1000 throws of 2 dice",75,190,r)
- for i in range(1000):
- lcd.fill_rect(20,19,220,15,0)
- left = random.randint(1,6)
- prnt_st(str(left),20,20,2,255,0,0)
- right = random.randint(1,6)
- prnt_st(str(right),50,20,2,255,0,0)
- t = left + right
- prnt_st(str(t),80,20,2,255,255,0)
- lcd.fill_rect(200,19,220,25,0)
- prnt_st(str(i+1),200,20,3,255,0,0)
- totals[t] = totals[t] + 1
- lcd.hline(11+t*colwidth,220-totals[t],colwidth-1,y)
- if i == 800:
- lcd.text("1000 throws of 2 dice",75,190,b)
- lcd.show()
- clear(0)
- prnt_st("Results",50,10,3,0,255,0)
- for i in range(2,13):
- s = str("")
- if i < 10:
- s = str(" ")
- s = s + str(i)+" "
- ss = str(totals[i])
- prnt_st(s,50,15+ i*16,2,255,255,0)
- prnt_st(ss,90,15+ i*16,2,255,255,255)
- lcd.show()
- utime.sleep(6)
- clear(0)
- lcd.show()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement