Okay, suicidal_orange, here is the GH60 code currently in the repo:
num_rows = 5
num_cols = 14
strobe_cols = True
strobe_low = True
matrix_hardware = [
# Port mask Dir mask
( 0b11111010 , 0b11111010 ), # REF_PORTB
( 0b11000000 , 0b11000000 ), # REF_PORTC
( 0b11111111 , 0b11010000 ), # REF_PORTD
( 0b01000000 , 0b01000000 ), # REF_PORTE
( 0b00000011 , 0b00000011 ) # REF_PORTF
]
matrix_strobe = [
# REF_PORTB REF_PORTC REF_PORTD REF_PORTE REF_PORTF
( 0b11111010 , 0b11000000 , 0b11010000 , 0b01000000 , 0b00000010 ),
( 0b11111010 , 0b11000000 , 0b11010000 , 0b01000000 , 0b00000001 ),
( 0b11111010 , 0b11000000 , 0b11010000 , 0b00000000 , 0b00000011 ),
( 0b11111010 , 0b01000000 , 0b11010000 , 0b01000000 , 0b00000011 ),
( 0b11111010 , 0b10000000 , 0b11010000 , 0b01000000 , 0b00000011 ),
( 0b10111010 , 0b11000000 , 0b11010000 , 0b01000000 , 0b00000011 ),
( 0b11111010 , 0b11000000 , 0b11000000 , 0b01000000 , 0b00000011 ),
( 0b11111000 , 0b11000000 , 0b11010000 , 0b01000000 , 0b00000011 ),
( 0b01111010 , 0b11000000 , 0b11010000 , 0b01000000 , 0b00000011 ),
( 0b11011010 , 0b11000000 , 0b11010000 , 0b01000000 , 0b00000011 ),
( 0b11101010 , 0b11000000 , 0b11010000 , 0b01000000 , 0b00000011 ),
( 0b11111010 , 0b11000000 , 0b01010000 , 0b01000000 , 0b00000011 ),
( 0b11111010 , 0b11000000 , 0b10010000 , 0b01000000 , 0b00000011 ),
( 0b11110010 , 0b11000000 , 0b11010000 , 0b01000000 , 0b00000011 )
]
matrix_sense = [
# Port Pin mask
( REF_PORTD , (1 << 0) ),
( REF_PORTD , (1 << 1) ),
( REF_PORTD , (1 << 2) ),
( REF_PORTD , (1 << 3) ),
( REF_PORTD , (1 << 5) )
]
Here is the same layout, but reversed:
num_rows = 5
num_cols = 14
strobe_cols = False
strobe_low = True
matrix_hardware = [
# Port mask Dir mask
( 0b11111010 , 0b00000000 ), # REF_PORTB
( 0b11000000 , 0b00000000 ), # REF_PORTC
( 0b11111111 , 0b00101111 ), # REF_PORTD
( 0b01000000 , 0b00000000 ), # REF_PORTE
( 0b00000011 , 0b00000000 ) # REF_PORTF
]
matrix_strobe = [
# REF_PORTB REF_PORTC REF_PORTD REF_PORTE REF_PORTF
( 0b00000000 , 0b00000000 , 0b00101110 , 0b00000000 , 0b00000000 ),
( 0b00000000 , 0b00000000 , 0b00101101 , 0b00000000 , 0b00000000 ),
( 0b00000000 , 0b00000000 , 0b00101011 , 0b00000000 , 0b00000000 ),
( 0b00000000 , 0b00000000 , 0b00100111 , 0b00000000 , 0b00000000 ),
( 0b00000000 , 0b00000000 , 0b00001111 , 0b00000000 , 0b00000000 )
]
matrix_sense = [
# Port Pin mask
( REF_PORTF , (1 << 0) ),
( REF_PORTF , (1 << 1) ),
( REF_PORTE , (1 << 6) ),
( REF_PORTC , (1 << 7) ),
( REF_PORTC , (1 << 6) ),
( REF_PORTB , (1 << 6) ),
( REF_PORTD , (1 << 4) ),
( REF_PORTB , (1 << 1) ),
( REF_PORTB , (1 << 7) ),
( REF_PORTB , (1 << 5) ),
( REF_PORTB , (1 << 4) ),
( REF_PORTD , (1 << 7) ),
( REF_PORTD , (1 << 6) ),
( REF_PORTB , (1 << 3) )
]
Notice the differences. strobe_cols is now False in the later code, so it strobes the rows and senses the columns, and the direction masks are different.
Let me know if it works, I will commit it