Created
February 12, 2026 20:22
-
-
Save jedie/0d90644f3fe00f51c3b23a9e86d723fa to your computer and use it in GitHub Desktop.
Hardkernel ODROID GO Crossbar test
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| """Hardkernel ODROID GO Crossbar test""" | |
| import time | |
| from machine import ADC, Pin | |
| from micropython import const | |
| # The crossbar pin numbers: | |
| CROSSBAR_X = const(34) | |
| CROSSBAR_Y = const(35) | |
| class CrossbarHandler: | |
| # ADC values are around low: ~236 and high ~511 | |
| # So the mid value is around (236+511)/2 = 373.5 | |
| CROSSBAR_MIN_ADC_LOW = const(100) | |
| CROSSBAR_MIN_ADC_MID = const(370) | |
| def __init__(self, pin, high_callback, low_callback): | |
| self.adc = ADC(Pin(pin, mode=Pin.IN)) | |
| self.adc.width(ADC.WIDTH_9BIT) | |
| self.adc.atten(ADC.ATTN_11DB) | |
| self.high_callback = high_callback | |
| self.low_callback = low_callback | |
| self.blocked = False | |
| def poll(self): | |
| value = self.adc.read() | |
| if value < self.CROSSBAR_MIN_ADC_LOW: | |
| # button released | |
| self.blocked = False | |
| elif not self.blocked: | |
| print(f"Crossbar ADC value: {value}") | |
| if value > self.CROSSBAR_MIN_ADC_MID: | |
| self.blocked = True | |
| self.high_callback() | |
| elif value < self.CROSSBAR_MIN_ADC_MID: | |
| self.blocked = True | |
| self.low_callback() | |
| class Crossbar: | |
| def __init__(self): | |
| self.joy_x = CrossbarHandler( | |
| CROSSBAR_X, high_callback=self.left, low_callback=self.right | |
| ) | |
| self.joy_y = CrossbarHandler( | |
| CROSSBAR_Y, high_callback=self.up, low_callback=self.down | |
| ) | |
| def poll(self): | |
| self.joy_x.poll() | |
| self.joy_y.poll() | |
| def up(self): | |
| print("up") | |
| def down(self): | |
| print("down") | |
| def right(self): | |
| print("right") | |
| def left(self): | |
| print("left") | |
| if __name__ == "__main__": | |
| print("Crossbar test...") | |
| crossbar = Crossbar() | |
| while True: | |
| crossbar.poll() | |
| time.sleep_ms(100) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment