Paso 4: Intensidad de la luz medida código de Arduino:
Permite iniciar con el código de arduino ahora.
Mientras que usa el módulo sensor con el arduino, incluimos Wire.h biblioteca. Biblioteca de "Alambre" contiene las funciones que facilitan la comunicación i2c entre el sensor y la placa arduino.
El código de arduino entero se expone a continuación para mayor comodidad del usuario:
#include<Wire.h> // BH1715 I2C address is 0x23(35) #define Addr 0x23 void setup() { // Initialise I2C communication as MASTER Wire.begin(); // Initialise Serial Communication, set baud rate = 9600 Serial.begin(9600); // Start I2C Transmission Wire.beginTransmission(Addr); // Send power on command Wire.write(0x01); // Stop I2C Transmission Wire.endTransmission(); // Start I2C Transmission Wire.beginTransmission(Addr); // Send continuous measurement command Wire.write(0x10); // Stop I2C Transmission Wire.endTransmission(); delay(300); } void loop() { unsigned int data[2]; // Request 2 byte of data Wire.requestFrom(Addr, 2); // Read 2 bytes of data // ALS msb, ALS lsb if(Wire.available() == 2) { data[0] = Wire.read(); data[1] = Wire.read(); } delay(300); //convert the data float luminance = ((data[0] * 256) + data[1]) / 1.20; // Output data to serial monitor Serial.print("Ambient Light Luminance :"); Serial.print(luminance); Serial.println(" lux"); }
La siguiente parte de la comunicación de intiates el i2c del código y de la comunicación serial con la ayuda de la función Wire.begin() y Serial.begin().
// Initialise I2C communication as MASTER Wire.begin(); // Initialise Serial Communication, set baud rate = 9600 Serial.begin(9600); // Start I2C Transmission Wire.beginTransmission(Addr); // Send power on command Wire.write(0x01); // Stop I2C Transmission Wire.endTransmission(); // Start I2C Transmission Wire.beginTransmission(Addr); // Send continuous measurement command Wire.write(0x10); // Stop I2C Transmission Wire.endTransmission(); delay(300);
Intensidad de la luz se mide en la siguiente sección del código.
unsigned int data[2]; // Request 2 byte of data Wire.requestFrom(Addr, 2); // Read 2 bytes of data // ALS msb, ALS lsb if(Wire.available() == 2) { data[0] = Wire.read(); data[1] = Wire.read(); } delay(300); //convert the data float luminance = ((data[0] * 256) + data[1]) / 1.20; // Output data to serial monitor Serial.print("Ambient Light Luminance :"); Serial.print(luminance); Serial.println(" lux");
Todo lo que necesita hacer es grabar el código de arduino y verificar su lectura sobre el puerto serie. La salida se muestra en la foto de arriba también para su referencia.