Initial commit

This commit is contained in:
2026-01-02 20:52:43 +01:00
commit e9d2257d73
854 changed files with 164132 additions and 0 deletions

View File

@@ -0,0 +1,75 @@
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
# Initialisiere den I2C Bus
bus = smbus.SMBus(1)
def default():
# Schleife für alle Registeradressen (0x00 bis 0x15)
for register in range(0x00, 0x16):
bus.write_byte_data(MP, register, 0x00)
# Konfiguriere alle Pins auf Chip 1 als Ausgang (A und B)
def configure_chip1_as_output():
bus.write_byte_data(MP, IODIRA, 0x00) # Setze alle Pins von A als Ausgang
bus.write_byte_data(MP, IODIRB, 0x00) # Setze alle Pins von B als Ausgang
# Hauptprogramm
def main():
default()
time.sleep(0.5)
configure_chip1_as_output()
# Teste alle Pins auf Chip 1 (A0-A7, B0-B7)
for pin in range(32): # 0 bis 31
#print(f"Setze Pin {pin} auf HIGH auf Chip 1")
bus.write_byte_data(MP, GPIOA, 0x00)
if pin < 16:
# Setze den gewählten Pin auf HIGH
if pin < 8: # Pins A0-
bus.write_byte_data(MP, IODIRA, ~(1 << pin))
bus.write_byte_data(MP, GPIOA, 1 << pin)
print("====================" + str(pin) + "==========================")
time.sleep(0.2) # Kurze Pause, damit die Änderung sichtbar wird
wert = bus.read_byte_data(MP, GPIOA)
for j in range(8): # Lese 4*8=32 Pins
bitmaske = 1 << j # Erstelle eine Maske: 1, 2, 4, 8, 16, ...
wert_bitweise = bool(wert & bitmaske) # Isoliere das entsprechende Bit
if wert_bitweise == True:
print("Gefunden: " + str(j))
if __name__ == "__main__":
main()