button.direction = digitalio.Direction.INPUT button.pull = digitalio.Pull.UP # Connect an analog two-axis joystick to A4 and A5. ax = analogio.AnalogIn(board.A4) ay = analogio.AnalogIn(board.A5) # Equivalent of Arduino's map() function. def range_map(x, in_min, in_max, out_min, out_max): return (x - in_min) * (out_max - out_min) // (in_max - in_min) + out_min while True: # Buttons are grounded when pressed (.value = False). for i, button in enumerate(buttons): gamepad_button_num = gamepad_buttons[i] if button.value: gp.release_buttons(gamepad_button_num) print(" release", gamepad_button_num, end="") else: gp.press_buttons(gamepad_button_num) print(" press", gamepad_button_num, end="") # Convert range[0, 65535] to -127 to 127 gp.move_joysticks( x=range_map(ax.value, 0, 65535, -127, 127), y=range_map(ay.value, 0, 65535, -127, 127), ) print(" x", ax.value, "y", ay.value)
last_game_y = 0 g = Gamepad(usb_hid.devices) while True: x = ss.analog_read(2) y = ss.analog_read(3) game_x = range_map(x, 0, 1023, -127, 127) game_y = range_map(y, 0, 1023, -127, 127) if last_game_x != game_x or last_game_y != game_y: last_game_x = game_x last_game_y = game_y print(game_x, game_y) g.move_joysticks(x=game_x, y=game_y) buttons = (BUTTON_RIGHT, BUTTON_DOWN, BUTTON_LEFT, BUTTON_UP, BUTTON_SEL) button_state = [False] * len(buttons) for i, button in enumerate(buttons): buttons = ss.digital_read_bulk(button_mask) if not (buttons & (1 << button) and not button_state[i]): g.press_buttons(i + 1) print("Press", i + 1) button_state[i] = True elif button_state[i]: g.release_buttons(i + 1) print("Release", i + 1) button_state[i] = False time.sleep(0.01)