Stap 4: Licht intensiteit meting met behulp van java-code:
Het voordeel van het gebruik van de raspberry pi is dat biedt u de flexibiliteit van de programmeertaal waarin u wenst te programmeren van de Raad van bestuur om de interface van de sensor mee. Gebruik te maken van dit voordeel van dit forum, tonen wij hier de programmering in de Java. De code van Java voor BH1715 kan worden gedownload van onze github Gemeenschap die Controle alles Gemeenschap.
Evenals voor het gemak van de gebruikers, we zijn uit te leggen de code hier ook:
Als de eerste stap van codering wilt u downloaden van de pi4j-bibliotheek in het geval van java, omdat deze bibliotheek de functies die worden gebruikt in de code ondersteunt. Dus, om te downloaden van de bibliotheek kunt u de volgende link bezoeken:
U kunt ook de werkende java code voor deze sensor vanaf hier:
// Distributed with a free-will license.// Use it any way you want, profit or free, provided it fits in the licenses of its associated works.// BH1715// This code is designed to work with the BH1715_I2CS I2C Mini Module available from ControlEverything.com.// https://www.controleverything.com/content/Light?s...import com.pi4j.io.i2c.I2CBus;import com.pi4j.io.i2c.I2CDevice;import com.pi4j.io.i2c.I2CFactory;import java.io.IOException;public class BH1715{public static void main(String args[]) throws Exception { // Create I2C bus I2CBus bus = I2CFactory.getInstance(I2CBus.BUS_1); // Get I2C device, BH1715 I2C address is 0x23(35) I2CDevice device = bus.getDevice(0x23);// Send power on command device.write((byte)0x01); // Send continuous measurement commanddevice.write((byte)0x10); Thread.sleep(500); // Read 2 bytes of data // luminance msb, luminance lsb byte[] data = new byte[2]; device.read(data, 0, 2); // Convert data double luminance = ((data[0] & 0xFF) * 256 + (data[1] & 0xFF)) / 1.20; // Output data to screen System.out.printf("Ambient Light Luminance : %.2f lux %n", luminance); }}
De bibliotheek die vergemakkelijkt de i2c communicatie tussen de sensor en de Raad van bestuur is pi4j, zijn verschillende pakketten, I2CBus, I2CDevice en I2CFactory helpen de verbinding tot stand brengen.
import com.pi4j.io.i2c.I2CBus;import com.pi4j.io.i2c.I2CDevice; import com.pi4j.io.i2c.I2CFactory; import java.io.IOException;
Dit deel van de code maakt de sensor voor meting van de lichtintensiteit te bedienen door het schrijven van de respectieve opdrachten met behulp van de functie van write() en vervolgens de gegevens worden gelezen met behulp van de functie read().
device.write((byte)0x01); // power on command device.write((byte)0x10); // continuous measurement command byte[] data = new byte[2]; // Read 2 bytes of datadevice.read(data, 0, 2);
De gegevens ontvangen van de sensor wordt geconverteerd naar de juiste indeling met behulp van de volgende:
double luminance = ((data[0] & 0xFF) * 256 + (data[1] & 0xFF)) / 1.20;
De uitvoer wordt afgedrukt met de System.out.println () functie, in de volgende indeling.
System.out.printf("Ambient Light Luminance : %.2f lux %n", luminance);
De output van de sensor wordt weergegeven in de afbeelding hierboven.