import time
import board
import analogio
x_in = analogio.AnalogIn(board.GP26)
y_in = analogio.AnalogIn(board.GP27)
U16_MAX = 65535
TARGET = 1000
def avg_center(adc, n=200, delay=0.002):
s = 0
for _ in range(n):
s += adc.value
time.sleep(delay)
return s // n
def clamp(v, lo, hi):
if v < lo:
return lo
if v > hi:
return hi
else:
return v
def scale_axis(raw, center):
if raw >= center:
denom = max(1, U16_MAX - center) # pozitív oldal hossza
v = (raw - center) * TARGET / denom
return int(clamp(round(v), 0, TARGET))
else:
denom = max(1, center) # negatív oldal hossza
v = (raw - center) * TARGET / denom # negatív lesz
return int(clamp(round(v), -TARGET, 0))
# --- kalibráció induláskor
x_center = avg_center(x_in)
y_center = avg_center(y_in)
print(f"Center: x={x_center} y={y_center}")
time.sleep(0.5)
while True:
x_raw = x_in.value
y_raw = y_in.value
x_corr = scale_axis(x_raw, x_center)
y_corr = scale_axis(y_raw, y_center)
print(f"RAW x={x_raw:5d} y={y_raw:5d} CORR x={x_corr:5d} y={y_corr:5d}")
time.sleep(0.05)