Gast
#4525995
Hallo zusammen, Ich bin neu in dieser Welt der Mikrocontroller ;) und bin gerade daran eine LED-Matrix mittels vier Schieberegister zu steuern. Nun wollte ich in einem ersten Schritt das Programm für nur ein einziges Schieberegister testen. Ich will also lediglich 8 LED's mit einem 8Bit-Schieberegister steuern. Hierzu verwende ich den 74HC595 von Reichelt: https://secure.reichelt.com/74HC-595/3/index.html?&ACTION=3&LA=446&ARTICLE=3269&artnr=74HC+595&SEARCH=74HC595 (das erhaltene Schieberegister hat aber nun die Typennummer: U74HC595AG?!) Hier ist das Python-Programm mit welchem ich das Schieberegister ansteuern will: //////////////////////////////////////////////////////////////////////// # Module importieren # ****************** import time import RPi.GPIO as GPIO # init GPIO # ********* GPIO.setmode(GPIO.BOARD) GPIO.setup(23, GPIO.OUT) #Clock alt 4 GPIO.setup(19, GPIO.OUT) #Datbit alt 17 GPIO.setup(21, GPIO.OUT) #Latch alt 18 GPIO.output(23, GPIO.LOW) GPIO.output(19, GPIO.LOW) GPIO.output(21, GPIO.LOW) # Definieren des Laufmusters # ************************** matrix= [ [1,0,0,0,0,0,0,0], [0,1,0,0,0,0,0,0], [0,0,1,0,0,0,0,0], [0,0,0,1,0,0,0,0], [0,0,0,0,1,0,0,0], [0,0,0,0,0,1,0,0], [0,0,0,0,0,0,1,0], [0,0,0,0,0,0,0,1], [0,0,0,0,0,0,0,1], [0,0,0,0,0,0,1,0], [0,0,0,0,0,1,0,0], [0,0,0,0,1,0,0,0], [0,0,0,1,0,0,0,0], [0,0,1,0,0,0,0,0], [0,1,0,0,0,0,0,0], [1,0,0,0,0,0,0,0] ] # Schieberegister leer machen # *************************** for i in range(8): GPIO.output(19, GPIO.LOW) GPIO.output(23, GPIO.HIGH) GPIO.output(23, GPIO.LOW) GPIO.output(21, GPIO.HIGH) time.sleep(0.5) GPIO.output(21, GPIO.LOW) # Hauptprogramm # ************* for i in range(8): GPIO.output(19, GPIO.LOW) GPIO.output(23, GPIO.HIGH) GPIO.output(23, GPIO.LOW) GPIO.output(21, GPIO.HIGH) time.sleep(0.5) GPIO.output(21, GPIO.LOW) # Hauptprogramm # ************* while 1: for j in range(16): for k in range(8): if matrix[j][k]== 1: GPIO.output(19, GPIO.HIGH) else: GPIO.output(19, GPIO.LOW) GPIO.output(23, GPIO.HIGH) GPIO.output(23, GPIO.LOW) GPIO.output(21, GPIO.HIGH) time.sleep(0.2) GPIO.output(21, GPIO.LOW) /////////////////////////////////////////////////////////// Nun habe ich aber das Problem, dass immer zwei Ausgänge gleich schalten. Also die Ausgänge (0 und 1), (2 und 3), (4 und 5) und (6 und 7) schalten immer zusammen. So als wäre es nur ein 4-Bit Schieberegister?! Kann sich jemand von euch den Grund dafür erklären? Der Output-Enable habe ich auf den Ground und der MR auf Vcc verdrahtet. Ich bin gerade echt ratlos... Grüsse Lukas
