Fotograma sem papel fotográfico



O fotograma é uma arte muito interessante, que foi propagandizada em programas de televisão. Você coloca objetos no papel fotográfico, expõe da direção em que a silhueta mais interessante é obtida, manifesta, corrige - e o trabalho está pronto. Mas agora você não pode comprar papel fotográfico a cada passo. Mas e se, depois da fotografia, uma imagem digital for digitalizada?

Para isso, um scanner de feixe de viagem conhecido há muito tempo é adequado; somente hoje, em vez de um CRT, será mais conveniente usar uma matriz de LED nele. É ainda melhor: o tubo tem um ligeiro brilho posterior, os LEDs não. O sensor será o fototransistor TIL78, que é externamente indistinguível do LED (a saída base não é destacada, mas não é necessária). Este fototransistor foi descontinuado, pode ser substituído por muitos similares.

O fototransistor deve ser conectado por um emissor a um fio comum, um coletor à entrada do A5 Arduino UNO, preencher e executar um pequeno esboço de depuração:

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

O programa, em particular, ativa o resistor pull-up embutido no Arduino, portanto não é necessário um externo. No menu IDE do Arduino, selecione Ferramentas - plotadora serial e observe a programação de luzes. Como a base do fototransistor não está indicada, a polaridade de sua conexão é determinada experimentalmente.

Conectamos uma matriz de LED 32x32 com um dispositivo de controle integrado da seguinte maneira:



A matriz não pode ser alimentada por Arduino, ela precisa de uma fonte externa de 5 V, 4 A. Nós a conectamos assim:



Sempre forneça energia primeiro à matriz, depois ao Arduino, remova a energia na ordem inversa. Nós “bombeamos” o IDE do Arduino com as bibliotecas necessárias e verificamos a matriz conforme descrito aqui . Quando funcionar, preencha o esboço para obter os fotogramas.

Nele, você pode tentar variar os 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; 

Os dois primeiros parâmetros permitem ajustar a sensibilidade, o terceiro - alternar entre positivo e negativo e o quarto - ativar a sobreposição de cada imagem subsequente na imagem anterior. Assistindo a um ótimo GIF animado .

A melhor maneira de determinar se a luz de um fototransistor veio de uma matriz foi a seguinte: comparar os resultados com o LED desligado e aceso. Se o LED acima do ponto do objeto que está sendo lido no momento estiver bloqueado, eles serão os mesmos; se não forem bloqueados, serão diferentes. O LED acende e apaga várias vezes alternando a linha OE (habilitação de saída); os resultados da leitura são resumidos em duas baterias: em uma - com o LED desligado, na outra - quando ligada. O resultado da subtração desses valores é comparado com um valor limite.

A matriz contém seis registros de deslocamento correspondentes a linhas inteiras de LEDs vermelho, verde e azul nas metades superior e inferior. A linha LAT (trava) controla um buffer que transfere valores dos registros de turno para os drivers de LED. Quatro linhas de endereço A, B, C, D permitem selecionar a linha ativa nas metades superior e inferior, e a linha OE possibilita desativar e ativar drivers.

Normalmente, os dados anteriores são armazenados em um buffer e enviados para os drivers de LED, enquanto novos dados são gravados nos turnos de registro no momento. Depois que uma linha é completamente gravada, eles são transferidos para o buffer e o processo é repetido para a próxima linha. Mesmo se você precisar alterar o estado de apenas um pixel, precisará reescrever a linha inteira.

Aqui, a matriz é usada para outros propósitos - para a digitalização; portanto, o autor usou os registros de deslocamento neste modo, mas não o buffer. Alimentamos um na linha LAT e o conteúdo do registro de deslocamento é transferido para o buffer imediatamente com cada pulso na linha CLK. E após cada dublagem, piscamos um LED várias vezes no OE para ler os resultados de um fototransistor e adicionar duas baterias, como descrito acima. Finalmente, depois de determinar se o LED está bloqueado, registramos o resultado no buffer de quadros fornecido na biblioteca.

Quando o fotograma inteiro for digitalizado, será suficiente ativar as interrupções novamente - e a imagem do buffer de molduras será gravada na matriz da maneira padrão e exibida, após o que permanecerá lá até o início da próxima digitalização.

Vídeo:

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


All Articles