from machine import ADC, Pin
import time
#joystick
x = ADC(26)
y = ADC(27)
#knapparna
buttonL3 = Pin(14, Pin.IN, Pin.PULL_UP)
buttonA = Pin(16, Pin.IN, Pin.PULL_UP)
buttonB = Pin(17, Pin.IN, Pin.PULL_UP)
buttonX = Pin(18, Pin.IN, Pin.PULL_UP)
buttonY = Pin(19, Pin.IN, Pin.PULL_UP)
buttonSwitch = Pin(1, Pin.IN, Pin.PULL_UP)
#toggle
switched = 0
#deadzone konstnat
DEADZONE = 1500
#applicerar deadzonen
def apply_deadzone(value):
center = 32768
diff = value - center
if abs(diff) < DEADZONE:
return center
return value
# senaste togglen
lastToggleTime = 0
while True:
#vilken tid
tidenNu = time.ticks_ms()
#värdena från joysticken
x_val = apply_deadzone(x.read_u16())
y_val = apply_deadzone(y.read_u16())
#kollar om knapparna är tryckta
bL3 = 1 if buttonL3.value() == 0 else 0
bA = 1 if buttonA.value() == 0 else 0
bB = 1 if buttonB.value() == 0 else 0
bX = 1 if buttonX.value() == 0 else 0
bY = 1 if buttonY.value() == 0 else 0
#switch knappen kan endast tryckas 2 gånger i sekunden
#annars byter den flera gånger i sekunden
if buttonSwitch.value() == 0 and time.ticks_diff(tidenNu, lastToggleTime) > 500:
switched = 1 - switched
lastToggleTime = tidenNu
#printar ut all information
print(f"{x_val},{y_val},{bL3},{bA},{bB},{bX},{bY},{switched}")
time.sleep(0.01)