Python Forum
Interrupt for Adafruits Neotrellis button/led board
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Interrupt for Adafruits Neotrellis button/led board
#1
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...



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)
Reply


Possibly Related Threads…
Thread Author Replies Views Last Post
  Trying to make a board with turtle, nothing happens when running script Quascia 3 671 Nov-01-2023, 03:11 PM
Last Post: deanhystad
  add interrupt for next task kucingkembar 0 777 Oct-07-2022, 12:15 PM
Last Post: kucingkembar
  Determine if keyboard interrupt versus SIGINT trapped? Jibunnokage 5 1,785 Sep-30-2022, 06:54 AM
Last Post: Gribouillis
Photo HOW FIX MY BOARD GAME LAZABI 3 1,470 Apr-01-2022, 04:23 PM
Last Post: BashBedlam
  The game should now run and terminate once the board is full, but still can’t identif rango 0 1,458 Jul-22-2021, 03:24 AM
Last Post: rango
  Enabling interrupt on Adafruits button/led board Moris526 0 2,020 Apr-30-2021, 03:29 PM
Last Post: Moris526
  High-Precision Board Voltage Reading from Python into PD Liam484 1 2,082 Mar-29-2021, 02:57 PM
Last Post: Marbelous
  python delay without interrupt the whole code Nick_tkinter 4 5,151 Feb-22-2021, 10:51 PM
Last Post: nilamo
  Adafruits Neotrellis interrupt with RAsp and Python Moris526 5 3,559 Jan-01-2021, 11:43 PM
Last Post: Moris526
  input interrupt Nickd12 1 4,255 Dec-09-2020, 05:01 PM
Last Post: Gribouillis

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020