Some "linting"

This commit is contained in:
arofarn 2021-06-27 19:15:48 +02:00
parent 41d8245f04
commit 021ca85f06
4 changed files with 55 additions and 45 deletions

View File

@ -40,32 +40,32 @@ Usage Example
============= =============
:: ::
import time import time
from board import SCL, SDA from board import SCL, SDA
import busio import busio
from adafruit_neotrellis.neotrellis import NeoTrellis from adafruit_neotrellis.neotrellis import NeoTrellis
from adafruit_neotrellis.multitrellis import MultiTrellis from adafruit_neotrellis.multitrellis import MultiTrellis
from neotrellism4 import NeoTrellisM4 from neotrellism4 import NeoTrellisM4
#create the i2c object for the trellis #create the i2c object for the trellis
I2C = busio.I2C(SCL, SDA) I2C = busio.I2C(SCL, SDA)
# Create the trellis. This is for a 2x2 array of TrellisM4 (first row) with # Create the trellis. This is for a 2x2 array of TrellisM4 (first row) with
# 2 Neotrellis (second row). # 2 Neotrellis (second row).
# #
# [ NeoM4_left | NeoM4_right ] # [ NeoM4_left | NeoM4_right ]
# neotrellis0 | neotrellis1 # neotrellis0 | neotrellis1
trellim4_left = NeoTrellisM4() trellim4_left = NeoTrellisM4()
trellim4_right = NeoTrellisM4(left_part=trellim4_left) trellim4_right = NeoTrellisM4(left_part=trellim4_left)
trelli = [ trelli = [
[trellim4_left, trellim4_right], [trellim4_left, trellim4_right],
[NeoTrellis(I2C, False, addr=0x2F), NeoTrellis(I2C, False, addr=0x2E)] [NeoTrellis(I2C, False, addr=0x2F), NeoTrellis(I2C, False, addr=0x2E)]
] ]
trellis = MultiTrellis(trelli) trellis = MultiTrellis(trelli)
#some color definitions #some color definitions
OFF = (0, 0, 0) OFF = (0, 0, 0)
RED = (127, 0, 0) RED = (127, 0, 0)
@ -74,7 +74,7 @@ Usage Example
CYAN = (0, 127, 127) CYAN = (0, 127, 127)
BLUE = (0, 0, 127) BLUE = (0, 0, 127)
PURPLE = (90, 0, 127) PURPLE = (90, 0, 127)
#this will be called when button events are received #this will be called when button events are received
def blink(xcoord, ycoord, edge): def blink(xcoord, ycoord, edge):
#turn the LED on when a rising edge is detected #turn the LED on when a rising edge is detected
@ -83,7 +83,7 @@ Usage Example
#turn the LED off when a rising edge is detected #turn the LED off when a rising edge is detected
elif edge == NeoTrellis.EDGE_FALLING: elif edge == NeoTrellis.EDGE_FALLING:
trellis.color(xcoord, ycoord, OFF) trellis.color(xcoord, ycoord, OFF)
for y in range(8): for y in range(8):
for x in range(8): for x in range(8):
# activate rising edge events on all keys # activate rising edge events on all keys
@ -94,12 +94,12 @@ Usage Example
trellis.set_callback(x, y, blink) trellis.set_callback(x, y, blink)
trellis.color(x, y, PURPLE) trellis.color(x, y, PURPLE)
time.sleep(.05) time.sleep(.05)
for y in range(8): for y in range(8):
for x in range(8): for x in range(8):
trellis.color(x, y, OFF) trellis.color(x, y, OFF)
time.sleep(.05) time.sleep(.05)
while True: while True:
#the trellis can only be read every 17 millisecons or so #the trellis can only be read every 17 millisecons or so
trellis.sync() trellis.sync()

View File

