Wieso geht mein Multiplexing mit meinem Sieben Segment Display und meinem Pi Pico 2040 nicht?

Ich habe ein Problem mit meinem Pi Pico - Projekt. Ich hatte alles verkabelt und programmiert, sodass mein 2 Stelliges Common Anode Sieben Segment Display funktioniert hat. Da allerdings alles über den Pico lief und ein Pin nur 16 mA liefern kann, war dieser überfordert. Damit nichts passiert, habe ich im Internet nach Lösungen gesucht. Dabei bin ich darauf gestoßen, dass man auch mit Transistoren arbeiten kann. Ich habe folgende eingebaut: BC547, C550B. Jetzt funktioniert es allerdings nicht mehr. Deswegen nehme ich gerne jeden Tipp oder jede Idee sehr gerne. Folgender Code:

from machine import Pin
import utime

# GPIO Pins für die Segmente (A
, B, C, D, E, F, G, DP)
segments = (2, 3, 4, 5, 6, 7, 8, 9)

# Segmentmuster für die Ziffern 0-9
# 0 = Segment an, 1 = Segment aus (weil gemeinsame Anode)
patterns = [
  (0,0,0,0,0,0,1,1), # 0
  (1,0,0,1,1,1,1,1), # 1
  (0,0,1,0,0,1,0,1), # 2
  (0,0,0,0,1,1,0,1), # 3
  (1,0,0,1,1,0,0,1), # 4
  (0,1,0,0,1,0,0,1), # 5
  (0,1,0,0,0,0,0,1), # 6
  (0,0,0,1,1,1,1,1), # 7
  (0,0,0,0,0,0,0,1), # 8
  (0,0,0,1,1,0,0,1)  # 9
]

# Pins für die Segmente
pins = [Pin(seg, Pin.OUT) for seg in segments]

# Transistoren für die Stellen (LOW = an, HIGH = aus)
displays = [Pin(16, Pin.OUT, value=1), Pin(17, Pin.OUT, value=1)]

def display_digit(display, digit):
  # beide Stellen ausschalten (HIGH = aus)
  displays[0].value(1)
  displays[1].value(1)

  # Muster für die Ziffer holen
  pattern = patterns[digit]

  # Segmente setzen
  for i in range(8):
    pins[i].value(pattern[i])

  # gewünschte Stelle aktivieren (LOW = an)
  displays[display].value(0)

  # kurze Multiplex-Zeit
  utime.sleep_ms(5)

  # wieder aus
  displays[display].value(1)

# Test: Zähler 00 - 99
while True:
  for i in range(10):
    for j in range(10):
      start = utime.ticks_ms()
      while utime.ticks_diff(utime.ticks_ms(), start) < 1000:
        display_digit(0, i) # linke Stelle
        display_digit(1, j) # rechte Stelle
        print(i,j)

und folgendes Schaltbild:

Bild zum Beitrag
Mikrocontroller, LED, Pico, Transistor, Raspberry Pi
Weitere Inhalte können nur Nutzer sehen, die bei uns eingeloggt sind.