
Das Fotogramm ist eine sehr interessante Kunst, die einst sogar in Fernsehprogrammen propagiert wurde. Sie platzieren Objekte auf Fotopapier, belichten aus der Richtung, in der die interessanteste Silhouette erhalten wird, manifestieren, fixieren - und die Arbeit ist fertig. Aber jetzt können Sie nicht bei jedem Schritt Fotopapier kaufen. Was aber, wenn nach dem Foto ein digitales Bild digitalisiert wird?
Hierfür eignet sich ein seit langem bekannter Wanderstrahlscanner, der heute nur noch anstelle einer CRT eine LED-Matrix verwenden kann. Es ist noch besser: Die Röhre hat ein leichtes Nachleuchten, die LEDs nicht. Der Sensor ist ein TIL78-Fototransistor, der äußerlich nicht von der LED zu unterscheiden ist (der Basisausgang wird nicht herausgebracht, aber nicht benötigt). Dieser Fototransistor wird eingestellt, er kann durch viele ähnliche ersetzt werden.
Der Fototransistor muss über einen Emitter an einen gemeinsamen Draht und einen Kollektor an den Eingang von A5 Arduino UNO angeschlossen werden. Füllen Sie dann eine kleine Debug-Skizze aus und führen Sie sie aus:
#define SENSOR A5 void setup() { Serial.begin(9600); pinMode(SENSOR, INPUT_PULLUP); } void loop() { // Read analog value continuously and print it Serial.println(analogRead(SENSOR)); }
Das Programm aktiviert insbesondere den im Arduino eingebauten Pull-up-Widerstand, sodass kein externer Widerstand erforderlich ist. Wählen Sie im Arduino IDE-Menü Extras - Serieller Plotter und beachten Sie den Lichtplan. Da die Basis des Fototransistors nicht darauf angegeben ist, wird die Polarität seiner Verbindung experimentell bestimmt.
Wir verbinden eine 32x32 LED Matrix mit einem integrierten Steuergerät wie folgt:

Die Matrix kann nicht mit Arduino betrieben werden, sie benötigt eine externe Quelle von 5 V, 4 A. Wir schließen sie folgendermaßen an:

Versorgen Sie immer zuerst die Matrix und dann den Arduino mit Strom. Entfernen Sie den Strom in umgekehrter Reihenfolge. Wir "pumpen" die Arduino IDE mit den erforderlichen Bibliotheken und überprüfen die Matrix wie
hier beschrieben. Wenn es funktioniert, füllen Sie die
Skizze aus , um die Fotogramme zu erhalten.
Darin können Sie versuchen, die Parameter zu variieren:
static constexpr uint8_t READINGS_PER_PIXELS = 1; static constexpr uint8_t THRESHOLD = 15; static constexpr bool INVERT = false; static constexpr bool CLEAR = true;
Mit den ersten beiden Parametern können Sie die Empfindlichkeit einstellen, mit dem dritten - zwischen positiv und negativ wechseln und mit dem vierten - die Überlagerung jedes nachfolgenden Bildes mit dem vorherigen. Sehen Sie sich ein
tolles animiertes GIF an .
Der beste Weg, um festzustellen, ob das Licht eines Fototransistors von einer Matrix kam, war der folgende: Vergleich der Ergebnisse mit aus- und eingeschalteter LED. Wenn die LED über dem Punkt des aktuell gelesenen Objekts blockiert ist, sind sie gleich, wenn sie nicht blockiert sind, sind sie unterschiedlich. Die LED wird durch Umschalten der OE-Leitung (Ausgangsfreigabe) mehrmals ein- und ausgeschaltet. Die Leseergebnisse werden in zwei Batterien zusammengefasst: in einer - bei ausgeschalteter LED, in der anderen - beim Einschalten. Das Ergebnis der Subtraktion dieser Beträge wird mit einem Schwellenwert verglichen.
Die Matrix enthält sechs Schieberegister, die ganzen Reihen roter, grüner und blauer LEDs in der oberen und unteren Hälfte entsprechen. Die LAT-Leitung (Latch) steuert einen Puffer, der Werte von Schieberegistern an LED-Treiber überträgt. Mit vier Adressleitungen A, B, C, D können Sie die aktive Leitung in der oberen und unteren Hälfte auswählen, und die OE-Leitung ermöglicht das Deaktivieren und Aktivieren von Treibern.
Normalerweise werden vorherige Daten in einem Puffer gespeichert und an die LED-Treiber gesendet, während zu diesem Zeitpunkt neue Daten in Schieberegister geschrieben werden. Nachdem eine Zeile vollständig geschrieben wurde, werden sie in den Puffer übertragen und der Vorgang für die nächste Zeile wiederholt. Selbst wenn Sie den Status von nur einem Pixel ändern müssen, müssen Sie die gesamte Zeile neu schreiben.
Hier wird die Matrix für andere Zwecke verwendet - zum Scannen, daher hat der Autor die Schieberegister in diesem Modus verwendet, der Puffer jedoch nicht. Wir speisen eine in die LAT-Leitung ein, und der Inhalt des Schieberegisters wird sofort mit jedem Impuls auf der CLK-Leitung in den Puffer übertragen. Und nach jedem Überspielen blinken wir mehrmals eine LED durch OE, um die Ergebnisse eines Fototransistors zu lesen, und addieren zwei Batterien, wie oben beschrieben. Nachdem wir festgestellt haben, ob die LED blockiert ist, zeichnen wir das Ergebnis in dem in der Bibliothek bereitgestellten Framebuffer auf.
Wenn das gesamte Fotogramm gescannt wird, reicht es aus, die Interrupts wieder einzuschalten - und das Bild aus dem Framebuffer wird wie gewohnt in die Matrix geschrieben und angezeigt. Danach bleibt es dort, bis der nächste Scan beginnt.
Video: