Paso 3: código:
El código de python para HTS221 puede descargarse desde el repositorio de github-ControlEverythingCommunity
Aquí está el enlace para el mismo:
https://github.com/ControlEverythingCommunity/HTS2...
La hoja de datos de HTS221 se puede encontrar aquí:
http://www.St.com/Web/en/Resource/Technical/docume...
Hemos utilizado pi4j biblioteca de código java, los pasos para instalar pi4j en frambuesa pi se describe aquí:
También puede copiar el código desde aquí, se da como sigue:
Distribuido con una licencia de libre albedrío.
Se usa cualquier forma desea, beneficio o libre, siempre cabe en las licencias de sus obras anexas.
HTS221
Este código está diseñado para trabajar con el módulo de Mini de I2C HTS221_I2CS de ControlEverything.com.
https://www.controleverything.com/content/Humidit...
Import com.pi4j.io.i2c.I2CBus;
Import com.pi4j.io.i2c.I2CDevice;
Import com.pi4j.io.i2c.I2CFactory;
importación java.io.IOException;
clase HTS221 {público estático principal vacío (cadena args[]) produce excepción
{
Crear I2CBus
Bus I2CBus = I2CFactory.getInstance(I2CBus.BUS_1);
Obtener dispositivo I2C, HTS221 I2C dirección es 0x5F(95)
Dispositivo de I2CDevice = bus.getDevice(0x5F);
Registro seleccione Configuración promedio
Las muestras promedio temperatura = 16, muestras promedio humedad = 32
Device.Write (0 x 10, (byte) 0x1B);
Seleccione el control register1
Energía en bloque actualización de datos, tarifa de datos o/p = 1 Hz
Device.Write (0 x 20, (byte) 0x85);
Thread.Sleep(500);
Leer los valores de calibración de la memoria no volátil del dispositivo
Valores de calibración de humedad
Byte [] val = new byte [2];
Lee 1 byte de datos de la dirección 0x30(48)
Val [0] = (byte)device.read(0x30);
Lee 1 byte de datos de la dirección 0x31(49)
Val [1] = (byte)device.read(0x31);
int H0 = (val [0] & 0xFF) / 2;
int H1 = (val [1] & 0xFF) / 2;
Lee 1 byte de datos de la dirección 0x36(54)
Val [0] = (byte)device.read(0x36);
Lee 1 byte de datos de la dirección 0x37(55)
Val [1] = (byte)device.read(0x37);
int H2 = ((val [1] & 0xFF) * 256) + (val [0] & 0xFF);
Lee 1 byte de datos de la dirección 0x3A(58)
Val [0] = (byte)device.read(0x3A);
Lee 1 byte de datos de la dirección 0x3B(59)
Val [1] = (byte)device.read(0x3B);
int H3 = ((val [1] & 0xFF) * 256) + (val [0] & 0xFF);
Valores de calibración de temperatura
Lee 1 byte de datos de la dirección 0x32(50)
int T0 = ((byte)device.read(0x32) & 0xFF);
Lee 1 byte de datos de la dirección 0x33(51)
int T1 = ((byte)device.read(0x33) & 0xFF);
Lee 1 byte de datos de la dirección 0x35(53)
int crudo = ((byte)device.read(0x35) & 0x0F);
Convertir los valores de calibración de temperatura a 10 bits
T0 = ((raw & 0x03) * 256) + T0;
T1 = ((raw & 0x0C) * 64) + T1;
Lee 1 byte de datos de la dirección 0x3C(60)
Val [0] = (byte)device.read(0x3C);
Lee 1 byte de datos de la dirección 0x3D(61)
Val [1] = (byte)device.read(0x3D);
int T2 = ((val [1] & 0xFF) * 256) + (val [0] & 0xFF);
Lee 1 byte de datos de la dirección 0x3E(62)
Val [0] = (byte)device.read(0x3E);
Lee 1 byte de datos de la dirección 0x3F(63)
Val [1] = (byte)device.read(0x3F);
int T3 = ((val [1] & 0xFF) * 256) + (val [0] & 0xFF);
Lee 4 bytes de datos
msb de Hum, hum lsb, temp msb, lsb temp
datos de Byte [] = new byte [4]; Device.Read (0x28 | 0 x 80, datos, 0, 4);
Convertir los datos
int hum = ((datos [1] & 0xFF) * 256) + (datos [0] & 0xFF);
int temp = ((datos [3] & 0xFF) * 256) + (datos [2] & 0xFF);
if(Temp > 32767)
{
Temp-= 65536;
}
doble humedad = ((1.0 * H1)-(1.0 * H0)) * (1.0 * hum - 1.0 * H2) / (1.0 * H3 - 1.0 * H2) + (1.0 * H0);
doble cTemp = ((T1-T0) / 8.0) * (temperatura - T2) / (T3 - T2) + (T0 / 8.0);
fTemp doble = (cTemp * 1.8) + 32;
Datos de salida a pantalla
System.out.printf ("humedad relativa: %.2f %% RH %n", humedad);
System.out.printf ("temperatura en grados Celsius: %.2f C %n", cTemp);
System.out.printf ("temperatura en grados Fahrenheit: %.2f F %n", fTemp);
}
}