
El fotograma es un arte muy interesante, en un momento incluso se propagó en programas de televisión. Coloca objetos en papel fotográfico, expone desde la dirección en la que se obtiene la silueta más interesante, manifiesta, arregla y el trabajo está listo. Pero ahora no puedes comprar papel fotográfico a cada paso. Pero, ¿qué pasa si, después de la fotografía, una imagen digital se convierte en digital?
Para esto, un escáner de haz de viaje conocido desde hace mucho tiempo es adecuado, solo que hoy en lugar de un CRT será más conveniente usar una matriz de LED en él. Es aún mejor: el tubo tiene un ligero resplandor, los LED no. El sensor será el fototransistor TIL78, que es externamente indistinguible del LED (la salida base no se saca, pero no es necesaria). Este fototransistor se suspende, puede ser reemplazado por muchos similares.
El fototransistor debe estar conectado por un emisor a un cable común, un colector a la entrada de A5 Arduino UNO, luego complete y ejecute un pequeño boceto de depuración:
#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)); }
El programa, en particular, activa la resistencia pull-up integrada en el Arduino, por lo que no se necesita una externa. En el menú IDE de Arduino, seleccione Herramientas - Plotter en serie y observe el horario de luces. Como la base del fototransistor no está indicada en él, la polaridad de su conexión se determina experimentalmente.
Conectamos una matriz LED de 32x32 con un dispositivo de control integrado de la siguiente manera:

Arduino no puede alimentar la matriz, necesita una fuente externa de 5 V, 4 A. La conectamos así:

Siempre suministre energía primero a la matriz, luego al Arduino, retire la energía en el orden inverso. "Bombeamos" el Arduino IDE con las bibliotecas necesarias y verificamos la matriz como se describe
aquí . Cuando funcione, complete el
boceto para obtener los fotogramas.
En él, puedes intentar variar los parámetros:
static constexpr uint8_t READINGS_PER_PIXELS = 1; static constexpr uint8_t THRESHOLD = 15; static constexpr bool INVERT = false; static constexpr bool CLEAR = true;
Los dos primeros parámetros le permiten ajustar la sensibilidad, el tercero, cambiar entre positivo y negativo, y el cuarto, habilitar la superposición de cada imagen posterior en la anterior. Viendo un
gran GIF animado .
La mejor manera de determinar si la luz de un fototransistor provenía de una matriz era la siguiente: comparar los resultados con el LED apagado y encendido. Si el LED sobre el punto del objeto que se está leyendo en este momento está bloqueado, serán los mismos, si no están bloqueados, serán diferentes. El LED se enciende y apaga varias veces al cambiar la línea OE (habilitación de salida), los resultados de lectura se resumen en dos baterías: en una, con el LED apagado, en la otra, cuando se enciende. El resultado de restar estas cantidades se compara con un valor umbral.
La matriz contiene seis registros de desplazamiento correspondientes a filas enteras de LED rojo, verde y azul en las mitades superior e inferior. La línea LAT (pestillo) controla un búfer que transfiere valores de los registros de desplazamiento a los controladores LED. Las cuatro líneas de dirección A, B, C y D le permiten seleccionar la línea activa en las mitades superior e inferior, y la línea OE permite deshabilitar y habilitar los controladores.
Por lo general, los datos anteriores se almacenan en un búfer y se envían a los controladores LED, mientras que los datos nuevos se escriben en los registros de desplazamiento en este momento. Después de que una línea se escribe por completo, se transfieren al búfer y el proceso se repite para la siguiente línea. Incluso si necesita cambiar el estado de solo un píxel, debe reescribir toda la línea.
Aquí, la matriz se usa para otros fines: para escanear, por lo que el autor usó los registros de desplazamiento en este modo, pero no el búfer. Alimentamos uno a la línea LAT, y el contenido del registro de desplazamiento se transfiere al buffer inmediatamente con cada pulso en la línea CLK. Y después de cada copia, parpadeamos un LED varias veces a través de OE para leer los resultados con un fototransistor y sumar con dos baterías, como se describió anteriormente. Finalmente, después de determinar si el LED está bloqueado, registramos el resultado en el framebuffer provisto en la biblioteca.
Cuando se escanea todo el fotograma, será suficiente activar las interrupciones nuevamente, y la imagen del framebuffer se escribirá en la matriz de la manera estándar y se mostrará, después de lo cual permanecerá allí hasta que comience el siguiente escaneo.
Video: