Estoy escribiendo un programa para trabajar con un Módulo Linescan TSL1401R-LF. Funciona leyendo en una matriz de píxeles de 1 X 128. Conseguí que la cámara funcione correctamente y mi método readPixels()
puede leer los píxeles con precisión.
Sin embargo, me veo forzado a ejecutar un método timming()
antes de mi método readPixels()
o el programa falla. El timming()
hace prácticamente lo mismo que el método readPixels()
, excepto que no almacena los valores de salida. Cuando lo comento y solo uso readPixels()
, mi imagen se satura y solo obtengo valores de 1023 incluso cuando un objeto oscuro está en el camino de las cámaras.
Esto podría tener más sentido al mirar el código real:
void timming()
{
digitalWriteFast(SI, HIGH);
delayMicroseconds(10);
digitalWriteFast(CLK, HIGH);
delayMicroseconds(10);
digitalWriteFast(SI, LOW);
delayMicroseconds(10);
digitalWriteFast(CLK, LOW);
delayMicroseconds(10);
for(int i = 0; i < 129; i++)
{
digitalWriteFast(CLK, HIGH);
delayMicroseconds(delayTime);
digitalWriteFast(CLK, LOW);
delayMicroseconds(delayTime);
}
}
void readPixels()
{
digitalWriteFast(SI, HIGH);
delayMicroseconds(10);
digitalWriteFast(CLK, HIGH);
delayMicroseconds(10);
digitalWriteFast(SI, LOW);
delayMicroseconds(10);
digitalWriteFast(CLK, LOW);
delayMicroseconds(10);
for(int i = 0; i < 128; i++)
{
digitalWriteFast(CLK, HIGH);
pixelsArray1[i]=analogRead(Cam1Aout);
pixelsArray2[i]=analogRead(Cam2Aout);
pixelsArray3[i]=analogRead(Cam3Aout);
delayMicroseconds(delayTime);
digitalWriteFast(CLK, LOW);
delayMicroseconds(delayTime);
}
digitalWriteFast(CLK, HIGH);
delayMicroseconds(delayTime);
digitalWriteFast(CLK, LOW);
delayMicroseconds(delayTime);
delayMicroseconds(20);
}
TL; DR
Básicamente, pregunto si hay una manera de hacer que mi programa funcione sin tener que usar el método timming()
.
Hoja de datos: enlace