Code:
import time
import plasma
import machine
import micropython
from plasma import plasma_stick
from pimoroni_i2c import PimoroniI2C
from pimoroni import BREAKOUT_GARDEN_I2C_PINS # or PICO_EXPLORER_I2C_PINS or HEADER_I2C_PINS
from breakout_encoder_wheel import BreakoutEncoderWheel, UP, DOWN, LEFT, RIGHT, CENTRE, NUM_BUTTONS, NUM_LEDS
BUTTON_NAMES = ["Up", "Down", "Left", "Right", "Centre"]
i2c = PimoroniI2C(plasma_stick.SDA, plasma_stick.SCL)
wheel = BreakoutEncoderWheel(i2c)
#position = 0
last_pressed = [False] * NUM_BUTTONS
pressed = [False] * NUM_BUTTONS
GRB_LEDS = 144
# WS2812 / NeoPixel™ LEDs
led_strip = plasma.WS2812(GRB_LEDS, 0, 0, plasma_stick.DAT, color_order=plasma.COLOR_ORDER_GRB)
led_strip.start()
brightness = (0.5)
'''
black = hsv(0, 0, 0)
red = hsv(1 / 360, 1.0, brightness)
green = hsv(130 / 360, 1.0, brightness)
blue = hsv(250 / 360, 1.0, brightness)
yellow = hsv(60 / 360, 1.0, brightness)
orange = hsv(30 / 360, 1.0, brightness)
white = hsv(1.0, 0, brightness)
'''
while True:
# Read all of the encoder wheel's buttons
for b in range(NUM_BUTTONS):
pressed[b] = wheel.pressed(b)
if pressed[b] != last_pressed[b]:
print(BUTTON_NAMES[b], "Pressed" if pressed[b] else "Released")
last_pressed[b] = pressed[b]
if pressed[UP]:
wheel.clear()
for i in range(NUM_LEDS):
wheel.set_hsv(i, 1.0, 0, brightness)
for s in range(GRB_LEDS):
led_strip.set_hsv(s, 1.0, 0, brightness)
wheel.set_hsv(0, 1.0, 0, brightness)
wheel.set_hsv(6, 1 / 360, 1.0, brightness)
wheel.set_hsv(12, 130 / 360, 1.0, brightness)
wheel.set_hsv(18, 250 / 360, 1.0, brightness)
if pressed[RIGHT]:
wheel.clear()
for i in range(NUM_LEDS):
wheel.set_hsv(i, 1 / 360, 1.0, brightness)
for s in range(GRB_LEDS):
led_strip.set_hsv(s, 1 / 360, 1.0, brightness)
wheel.set_hsv(0, 1.0, 0, brightness)
wheel.set_hsv(6, 1 / 360, 1.0, brightness)
wheel.set_hsv(12, 130 / 360, 1.0, brightness)
wheel.set_hsv(18, 250 / 360, 1.0, brightness)
if pressed[DOWN]:
wheel.clear()
for i in range(NUM_LEDS):
wheel.set_hsv(i, 130 / 360, 1.0, brightness)
for s in range(GRB_LEDS):
led_strip.set_hsv(s, 130 / 360, 1.0, brightness)
wheel.set_hsv(0, 1.0, 0, brightness)
wheel.set_hsv(6, 1 / 360, 1.0, brightness)
wheel.set_hsv(12, 130 / 360, 1.0, brightness)
wheel.set_hsv(18, 250 / 360, 1.0, brightness)
if pressed[LEFT]:
wheel.clear()
for i in range(NUM_LEDS):
wheel.set_hsv(i, 250 / 360, 1.0, brightness)
for s in range(GRB_LEDS):
led_strip.set_hsv(s, 250 / 360, 1.0, brightness)
wheel.set_hsv(0, 1.0, 0, brightness)
wheel.set_hsv(6, 1 / 360, 1.0, brightness)
wheel.set_hsv(12, 130 / 360, 1.0, brightness)
wheel.set_hsv(18, 250 / 360, 1.0, brightness)
if pressed[CENTRE]:
wheel.clear()
for s in range(GRB_LEDS):
led_strip.set_hsv(s, 0, 0, 0)
wheel.set_hsv(0, 1.0, 0, brightness)
wheel.set_hsv(6, 1 / 360, 1.0, brightness)
wheel.set_hsv(12, 130 / 360, 1.0, brightness)
wheel.set_hsv(18, 250 / 360, 1.0, brightness)
# Has the dial been turned since the last time we checked?
change = wheel.delta()
if change != 0:
# Print out the direction the dial was turned, and the count
if change > 0:
print("Clockwise, Count =", wheel.count())
else:
print("Counter Clockwise, Count =", wheel.count())
# Record the new position (from 0 to 23)
position = wheel.count()
if position < 1:
position = 1
if position > 25:
position = 25
print ("Position =", position)
# Record a colour hue from 0.0 to 1.0
brightness = ((position * 4) / 100)
if brightness < 0:
brightness = 0
if brightness > 1:
brightness = 1
print (brightness)
wheel.show()