from machine import Pin, I2C
from time import sleep
from steptime import STEPTIME
from ssd1306 import SSD1306_I2C
# stole from examples from Quentin

i2c = I2C(1, scl=Pin(7), sda=Pin(6), freq=200000) # Again may not need the pin number?
oled = SSD1306_I2C(128, 64, i2c)

# QPAD touch pins
pads = {
    "UP":    26, # magical GPIO numbers
    "DOWN":  2,
    "RIGHT": 1,
    "LEFT":  27,
    "A":     4,
    "B":     3,
}

LOOP = 200
SETTLE = 10000 # tried halving this to speed things up

# the touch threshold
TOUCH_DELTA = 4000

sensors = {}

for sm_id, (name, pin_num) in enumerate(PADS.items()):
    Pin(pin_num, Pin.IN, Pin.PULL_UP)
    sensors[name] = STEPTIME(sm_id, pin_num)


def read_sensor(sensor):
    sensor.put(LOOP)
    sensor.put(SETTLE)

    raw = sensor.get()

    # conversionto get human readable values
    return 4294967296 - raw

oled.fill(0)
oled.text("Init...", 16, 28)
oled.show()

sleep(0.01)

baseline = {}

for name, sensor in sensors.items():
    total = 0

    for _ in range(10):
        total += read_sensor(sensor)

    baseline[name] = total // 10

print("Baselines:")
print(baseline)

while True:
    touched = []

    for name, sensor in sensors.items():
        value = read_sensor(sensor)
        delta = value - baseline[name]

        if delta > TOUCH_DELTA:
            touched.append(name)

        print(name, "delta =", delta)

    oled.fill(0)

    

    if touched:
        oled.text("Pressed:", 24, 20)
        oled.text(" ".join(touched), 24, 36)
    else:
        oled.text("No touch", 24, 32)

    oled.show()

    sleep(0.01)