Étape 3: Code :
Le code python pour HTS221 peut être téléchargé depuis notre dépôt github-ControlEverythingCommunity
Voici le lien pour la même chose :
https://github.com/ControlEverythingCommunity/HTS2...
Le datasheet du HTS221 peut être trouvé ici :
http://www.St.com/Web/en/Resource/Technical/DOCUME...
Nous avons utilisé pi4j bibliothèque de code java, les étapes pour installer pi4j sur pi framboise est décrit ici :
Vous pouvez également copier le code d’ici, il est affecté comme suit :
Distribué avec une licence libre-arbitre.
Utilisez-le toute façon vous voulez, Profitez ou libre, autant il s’intègre dans les licences de ses ouvrages connexes.
HTS221
Copiez le code suivant est conçu pour fonctionner avec le Module HTS221_I2CS I2C Mini, disponible 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 ;
import java.io.IOException ;
public class HTS221 {public Shared Sub main (chaîne args[]) lève Exception
{
Créer I2CBus
I2CBus bus = I2CFactory.getInstance(I2CBus.BUS_1) ;
Obtenez le périphérique I2C, I2C HTS221 adresse est 0x5F(95)
Dispositif de I2CDevice = bus.getDevice(0x5F) ;
Sélectionnez configuration moyenne Registre
Échantillons de moyenne température = 16, échantillons moyen humidité = 32
Device.Write (0 x 10, (octet) 0x1B) ;
Sélectionnez contrôle registre1
Mise sous tension, mise à jour de données bloc, données taux o/p = 1 Hz
Device.Write (0 x 20, (octets) 0x85) ;
Thread.Sleep(500) ;
Lire des valeurs d’étalonnage de la mémoire non volatile de l’appareil
Valeurs de Calibration d’humidité
Byte [] val = new ubyte [2] ;
Lire 1 octet des données d’adresse 0x30(48)
Val [0] = (byte)device.read(0x30) ;
Lire 1 octet des données d’adresse 0x31(49)
Val [1] = (byte)device.read(0x31) ;
int H0 = (val [0] & 0xFF) / 2 ;
int H1 = (val [1] & 0xFF) / 2 ;
Lire 1 octet des données d’adresse 0x36(54)
Val [0] = (byte)device.read(0x36) ;
Lire 1 octet des données d’adresse 0x37(55)
Val [1] = (byte)device.read(0x37) ;
int H2 = ((val [1] & 0xFF) * 256) + (val [0] & 0xFF) ;
Lire 1 octet des données d’adresse 0x3A(58)
Val [0] = (byte)device.read(0x3A) ;
Lire 1 octet des données d’adresse 0x3B(59)
Val [1] = (byte)device.read(0x3B) ;
int H3 = ((val [1] & 0xFF) * 256) + (val [0] & 0xFF) ;
Valeurs d’étalonnage de température
Lire 1 octet des données d’adresse 0x32(50)
int T0 = ((byte)device.read(0x32) & 0xFF) ;
Lire 1 octet des données d’adresse 0x33(51)
int T1 = ((byte)device.read(0x33) & 0xFF) ;
Lire 1 octet des données d’adresse 0x35(53)
int brute = ((byte)device.read(0x35) & 0x0F) ;
Convertir les valeurs d’étalonnage de température en 10 bits
T0 = ((raw & 0x03) * 256) + T0 ;
T1 = ((raw & 0x0C) * 64) + T1 ;
Lire 1 octet des données d’adresse 0x3C(60)
Val [0] = (byte)device.read(0x3C) ;
Lire 1 octet des données d’adresse 0x3D(61)
Val [1] = (byte)device.read(0x3D) ;
int T2 = ((val [1] & 0xFF) * 256) + (val [0] & 0xFF) ;
Lire 1 octet des données d’adresse 0x3E(62)
Val [0] = (byte)device.read(0x3E) ;
Lire 1 octet des données d’adresse 0x3F(63)
Val [1] = (byte)device.read(0x3F) ;
int T3 = ((val [1] & 0xFF) * 256) + (val [0] & 0xFF) ;
Lire les 4 octets de données
msb de Hum, hum lsb, msb temp, temp lsb
données de Byte [] = new ubyte [4] ; Device.Read (0 x 28 | 0 x 80, données, 0, 4) ;
Convertir les données
hum int = ((données [1] & 0xFF) * 256) + (data [0] & 0xFF) ;
int temp = ((données [3] & 0xFF) * 256) + (données [2] & 0xFF) ;
if(Temp > 32767)
{
Temp-= 65536 ;
}
double humidité = ((1.0 * H1)-(1.0 * H0)) * (1.0 * hum - 1.0 * H2) / (1.0 * H3 - 1.0 * H2) + (1.0 * H0) ;
double MTET = ((T1-T0) / 8,0) * (temp - T2) / (T3 - T2) + (T0 / 8,0) ;
double fTemp = (MTET * 1,8) + 32 ;
Données de sortie à l’écran
System.out.printf ("hygrométrie : %.2f %% RH %n », humidité) ;
System.out.printf ("température en degrés Celsius : %.2f C %n", PMTET) ;
System.out.printf ("température en degrés Fahrenheit : %.2f F %n", fTemp) ;
}
}