import smbus import time import json # Adressen der beiden MCP23017 Chips MP = 0x20 # Ausgang rechte Hälfte # Register-Adressen für den MCP23017 IODIRA = 0x00 # Eingang / Ausgang A IODIRB = 0x01 # Eingang / Ausgang B GPIOA = 0x12 # GPIO A GPIOB = 0x13 # GPIO B PULLUPA = 0x0C PULLUPB = 0x0D # Initialisiere den I2C Bus bus = smbus.SMBus(1) # Hauptprogramm def main(): time.sleep(0.5) for pin in range(8): bus.write_byte_data(MP, IODIRA, ~(1 << pin)) time.sleep(0.02) bus.write_byte_data(MP, PULLUPA, ~(1 << pin)) time.sleep(0.02) bus.write_byte_data(MP, GPIOA, ~(1 << pin)) time.sleep(0.02) print("====================" + str(pin) + "==========================") wert = bus.read_byte_data(MP, GPIOA) for j in range(8): # Lese 4*8=32 Pins bitmaske = 1 << j wert_bitweise = bool(wert & bitmaske) if wert_bitweise == False and j != pin: print(str(j)) time.sleep(0.02) # Kurze Pause, damit die Änderung sichtbar wird if __name__ == "__main__": main()