Photogramme sans papier photo



Le photogramme est un art très intéressant, à une époque il a même été propagé dans des programmes télévisés. Vous placez des objets sur du papier photo, exposez à partir de la direction dans laquelle la silhouette la plus intéressante est obtenue, manifestez, fixez - et le travail est prêt. Mais maintenant, vous ne pouvez pas acheter de papier photo à chaque étape. Mais que se passe-t-il si, après la photographie, une image numérique devient numérique?

Pour cela, un scanner à faisceau mobile connu depuis longtemps convient, seulement aujourd'hui au lieu d'un tube cathodique, il sera plus pratique d'utiliser une matrice LED. C'est encore mieux: le tube a une légère rémanence, les LED n'en ont pas. Le capteur sera le phototransistor TIL78, qui ne peut pas être distingué de l'extérieur de la LED (la sortie de base n'est pas sortie, mais elle n'est pas nécessaire). Ce phototransistor n'est plus disponible, il peut être remplacé par de nombreux similaires.

Le phototransistor doit être connecté par un émetteur à un fil commun, un collecteur à l'entrée de l'A5 Arduino UNO, puis remplir et exécuter un petit croquis de débogage:

#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)); } 

Le programme, en particulier, active la résistance de rappel intégrée à l'Arduino, donc une externe n'est pas nécessaire. Dans le menu Arduino IDE, sélectionnez Tools - Serial Plotter et observez le programme d'éclairage. La base du phototransistor n'y étant pas indiquée, la polarité de sa connexion est déterminée expérimentalement.

Nous connectons une matrice LED 32x32 avec un dispositif de contrôle intégré comme suit:



La matrice ne peut pas être alimentée par Arduino, elle a besoin d'une source externe de 5 V, 4 A. Nous la connectons comme ceci:



Toujours alimenter d'abord la matrice, puis l'Arduino, coupez l'alimentation dans l'ordre inverse. Nous «pompons» l'IDE Arduino avec les bibliothèques nécessaires et vérifions la matrice comme décrit ici . Lorsque cela fonctionne, remplissez le croquis pour obtenir les photogrammes.

Dans celui-ci, vous pouvez essayer de faire varier les paramètres:

 static constexpr uint8_t READINGS_PER_PIXELS = 1; static constexpr uint8_t THRESHOLD = 15; static constexpr bool INVERT = false; static constexpr bool CLEAR = true; 

Les deux premiers paramètres vous permettent de régler la sensibilité, le troisième - basculer entre positif et négatif et le quatrième - permet de superposer chaque image suivante sur la précédente. Regarder un grand GIF animé .

La meilleure façon de déterminer si la lumière d'un phototransistor provenait d'une matrice était la suivante: comparer les résultats avec la LED éteinte et allumée. Si la LED au-dessus du point de l'objet en cours de lecture est bloquée, elles seront les mêmes, sinon bloquées, elles seront différentes. La LED s'allume et s'éteint plusieurs fois en commutant la ligne OE (sortie activée), les résultats de lecture sont résumés dans deux batteries: dans l'une - avec la LED éteinte, dans l'autre - lorsqu'elle est allumée. Le résultat de la soustraction de ces montants est comparé à une valeur seuil.

La matrice contient six registres à décalage correspondant à des rangées entières de LED rouges, vertes et bleues dans les moitiés supérieure et inférieure. La ligne LAT (verrou) contrôle un tampon qui transfère les valeurs des registres à décalage aux pilotes LED. Quatre lignes d'adresse A, B, C, D vous permettent de sélectionner la ligne active dans les moitiés supérieure et inférieure, et la ligne OE permet de désactiver et d'activer les pilotes.

Habituellement, les données précédentes sont stockées dans un tampon et envoyées aux pilotes de LED, tandis que les nouvelles données sont écrites dans les registres à décalage à ce moment. Une fois qu'une ligne est complètement écrite, elles sont transférées vers le tampon et le processus est répété pour la ligne suivante. Même si vous devez modifier l'état d'un seul pixel, vous devez réécrire toute la ligne.

Ici, la matrice est utilisée à d'autres fins - pour le balayage, donc l'auteur a utilisé les registres à décalage dans ce mode, mais pas le tampon. Nous en envoyons un à la ligne LAT et le contenu du registre à décalage est transféré dans le tampon immédiatement à chaque impulsion sur la ligne CLK. Et après chaque doublage, nous clignotons plusieurs fois une LED dans OE pour lire les résultats par un phototransistor et additionner avec deux piles, comme décrit ci-dessus. Enfin, après avoir déterminé si la LED est bloquée, nous enregistrons le résultat dans le framebuffer fourni dans la bibliothèque.

Lorsque le photogramme entier est numérisé, il suffira de réactiver les interruptions - et l'image du tampon d'image sera écrite dans la matrice de manière standard et affichée, après quoi elle y restera jusqu'au début de la numérisation suivante.

Vidéo:

Source: https://habr.com/ru/post/fr454462/


All Articles