@ -29,8 +29,11 @@ extensions = [
intersphinx_mapping = { intersphinx_mapping = {
"python": ("https://docs.python.org/3.4", None),"BusDevice": ("https://circuitpython.readthedocs.io/projects/busdevice/en/latest/", None), "python": ("https://docs.python.org/3.4", None),
"BusDevice": (
"https://circuitpython.readthedocs.io/projects/busdevice/en/latest/",
None,
),
"CircuitPython": ("https://circuitpython.readthedocs.io/en/latest/", None), "CircuitPython": ("https://circuitpython.readthedocs.io/en/latest/", None),
} }

View File

@ -22,8 +22,10 @@ I2C = busio.I2C(SCL, SDA)
trellim4_left = NeoTrellisM4() trellim4_left = NeoTrellisM4()
trellim4_right = NeoTrellisM4(left_part=trellim4_left) trellim4_right = NeoTrellisM4(left_part=trellim4_left)
trelli = [[trellim4_left, trellim4_right], trelli = [
[NeoTrellis(I2C, False, addr=0x2F), NeoTrellis(I2C, False, addr=0x2E)]] [trellim4_left, trellim4_right],
[NeoTrellis(I2C, False, addr=0x2F), NeoTrellis(I2C, False, addr=0x2E)],
]
trellis = MultiTrellis(trelli) trellis = MultiTrellis(trelli)
@ -46,6 +48,7 @@ def blink(xcoord, ycoord, edge):
elif edge == NeoTrellis.EDGE_FALLING: elif edge == NeoTrellis.EDGE_FALLING:
trellis.color(xcoord, ycoord, OFF) trellis.color(xcoord, ycoord, OFF)
for y in range(8): for y in range(8):
for x in range(8): for x in range(8):
# activate rising edge events on all keys # activate rising edge events on all keys
@ -55,14 +58,14 @@ for y in range(8):
trellis.activate_key(x, y, NeoTrellis.EDGE_FALLING) trellis.activate_key(x, y, NeoTrellis.EDGE_FALLING)
trellis.set_callback(x, y, blink) trellis.set_callback(x, y, blink)
trellis.color(x, y, PURPLE) trellis.color(x, y, PURPLE)
time.sleep(.05) time.sleep(0.05)
for y in range(8): for y in range(8):
for x in range(8): for x in range(8):
trellis.color(x, y, OFF) trellis.color(x, y, OFF)
time.sleep(.05) time.sleep(0.05)
while True: while True:
# the trellis can only be read every 17 millisecons or so # the trellis can only be read every 17 millisecons or so
trellis.sync() trellis.sync()
time.sleep(.02) time.sleep(0.02)

View File

@ -52,24 +52,29 @@ _TRELLISM4_RIGHT_PART = const(4)
def _key(xval): def _key(xval):
return int(int(xval/4)*8 + (xval%4)) return int(int(xval / 4) * 8 + (xval % 4))
def _seesaw_key(xval): def _seesaw_key(xval):
return int(int(xval/8)*4 + (xval%8)) return int(int(xval / 8) * 4 + (xval % 8))
def _to_seesaw_key(xval): def _to_seesaw_key(xval):
return int(xval + (xval // 4) * 4) return int(xval + (xval // 4) * 4)
class _TrellisNeoPixel: class _TrellisNeoPixel:
"""Neopixel driver """Neopixel driver"""
"""
# Lots of stuff come from Adafruit_CircuitPython_seesaw/neopixel.py # Lots of stuff come from Adafruit_CircuitPython_seesaw/neopixel.py
def __init__(self, auto_write=True, brightness=1.0, def __init__(
part=_TRELLISM4_LEFT_PART, left_part=None): self, auto_write=True, brightness=1.0, part=_TRELLISM4_LEFT_PART, left_part=None
):
if part == _TRELLISM4_LEFT_PART: if part == _TRELLISM4_LEFT_PART:
self.pix = NeoPixel(board.NEOPIXEL, 32, auto_write=False, brightness=brightness) self.pix = NeoPixel(
board.NEOPIXEL, 32, auto_write=False, brightness=brightness
)
elif part == _TRELLISM4_RIGHT_PART: elif part == _TRELLISM4_RIGHT_PART:
self.pix = left_part.pix self.pix = left_part.pix
self.auto_write = auto_write self.auto_write = auto_write
@ -84,8 +89,7 @@ class _TrellisNeoPixel:
return self.pix[_key(key) + self._offset] return self.pix[_key(key) + self._offset]
def fill(self, color): def fill(self, color):
"""Fill method wrapper """Fill method wrapper"""
"""
# Suppress auto_write while filling. # Suppress auto_write while filling.
current_auto_write = self.auto_write current_auto_write = self.auto_write
self.auto_write = False self.auto_write = False
@ -96,8 +100,7 @@ class _TrellisNeoPixel:
self.auto_write = current_auto_write self.auto_write = current_auto_write
def show(self): def show(self):
"""Fill method wrapper """Fill method wrapper"""
"""
self.pix.show() self.pix.show()
@ -130,7 +133,7 @@ class _TrellisKeypad:
row = [] row = []
for x in range(4): for x in range(4):
row.append(4 * x + y) row.append(4 * x + y)
key_names.append(row) # Keys of each halves is numbered from 0-15 key_names.append(row) # Keys of each halves is numbered from 0-15
self._matrix = Matrix_Keypad(col_pins, self.row_pins, key_names) self._matrix = Matrix_Keypad(col_pins, self.row_pins, key_names)
@ -178,15 +181,16 @@ class NeoTrellisM4:
self.keypad = _TrellisKeypad() self.keypad = _TrellisKeypad()
else: else:
self._offset = _TRELLISM4_RIGHT_PART self._offset = _TRELLISM4_RIGHT_PART
self.pixels = _TrellisNeoPixel(32, self.pixels = _TrellisNeoPixel(
part=_TRELLISM4_RIGHT_PART, 32, part=_TRELLISM4_RIGHT_PART, left_part=left_part.pixels
left_part=left_part.pixels) )
self.keypad = _TrellisKeypad(part=_TRELLISM4_RIGHT_PART, self.keypad = _TrellisKeypad(
row_pins=left_part.keypad.row_pins) part=_TRELLISM4_RIGHT_PART, row_pins=left_part.keypad.row_pins
)
self._events = [0] * _NEO_TRELLIS_NUM_KEYS self._events = [0] * _NEO_TRELLIS_NUM_KEYS
self._current_press = set() self._current_press = set()
self._key_edges = [self.EDGE_HIGH] * _NEO_TRELLIS_NUM_KEYS # Keys edges self._key_edges = [self.EDGE_HIGH] * _NEO_TRELLIS_NUM_KEYS # Keys edges
self._current_events = bytearray() self._current_events = bytearray()
self.callbacks = [None] * 16 self.callbacks = [None] * 16
@ -203,21 +207,21 @@ class NeoTrellisM4:
Interrupts are disable on trellis M4 keypad Interrupts are disable on trellis M4 keypad
""" """
print("Warning: no interrupt with Trellis M4 keypad (method does nothing)") print("Warning: no interrupt with Trellis M4 keypad (method does nothing)")
# pylint: enable=unused-argument, no-self-use # pylint: enable=unused-argument, no-self-use
@property @property
def count(self): def count(self):
"""Return the pressed keys count """Return the pressed keys count"""
"""
self._read_keypad() self._read_keypad()
return len(self._current_events) return len(self._current_events)
# pylint: disable=unused-argument, no-self-use # pylint: disable=unused-argument, no-self-use
@count.setter @count.setter
def count(self, value): def count(self, value):
"""Only for compatibility with neotrellis module """Only for compatibility with neotrellis module"""
"""
raise AttributeError("count is read only") raise AttributeError("count is read only")
# pylint: enable=unused-argument, no-self-use # pylint: enable=unused-argument, no-self-use
def set_event(self, key, edge, enable): def set_event(self, key, edge, enable):
@ -246,10 +250,9 @@ class NeoTrellisM4:
return self._current_events[:num] return self._current_events[:num]
def _read_keypad(self): def _read_keypad(self):
"""Read keypad and update _key_edges and _current_events """Read keypad and update _key_edges and _current_events"""
"""
pressed = set(self.keypad.pressed_keys) pressed = set(self.keypad.pressed_keys)
#default : not pressed => EDGE_HIGH # default : not pressed => EDGE_HIGH
self._key_edges = [self.EDGE_HIGH] * _NEO_TRELLIS_NUM_KEYS self._key_edges = [self.EDGE_HIGH] * _NEO_TRELLIS_NUM_KEYS
for k in pressed: for k in pressed:
self._key_edges[k] = self.EDGE_LOW self._key_edges[k] = self.EDGE_LOW
@ -266,7 +269,6 @@ class NeoTrellisM4:
raw_evt = (_to_seesaw_key(k) << 2) | self._key_edges[k] raw_evt = (_to_seesaw_key(k) << 2) | self._key_edges[k]
self._current_events.append(raw_evt) self._current_events.append(raw_evt)
def activate_key(self, key, edge, enable=True): def activate_key(self, key, edge, enable=True):
"""Activate or deactivate a key on the trellis. """Activate or deactivate a key on the trellis.
@ -278,7 +280,6 @@ class NeoTrellisM4:
""" """
self.set_event(key, edge, enable) self.set_event(key, edge, enable)
def sync(self): def sync(self):
"""Read any events from the Trellis hardware and call associated """Read any events from the Trellis hardware and call associated
callbacks callbacks
@ -289,5 +290,8 @@ class NeoTrellisM4:
buf = self.read_keypad(available) buf = self.read_keypad(available)
for raw in buf: for raw in buf:
evt = KeyEvent(_seesaw_key((raw >> 2) & 0x3F), raw & 0x3) evt = KeyEvent(_seesaw_key((raw >> 2) & 0x3F), raw & 0x3)
if evt.number < _NEO_TRELLIS_NUM_KEYS and self.callbacks[evt.number] is not None: if (
evt.number < _NEO_TRELLIS_NUM_KEYS
and self.callbacks[evt.number] is not None
):
self.callbacks[evt.number](evt) self.callbacks[evt.number](evt)