Anzeigezeichen OSL641501-ARA Punktmatrix-LED

Ich lerne, diese Punktmatrix-LED zu steuern ( OSL641501-ARA-Datenblatt ). Ich habe einige Tutorials gesehen, wie man es mit 2 Schieberegistern steuert. Das Problem ist, dass ich völlig verwirrt bin mit dem Konzept, einen Charakter darauf anzuzeigen.

Es scheint mir, dass, solange ich einen Punkt ausschalte

  1. Setzen sowohl des entsprechenden Col-Pins als auch des Row-Pins auf 0 V,
  2. oder Setzen des entsprechenden Spaltenstifts und Zeilenstifts auf 3 V

Das unerwartete Ergebnis ist, dass eine ganze Linie von Punkten beeinflusst wird.

Bitte sagen Sie mir, was der Trick dafür ist? Wie kann ich vermeiden, dass andere Punkte "versehentlich" ein- oder ausgeschaltet werden?

Antworten (2)

Der „Trick“ heißt „Persistence of Vision“.

Die Idee ist, dass Sie nie nur einen Punkt steuern, sondern dass Sie das gesamte Array steuern, sondern entweder eine Zeile oder eine Spalte auf einmal.

Sie benennen eine Richtung als die "gemeinsame" Richtung - in diesem Beispiel nehmen wir das als die REIHE. Wir gehen auch davon aus, dass ROW auf 0 V und COLUMN auf 3 V gesetzt werden muss, um eine LED zum Leuchten zu bringen.

Sie müssen dann jede Reihe scannen und diese Reihe auf 0 V und alle anderen Reihen auf 3 V setzen, damit nur LEDs in dieser Reihe eingeschaltet werden können. Sie schalten dann die LEDs für diese Zeile ein (indem Sie die COLUMN-Pins auf 3 V treiben). Dann schalten Sie sie wieder aus und fahren mit der nächsten Reihe fort. Wiederholen Sie dies, bis Sie alle Reihen gemacht haben, und gehen Sie dann zurück zum Anfang.

Wenn Sie es schnell genug tun, sieht es so aus, als ob alle Zeilen gleichzeitig laufen, aber jede Zeile bekommt ihren eigenen Satz von LEDs eingeschaltet.

Normalerweise würden Sie in Ihrem Programm ein Array von LED-Zuständen (auch als "Rahmenpuffer" bezeichnet) verwalten, und das Zeichnen eines Zeichens ist dann eine Frage der Einstellung der verschiedenen LED-Zustände in diesem Array. Ihre Anzeigeroutine verwendet dann diese LED-Zustände, um zu bestimmen, welche LEDs für eine bestimmte Zeile eingeschaltet werden sollen.

Danke schön!! Die Erklärung "entweder eine Zeile oder eine Spalte auf einmal" hilft wirklich! Ich schaffe es jetzt, es zu steuern, indem ich immer nur eine ROW auf 0 V und andere auf 3 V setze, und indem ich die ROW-Nummer und die COLUMNS-Pin-Spannung ändere, wurde sie durchsucht und ein Zeichen gezeichnet. Es gibt jedoch noch ein Problem. Es sieht wirklich abgehackt aus und wenn ich es zu schnell mache, werden einige Punkte übersprungen.
Es ist alles auf Verzögerungen und Ordnung zurückzuführen. Du musst es richtig machen. 1: Reihe setzen, 2: Spalte setzen, 3: Verzögerung, 4: Spalte löschen, 5: wiederholen. Schritt 4 ist wichtig, um Geisterbilder zu reduzieren. Die Verzögerung in Schritt 3 bestimmt die Helligkeit und auch das Flimmern.
Vielen Dank! Ich habe es endlich neu verkabelt und es sieht jetzt großartig aus. Um die Übertragung des Punktarrays zu vermeiden, hatte ich es so verdrahtet, dass ein Schieberegister alle Anoden und das andere alle Kathoden steuert. Aber jetzt ist jeder von ihnen verdrahtet, um nur eine Seite der LED separat zu steuern. Die Verzögerung wird reduziert und sieht viel besser aus.

Zuerst bauen Sie Ihren Charakter auf, welche Punkte Sie auswählen möchten. Der Trick besteht darin, dass Sie Ihren Charakter zeigen, indem Sie seine Komponenten entweder in Zeilen oder Spalten aufteilen. der Einfachheit halber teilen Sie es in Spalten auf. Für jede Spalte Ihres Charakters schalten Sie diese Spalte ein und schalten nur Zeilen ein, die für genau diese bestimmte Spalte eingeschaltet sein sollen. Dann sehen Sie die erste Spalte Ihres Charakters. Jetzt machst du dasselbe für deine nächste Spalte in deinem Charakter, aber die erste Spalte, die du gezeigt hast, wird richtig weg sein. aber keine Sorge. Sie zeigen jede Spalte Ihres Charakters einzeln an. Jetzt besteht der Trick, um den gesamten Charakter anzuzeigen, darin, die Thre-Rate von Ihrem Controller zu erhöhen, um schneller zwischen den einzelnen Spalten zu wechseln. Denken Sie daran, dass Ihre Augen Frequenzen über 30 Hz nicht sehen können. Wenn Sie also jede Ihrer Spalten mit 8 * 30 Hz überstreichen (Sie multiplizieren mit 8, da Sie 8 Spalten haben, liegen 30 Hz dazwischen) = 240 Hz, dann sollten Sie das gesamte Zeichen auf Ihrer Matrix sehen. Je höher die Frequenz, desto besser wird das Zeichen angezeigt. aber Sie möchten es nicht zu sehr erhöhen, da sonst Ihre Lichtintensität abnehmen kann. Daher muss die Mindestzeit zwischen dem Beginn der ersten Spalte und dem Beginn der zweiten Spalte 1/240 s betragen.

Danke schön! Ich stelle das Intervall ein und pendele mich schließlich auf etwa 0,038 s ein. Und es sieht gut aus!