Entonces, en mis estudios universitarios, recibimos algunos ejemplos de código fuente que funcionan con un sensor de luz OPT3001. Nuestros estudios no se centran en las tareas de ingeniería en general, pero esta es una conferencia que aborda algunos de los temas de Ingeniería Eléctrica. Estudio Física si alguien se pregunta.
No estoy familiarizado con los protocolos de comunicación de Ingeniería Eléctrica, pero he leído algunas guías en línea sobre la comunicación I2C para ayudarme a entender el código fuente dado. Solo tengo algunos conocimientos de programación de Android, pero también autodidacta.
Me gustaría entender más, es por eso que te pregunto si puedes ayudarme. Solo copiaré una función de todo el código para que no sea demasiado larga y si pueden guiarme con algunos comentarios en cada línea, ¡qué bien estoy muy agradecido!
void UpdateLight(void)
{
uint8_t error = 0;
// start conversion
I2C_Start();
error |= I2C_Write(OPT_ADDR_W);
error |= I2C_Write(OPT_CONFIG_REG);
error |= I2C_Write(OPT_CONFIGURATION_H);
error |= I2C_Write(OPT_CONFIGURATION_L);
I2C_Stop();
// wait for conversion
_delay_ms(150);
// set result register
I2C_Start();
error |= I2C_Write(OPT_ADDR_W);
error |= I2C_Write(OPT_RESULT_REG);
I2C_Stop();
// read data and update scratchpad
I2C_Start();
error |= I2C_Write(OPT_ADDR_R);
if (error == 0)
{
scratchpad[1] = I2C_Read(1);
scratchpad[0] = I2C_Read(0);
}
else
{
// report error value
scratchpad[1] = 0xFF;
scratchpad[0] = 0xFF;
}
I2C_Stop();
}
Algunas definiciones que se utilizan en el código anterior:
volatile uint8_t scratchpad[9] = {0x50, 0x05, 0x0, 0x0, 0x7f, 0xff, 0x00, 0x10, 0x0}; // initial scratchpad
Este no es un requisito para saberlo en mi universidad, es solo un ejercicio en el que lo realiza previamente el profesor y todo lo que necesitamos hacer es usar este sensor de luz para medir la iluminación. Pero quería enseñarme algo más si es posible.
Estoy familiarizado con la Hoja de datos de OPT3001, por lo que entiendo un poco las direcciones necesarias, pero también no completamente.
Aquí hay un enlace a la hoja de datos si alguien necesita: hoja de datos OPT3001
Agradecido por cualquier ayuda / comentario / entrada. Espero que esto aún se aplique a las reglas de StachExchange, no sabía dónde más publicar esta pregunta.