Stap 3: Code:
De python code voor HTS221 kan worden gedownload van onze github archief-ControlEverythingCommunity
Hier is de link voor hetzelfde:
https://github.com/ControlEverythingCommunity/HTS2...
Het gegevensblad van HTS221 kan hier worden gevonden:
http://www.St.com/Web/en/resource/Technical/docume...
We hebben pi4j bibliotheek voor java code gebruikt, de stappen te installeren pi4j op de raspberry pi is hier beschreven:
U kunt ook de code kopiëren vanaf hier, het wordt als volgt gegeven:
Gedistribueerd met een licentie van de vrije wil.
Gebruik het elke manier wilt u, op de winst of het gratis, mits het past in de licenties van de bijbehorende werken.
HTS221
Deze code is ontworpen om te werken met de HTS221_I2CS I2C Mini Module beschikbaar vanaf ControlEverything.com.
https://www.controleverything.com/content/Humidit...
importeren van com.pi4j.io.i2c.I2CBus;
importeren van com.pi4j.io.i2c.I2CDevice;
importeren van com.pi4j.io.i2c.I2CFactory;
importeren van java.io.IOException;
openbare klasse HTS221 {openbare statische nietige leiding (Koord args[]) gooit uitzondering
{
I2CBus maken
I2CBus bus = I2CFactory.getInstance(I2CBus.BUS_1);
Krijg I2C apparaat, HTS221 I2C adres is 0x5F(95)
I2CDevice apparaat = bus.getDevice(0x5F);
Gemiddelde upconfiguratie selecteren register
Gemiddelde monsters van de temperatuur = 16, vochtigheid gemiddelde monsters = 32
Device.write (0x10, (byte) 0x1B);
Besturingselement SELECT register1
Inschakelen, blok gegevens bijwerken, gegevens tarief o/p = 1 Hz
Device.write (0x20, (byte) 0x85);
Thread.Sleep(500);
Kalibratie waarden lezen uit het niet-vluchtig geheugen van het apparaat
Vochtigheid kalibratie waarden
byte [] val = nieuwe byte [2];
Lezen van 1 byte van de gegevens van het adres 0x30(48)
Val [0] = (byte)device.read(0x30);
Lezen van 1 byte van de gegevens van het adres 0x31(49)
Val [1] = (byte)device.read(0x31);
int H0 = (val [0] & 0xFF) / 2;
int H1 = (val [1] & 0xFF) / 2;
Lezen van 1 byte van de gegevens van het adres 0x36(54)
Val [0] = (byte)device.read(0x36);
Lezen van 1 byte van de gegevens van het adres 0x37(55)
Val [1] = (byte)device.read(0x37);
int H2 = ((val [1] & 0xFF) * 256) + (val [0] & 0xFF);
Lezen van 1 byte van de gegevens van het adres 0x3A(58)
Val [0] = (byte)device.read(0x3A);
Lezen van 1 byte van de gegevens van het adres 0x3B(59)
Val [1] = (byte)device.read(0x3B);
int H3 = ((val [1] & 0xFF) * 256) + (val [0] & 0xFF);
Temperatuur kalibratie waarden
Lezen van 1 byte van de gegevens van het adres 0x32(50)
int T0 = ((byte)device.read(0x32) & 0xFF);
Lezen van 1 byte van de gegevens van het adres 0x33(51)
int T1 = ((byte)device.read(0x33) & 0xFF);
Lezen van 1 byte van de gegevens van het adres 0x35(53)
int rauwe = ((byte)device.read(0x35) & 0x0F);
De temperatuur kalibratie-waarden converteren naar 10-bits
T0 = ((raw & 0x03) * 256) + T0;
T1 = ((raw & 0x0C) * 64) + T1;
Lezen van 1 byte van de gegevens van het adres 0x3C(60)
Val [0] = (byte)device.read(0x3C);
Lezen van 1 byte van de gegevens van het adres 0x3D(61)
Val [1] = (byte)device.read(0x3D);
int T2 = ((val [1] & 0xFF) * 256) + (val [0] & 0xFF);
Lezen van 1 byte van de gegevens van het adres 0x3E(62)
Val [0] = (byte)device.read(0x3E);
Lezen van 1 byte van de gegevens van het adres 0x3F(63)
Val [1] = (byte)device.read(0x3F);
int T3 = ((val [1] & 0xFF) * 256) + (val [0] & 0xFF);
Lees 4 bytes aan gegevens
msb Hum, hum, lsb, msb temp temp lsb
[] bytegegevens = nieuwe byte [4]; Device.Read (0x28 | 0x80, gegevens, 0, 4);
De gegevens converteren
int hum = ((gegevens [1] & 0xFF) * 256) + (gegevens [0] & 0xFF);
int. temp = ((gegevens [3] & 0xFF) * 256) + (gegevens [2] & 0xFF);
if(temp > 32767)
{
Temp-= 65536;
}
dubbele vochtigheid = ((1.0 * H1)-(1.0 * H0)) * (1.0 * hum - 1.0 * H2) / (1,0 * H3 - 1.0 * H2) + (1.0 * H0);
dubbele cTemp = ((T1-T0) / 8.0) * (temp - T2) / (T3 - T2) + (T0 / 8.0);
dubbele fTemp = (cTemp * 1.8) + 32;
Uitvoergegevens naar scherm
System.out.printf ("relatieve vochtigheid: %.2f %% RH %n", vocht);
System.out.printf ("temperatuur in Celsius: %.2f C %n", cTemp);
System.out.printf ("temperatuur in Fahrenheit: %.2f F %n", fTemp);
}
}