I have been playing around with the Adafruit ItsyBitsy M4 Express and CircuitPython. Tonight I was digging through my box of attachments to see what I could learn about. A joystick. Well that sounds like fun. All I have with me is the small, 128×64 OLED scree, but it will work for now. If the concept lives then I will find something larger. I had to do a little digging around to find some examples for the mouse.
The first attempt was pretty funny as I ended up usurping my Mac’s mouse. The mouse moves quicker than the screen can keep up and when you let go of the joystick is returns to zero. I am working on those points next. When the joystick button is pressed the screen is cleared. And just to note, on my generic OLED I had to add pull ups to each SDA and SCL.
# ItsyBitsy stickDraw import board import time import busio import digitalio import analogio import adafruit_ssd1306 from simpleio import map_range from adafruit_hid.mouse import Mouse # Create the I2C bus i2c = busio.I2C(board.SCL, board.SDA) mouse = Mouse() # Create the display display = adafruit_ssd1306.SSD1306_I2C(128, 64, i2c) display.fill(0) display.show() # Setting up the Joystick (mouse) x_axis = analogio.AnalogIn(board.A0) y_axis = analogio.AnalogIn(board.A1) # Setup the Clear Screen button select = digitalio.DigitalInOut(board.A2) select.direction = digitalio.Direction.INPUT select.pull = digitalio.Pull.UP pot_min = 0.00 pot_max = 3.29 step = (pot_max - pot_min) / 20.0 def get_voltage(pin): return (pin.value * 3.3) / 65536 def steps(axis): # creating steps from 0-20 return round((axis - pot_min) / step) # Time to go to work while True: x = map_range(x_axis.value, 0, 65535, 128 - 1, 0) y = map_range(y_axis.value, 0, 65535, 0, 64 - 1) # Check for Clear Screen button if select.value is False: mouse.click(Mouse.LEFT_BUTTON) # Debounce delay time.sleep(0.2) # Clear the screen display.fill(0) display.show() # Drawing path on the screen display.pixel(int(x), int(y), 1) display.show()
© 2019, wrightmac. All rights reserved.