Hi all.
I have 32 Adafruits Neotrellis boards (8x8 led/button) making a big led/button board, controlled with Raspberrypi zero.
Adafruits page says the interrupt works with python (https://learn.adafruit.com/adafruit-neotrellis?view=all) but in the sample code theres is not that function. It is in the Arduino code.
This is my first project so im trying to make it work.
I found some interrupt code for python (http://raspi.tv/2013/how-to-use-interrup...d-rpi-gpio)
I had no luck. Im trying different things but dont have enough knoledge.
Any help is welcomed
I need the interrupt because the time it takes to read the entire board is too much
The code I found is for a button, not a board .....so...
I have 32 Adafruits Neotrellis boards (8x8 led/button) making a big led/button board, controlled with Raspberrypi zero.
Adafruits page says the interrupt works with python (https://learn.adafruit.com/adafruit-neotrellis?view=all) but in the sample code theres is not that function. It is in the Arduino code.
This is my first project so im trying to make it work.
I found some interrupt code for python (http://raspi.tv/2013/how-to-use-interrup...d-rpi-gpio)
I had no luck. Im trying different things but dont have enough knoledge.
Any help is welcomed
I need the interrupt because the time it takes to read the entire board is too much
The code I found is for a button, not a board .....so...
import RPi.GPIO as GPIO
import time
import serial
GPIO.setmode(GPIO.BCM)
GPIO.setup(5, GPIO.IN, pull_up_down=GPIO.PUD_UP)
ser=serial.Serial('/dev/ttyS0',57600 )
from board import SCL, SDA
import busio
from adafruit_neotrellis.neotrellis import NeoTrellis
from adafruit_neotrellis.multitrellis import MultiTrellis
i2c_bus = busio.I2C(SCL, SDA)
trelli = [
[NeoTrellis(i2c_bus, False, addr=0x35), NeoTrellis(i2c_bus, False, addr=0x3A), NeoTrellis(i2c_bus, False, addr=0x4A), NeoTrellis(i2c_bus, False, addr=0x33), NeoTrellis(i2c_bus, False, addr=0x4B), NeoTrellis(i2c_bus, False, addr=0x45), NeoTrellis(i2c_bus, False, addr=0x4C), NeoTrellis(i2c_bus, False, addr=0x42)],
[NeoTrellis(i2c_bus, False, addr=0x4D), NeoTrellis(i2c_bus, False, addr=0x3E), NeoTrellis(i2c_bus, False, addr=0x40), NeoTrellis(i2c_bus, False, addr=0x38), NeoTrellis(i2c_bus, False, addr=0x31), NeoTrellis(i2c_bus, False, addr=0x3D), NeoTrellis(i2c_bus, False, addr=0x3B), NeoTrellis(i2c_bus, False, addr=0x49)],
[NeoTrellis(i2c_bus, False, addr=0x2F), NeoTrellis(i2c_bus, False, addr=0x2E), NeoTrellis(i2c_bus, False, addr=0x3C), NeoTrellis(i2c_bus, False, addr=0x47), NeoTrellis(i2c_bus, False, addr=0x32), NeoTrellis(i2c_bus, False, addr=0x36), NeoTrellis(i2c_bus, False, addr=0x48), NeoTrellis(i2c_bus, False, addr=0x3F)],
[NeoTrellis(i2c_bus, False, addr=0x34), NeoTrellis(i2c_bus, False, addr=0x44), NeoTrellis(i2c_bus, False, addr=0x39), NeoTrellis(i2c_bus, False, addr=0x41), NeoTrellis(i2c_bus, False, addr=0x30), NeoTrellis(i2c_bus, False, addr=0x37), NeoTrellis(i2c_bus, False, addr=0x43), NeoTrellis(i2c_bus, False, addr=0x46)],
]
trellis = MultiTrellis(trelli)
colos = {
"a":(255,0,0),
"b":(0,0,0),
}
def rgb(name):
return colos[name]
def blink(xcoord, ycoord, edge):
if edge == NeoTrellis.EDGE_RISING:
print("d")
# xc=str(xcoord)
# out=xc.encode()
# ser.write(out)
# ser.write(b'a')
# yc=str(ycoord)
# up=yc.encode()
# ser.write(up)
# ser.write(b'a')
elif edge == NeoTrellis.EDGE_FALLING:
print("h")
# xc=str(xcoord)
# out=xc.encode()
# ser.write(out)
# ser.write(b'b')
# yc=str(ycoord)
# up=yc.encode()
# ser.write(up)
# ser.write(b'b')
for y in range(16):
for x in range(32):
# activate rising edge events on all keys
trellis.activate_key(x, y, NeoTrellis.EDGE_RISING)
# activate falling edge events on all keys
trellis.activate_key(x, y, NeoTrellis.EDGE_FALLING)
trellis.set_callback(x, y, blink)
trellis.color(x,y, rgb("a"))
time.sleep(0.01)
for y in range(16):
for x in range(32):
trellis.color(x, y, rgb("b"))
time.sleep(0.01)
while True:
# if (ser.inWaiting() > 0):
# data=ser.readline()
# c,v,j=data.split()
# n=int(c)
# m=int(v)
# o=j.decode("utf-8")
# trellis.color(n,m, rgb(o))
try:
GPIO.wait_for_edge(5, GPIO.FALLING):
print("Nobody knows more about code than me, believe me")
except KeyboardInterrupt:
GPIO.cleanup()
trellis.sync()
time.sleep(0.02)
