48 lines
1.1 KiB
Python
Executable file
48 lines
1.1 KiB
Python
Executable file
import board
|
|
import busio
|
|
import adafruit_ssd1306
|
|
from simpleio import map_range
|
|
from analogio import AnalogIn
|
|
from digitalio import DigitalInOut, Direction, Pull
|
|
|
|
# Create SPI bus
|
|
spi = busio.SPI(board.SCK, board.MOSI)
|
|
|
|
# Create the display
|
|
WIDTH = 128
|
|
HEIGHT = 64
|
|
DC = DigitalInOut(board.D7)
|
|
CS = DigitalInOut(board.D9)
|
|
RST = DigitalInOut(board.D10)
|
|
display = adafruit_ssd1306.SSD1306_SPI(WIDTH, HEIGHT, spi, DC, RST, CS)
|
|
display.fill(0)
|
|
display.show()
|
|
|
|
# Create the knobs
|
|
READS = 5
|
|
x_knob = AnalogIn(board.A0)
|
|
y_knob = AnalogIn(board.A1)
|
|
|
|
# Create the clear button
|
|
clear_button = DigitalInOut(board.D12)
|
|
clear_button.direction = Direction.INPUT
|
|
clear_button.pull = Pull.UP
|
|
|
|
def read_knobs(reads):
|
|
avg_x = avg_y = 0
|
|
for _ in range(reads):
|
|
avg_x += x_knob.value
|
|
avg_y += y_knob.value
|
|
avg_x /= reads
|
|
avg_y /= reads
|
|
x_screen = map_range(avg_x, 0, 65535, 0, WIDTH - 1)
|
|
y_screen = map_range(avg_y, 0, 65535, 0, HEIGHT - 1)
|
|
return int(x_screen), int(y_screen)
|
|
|
|
while True:
|
|
while clear_button.value:
|
|
x, y = read_knobs(READS)
|
|
display.pixel(x, y, 1)
|
|
display.show()
|
|
display.fill(0)
|
|
display.show()
|