Schritt 3: Code:
Der Arduino Code für HTS221 kann heruntergeladen werden von unserem Github Repository-ControlEverythingCommunity
Hier ist der Link für das gleiche:
https://github.com/ControlEverythingCommunity/HTS2...
Das Datenblatt des HTS221 finden Sie hier:
https://S3.amazonaws.com/controleverything.Media/c...
Wir zählen Bibliothek Wire.h, die I2c Kommunikation des Sensors mit dem Arduino-Board zu erleichtern.
Sie können auch kopieren Sie den Code von hier, es ist wie folgt gegeben:
Mit einer freien Lizenz vertrieben.
Verwenden Sie es wie Sie wollen, profitieren oder frei, vorausgesetzt, es passt in die Lizenzen für die damit verbundenen arbeiten.
HTS221
Dieser Code dient zur Arbeit mit dem HTS221_I2CS I2C-Mini-Modul von ControlEverything.com zur Verfügung.
https://www.controleverything.com/Content/Humidit...
#include < Wire.h >
HTS221 I2C Adresse ist 0x5F
#define Addr 0x5F
void setup()
{
I2C Kommunikation als MASTER zu initialisieren
Wire.Begin();
Initialisieren, seriellen Kommunikation, eingestellte Baudrate = 9600
Serial.Begin(9600);
I2C Übertragung starten
Wire.beginTransmission(Addr);
Wählen Sie durchschnittliche Konfigurations-register
Wire.Write(0x10);
Durchschnittliche Temperatur Proben = 256, durchschnittliche Luftfeuchtigkeit Proben = 512
Wire.Write(0x1B);
I2C Übertragung stoppen
Wire.endTransmission();
I2C Übertragung starten
Wire.beginTransmission(Addr);
SELECT-Steuerelement register1
Wire.Write(0x20);
Power ON, ständige Aktualisierung, Ausgabe Datenrate = 1 Hz
Wire.Write(0x85);
I2C Übertragung stoppen
Wire.endTransmission();
Delay(300);
}
void loop()
{
unsigned Int Daten [2];
unsigned Int Val [4];
unsigned Int H0, H1, H2, H3, T0, T1, T2, T3, roh;
Feuchte Calliberation Werte
für (Int ich = 0; ich < 2; i ++)
{
I2C Übertragung starten
Wire.beginTransmission(Addr);
Senden Sie Datenregister
Wire.Write ((48 + i));
I2C Übertragung stoppen
Wire.endTransmission();
1 Byte an Daten anfordern
Wire.requestFrom (Addr, 1);
1 Byte Daten lesen
If(Wire.available() == 1)
{
Daten [i] = Wire.read();
}
}
Feuchtigkeit-Daten konvertieren
H0 = Data [0] / 2;
H1 = Daten [1] / 2;
für (Int ich = 0; ich < 2; i ++)
{
I2C Übertragung starten
Wire.beginTransmission(Addr);
Senden Sie Datenregister
Wire.Write ((54 + i));
I2C Übertragung stoppen
Wire.endTransmission();
1 Byte an Daten anfordern
Wire.requestFrom(Addr,1);
1 Byte Daten lesen
If(Wire.available() == 1)
{
Daten [i] = Wire.read();
}
}
Feuchtigkeit-Daten konvertieren
H2 = (Daten [1] * 256.0) + Data [0];
für (Int ich = 0; ich < 2; i ++)
{
I2C Übertragung starten
Wire.beginTransmission(Addr);
Senden Sie Datenregister
Wire.Write ((58 + i));
I2C Übertragung stoppen
Wire.endTransmission();
1 Byte an Daten anfordern
Wire.requestFrom(Addr,1);
1 Byte Daten lesen
If(Wire.available() == 1)
{
Daten [i] = Wire.read();
}
}
Feuchtigkeit-Daten konvertieren
H3 = (Daten [1] * 256.0) + Data [0];
Calliberation Temperaturwerte
I2C Übertragung starten
Wire.beginTransmission(Addr);
Senden Sie Datenregister
Wire.Write(0x32);
I2C Übertragung stoppen
Wire.endTransmission();
1 Byte an Daten anfordern
Wire.requestFrom(Addr,1);
1 Byte Daten lesen
If(Wire.available() == 1)
{
T0 = Wire.read();
}
I2C Übertragung starten
Wire.beginTransmission(Addr);
Senden Sie Datenregister
Wire.Write(0x33);
I2C Übertragung stoppen
Wire.endTransmission();
1 Byte an Daten anfordern
Wire.requestFrom(Addr,1);
1 Byte Daten lesen
If(Wire.available() == 1)
{
T1 = Wire.read();
}
I2C Übertragung starten
Wire.beginTransmission(Addr);
Senden Sie Datenregister
Wire.Write(0x35);
I2C Übertragung stoppen
Wire.endTransmission();
1 Byte an Daten anfordern
Wire.requestFrom (Addr, 1);
1 Byte Daten lesen
If(Wire.available() == 1)
{
Roh = Wire.read();
}
RAW = roh & 0x0F;
Konvertieren Sie die Temperaturwerte Calliberation in 10-Bit
T0 = ((raw & 0x03) * 256) + T0;
T1 = ((raw & 0x0C) * 64) + T1;
für (Int ich = 0; ich < 2; i ++)
{
I2C Übertragung starten
Wire.beginTransmission(Addr);
Senden Sie Datenregister
Wire.Write ((60 + i));
I2C Übertragung stoppen
Wire.endTransmission();
1 Byte an Daten anfordern
Wire.requestFrom(Addr,1);
1 Byte Daten lesen
If(Wire.available() == 1)
{
Daten [i] = Wire.read();
}
}
Konvertieren Sie die Daten
T2 = (Daten [1] * 256.0) + Data [0];
für (Int ich = 0; ich < 2; i ++)
{
I2C Übertragung starten
Wire.beginTransmission(Addr);
Senden Sie Datenregister
Wire.Write ((62 + i));
I2C Übertragung stoppen
Wire.endTransmission();
1 Byte an Daten anfordern
Wire.requestFrom(Addr,1);
1 Byte Daten lesen
If(Wire.available() == 1)
{
Daten [i] = Wire.read();
}
}
Konvertieren Sie die Daten
T3 = (Daten [1] * 256.0) + Data [0];
I2C Übertragung starten
Wire.beginTransmission(Addr);
Senden Sie Datenregister
Wire.Write(0x28 | 0x80);
I2C Übertragung stoppen
Wire.endTransmission();
Antrag 4 Bytes der Daten
Wire.requestFrom(Addr,4);
4 Bytes der Daten lesen
Luftfeuchtigkeit Msb, Lsb Feuchtigkeit, temp Msb, temp lsb
If(Wire.available() == 4)
{
Val [0] = Wire.read();
Val [1] = Wire.read();
Val [2] = Wire.read();
Val [3] = Wire.read();
}
Konvertieren Sie die Daten
Luftfeuchtigkeit zu schweben = (Val [1] * 256.0) + Val [0];
Luftfeuchtigkeit = ((1.0 * H1)-(1.0 * H0)) * (1,0 * Feuchte - 1,0 * H2) / (1,0 * H3 - 1,0 * H2) + (1.0 * H0);
Int Temp = (Val [3] * 256) + Val [2];
cTemp schweben = (((T1-T0) / 8,0) * (Temp - T2)) / (T3 - T2) + (T0 / 8,0);
Float fTemp = (cTemp * 1,8) + 32;
Ausgabedaten zu seriellen monitor
Serial.Print ("Relative Luftfeuchtigkeit:");
Serial.Print(Humidity);
Serial.println ("% RH");
Serial.Print ("Temperatur in Grad Celsius:");
Serial.Print(cTemp); Serial.println ("C");
Serial.Print ("Temperatur in Fahrenheit:");
Serial.Print(fTemp);
Serial.println ("F");
Delay(500);
}