German English
Sensoren

BH1710FVC - Relative Beleuchtungsstärke über I2C auslesen

Der auf dem Funkmodul Preon32 eingesetzte Mikrocontroller verfügt über eine Vielzahl von Schnittstellen. Über diese lassen sich sowohl Sensoren als auch Aktoren mit unterschiedlichen Protokollen ansteuern. Für das Funkmodul passend entwickelt bietet VIRTENIO ein Sensormodul VariSen für das Preon32Shuttle an, dass eine Vielzahl von Sensoren für unterschiedliche Messgrößen enthält.
In diesem Beispiel wird ein digitaler Sensor für relative Beleuchtungsstärke (BH1710FVC) an einer der I2C-Schnittstellen betrieben. Der Sensor verfügt über eine ChipSelect-Leitung, um ihn einzuschalten. Der Treiber ermöglicht eine Konfiguration, so dass in diesem Beispiel eine kontinuierliche Erfassung der relativen Beleuchtungsstärke eingestellt ist. Im Programmverlauf werden Temperaturen in einem zeitlichen Abstand von 1000ms erfasst und als reine Sensorwerte als auch in Lux umgerechnete Werte ausgegeben.
/*
 * Copyright (c) 2011., Virtenio GmbH
 * All rights reserved.
 */

package com.virtenio.webdemo;

import com.virtenio.drivers.gpio.NativeGPIO;
import com.virtenio.drivers.i2c.NativeI2C;
import com.virtenio.drivers.sensors.i2c.BH1710FVC;

import java.io.IOException;

public class LightI2C {

    public static void main(String[] args) throws IOException, InterruptedException {

        // The GPIO pin for the DVI signal.
        NativeGPIO dvi = NativeGPIO.getInstance(10);

        // The i2c bus connected to BH1715FVC
        NativeI2C i2c = NativeI2C.getInstance(1);
        i2c.open();

        // initialise BH1715FVC
        BH1710FVC lightsensor = new BH1710FVC(i2c, BH1710FVC.ADDR_L, null, dvi);
        lightsensor.enable(true);
        lightsensor.setPowerMode(BH1710FVC.POWER_ON);
        lightsensor.setSamplingMode(BH1710FVC.CONT_HRES_MODE);

        // capture measured value every 1000ms
        while (true) {
            int raw = lightsensor.getValueLx();
            int lx = BH1710FVC.convertRawToLx(raw);
            System.out.println("BH1710FVC: raw=" + raw + "; " + lx + " [lx]");
            Thread.sleep(1000);
        }
    }
}