Close

OLED + MicroPython = ?

A project log for Playing with MicroPython on the ESP

Instant gratification on the ESP8266 and ESP-32

hari-wigunaHari Wiguna 05/16/2019 at 01:390 Comments
import machine, ssd1306
import urandom


def randint(min, max):  # ESP8266 does not have randint. Remove this if you're on the ESP32.'
    span = max - min + 1
    div = 0x3fffffff // span
    offset = urandom.getrandbits(30) // div
    val = min + offset
    return val


class Vector:
    x = 0
    y = 0
    xd = 1
    yd = 1

    def __init__(self, x, y, xd, yd):
        self.x = x
        self.y = y
        self.xd = xd
        self.yd = yd


class LearnPoint3:
    i2c = machine.I2C(scl=machine.Pin(5), sda=machine.Pin(4))
    oled = ssd1306.SSD1306_I2C(64, 48, i2c)

    n = 5
    a = []
    for i in range(0, n):
        a.append(Vector(randint(1, 64-2), randint(1, 48-2), -3, -1))

    while True:
        oled.fill(0)
        for i in range(0, n):
            if a[i].x <= 0 or a[i].x >= 63:
                a[i].xd = -a[i].xd
            if a[i].y <= 0 or a[i].y >= 47:
                a[i].yd = -a[i].yd
            a[i].x += a[i].xd
            a[i].y += a[i].yd
            if i<(n-1):
                oled.line(a[i].x, a[i].y, a[i+1].x, a[i+1].y, 1)
            else:
                oled.line(a[i].x, a[i].y, a[0].x, a[0].y, 1)
        oled.show()


LearnPoint3()

Discussions