"""Joystick-diagnostik: skriver ut vilken pin som är intryckt.
Antar pull-up (intern), så tryck = LOW.
Visar också en pixel per pin på matrisen så vi ser direkt."""
import machine, neopixel, time

PIN_LED = 4
PINS = [6, 7, 8, 9, 10]
COLORS = [(20, 0, 0), (0, 20, 0), (0, 0, 20), (20, 20, 0), (20, 0, 20)]

np = neopixel.NeoPixel(machine.Pin(PIN_LED), 64)

inputs = []
for p in PINS:
    inputs.append(machine.Pin(p, machine.Pin.IN, machine.Pin.PULL_UP))

print("Tryck på joysticken — pin som är LOW visas. Ctrl-C för att stoppa.")
last_state = [1] * len(PINS)
while True:
    # läs alla
    state = [pin.value() for pin in inputs]
    # rensa matrisen
    for i in range(64):
        np[i] = (0, 0, 0)
    # för varje pin: tänd en kolumn-pixel om LOW
    for i, v in enumerate(state):
        if v == 0:
            # lyser tre pixlar i en rad för synlighet
            for r in range(3):
                np[r * 8 + i] = COLORS[i]
    np.write()
    # logga på change
    for i, v in enumerate(state):
        if v != last_state[i]:
            if v == 0:
                print("  GPIO", PINS[i], "TRYCKT")
            else:
                print("  GPIO", PINS[i], "släppt")
    last_state = state
    time.sleep_ms(50)
