Así que estoy programando un TSL1401R-LF módulo de cámara de exploración de línea que se lee en una matriz de píxeles de 1 x 128. Me he encontrado con un problema con la precisión de la salida. Básicamente, la cámara se vuelve menos precisa a medida que disminuyen los tiempos de retardo. Para la depuración, lo conecté a un osciloscopio y monitoreé los pulsos SI y CLK enviados al reloj, así como las señales analógicas que provenían de él.
Por eso me di cuenta de que la duración de la señal CLK parecía ser de más de 300 microsegundos. Esto es extraño porque mi código establece la duración en 170 microsegundos. Dado que este es mi primer proyecto eléctrico, no estoy seguro de qué hacer con esto, así que espero que alguien pueda ver mi código y una captura de pantalla del osciloscopio y avisarme si lo que estoy viendo es natural o no. .
Aquí está el código:
int delayTime = 170;
void timming()
{
//The timing for the impluses was found through direct experimentation.
//(Meaing that I played around with different delayTimes until the code worked)
digitalWriteFast(SI, HIGH);
delayMicroseconds(delayTime/2);
digitalWriteFast(CLK, HIGH);
delayMicroseconds(delayTime/2);
digitalWriteFast(SI, LOW);
delayMicroseconds(delayTime/2);
digitalWriteFast(CLK, LOW);
delayMicroseconds(delayTime);
for(int i = 0; i < 129; i++)
{
digitalWriteFast(CLK, HIGH);
delayMicroseconds(delayTime);
digitalWriteFast(CLK, LOW);
delayMicroseconds(delayTime);
}
}
Aquí está la captura de pantalla
La línea amarilla es el pulso SI, la luz azul es el pulso CLK y la púrpura es la salida analógica.