def row_changed(row): global rows GPIO.remove_event_detect(row) GPIO.setup(row, GPIO.OUT) for column in rows[row]: GPIO.setup(column, GPIO.IN, pull_up_down=GPIO.PUD_DOWN) # Send signal from row to columns GPIO.output(row, 1) #sleep(0.05) # Read which column it was for column in rows[row]: columnValue = GPIO.input(column) if(columnValue): key = keys[str(row) + "," + str(column)] logging.info("row changed: " + str(row)) send_key(key) # Set row and columns back to original setup GPIO.setup(row, GPIO.IN, pull_up_down=GPIO.PUD_DOWN) for column in rows[row]: GPIO.remove_event_detect(column) GPIO.setup(column, GPIO.OUT) GPIO.output(column, 1) GPIO.add_event_detect(row, GPIO.RISING, callback=row_changed)
def removeEventListner(self): GPIO.remove_event_detect(self.Pin)