Paso 3: código:
El código de arduino 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í:
https://S3.amazonaws.com/controleverything.Media/c...
Incluimos la biblioteca Wire.h para facilitar la comunicación I2c del sensor con la placa Arduino.
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...
#include < Wire.h >
HTS221 I2C dirección es 0x5F
#define Addr 0x5F
void setup()
{
Inicializar la comunicación I2C como maestro
Wire.Begin();
Inicializar la comunicación serial, juego velocidad en baudios = 9600
Serial.Begin(9600);
Iniciar transmisión I2C
Wire.beginTransmission(Addr);
Registro seleccione Configuración promedio
Wire.Write(0x10);
Las muestras promedio temperatura = 256, muestras promedio humedad = 512
Wire.Write(0x1b);
Detener la transmisión I2C
Wire.endTransmission();
Iniciar transmisión I2C
Wire.beginTransmission(Addr);
Seleccione el control register1
Wire.Write(0x20);
Encendido, actualización continua, velocidad de salida de datos = 1 Hz
Wire.Write(0x85);
Detener la transmisión I2C
Wire.endTransmission();
Delay(300);
}
void loop()
{
unsigned int datos [2];
unsigned int val [4];
unsigned int H0, H1, H2, H3, T0, T1, T2, T3, crudo;
Valores de humedad calliberation
para (int i = 0; i < 2; i ++)
{
Iniciar transmisión I2C
Wire.beginTransmission(Addr);
Enviar registro de datos
Wire.Write ((48 + i));
Detener la transmisión I2C
Wire.endTransmission();
Solicitud de 1 byte de datos
Wire.requestFrom (Addr, 1);
Lee 1 byte de datos
if(Wire.Available() == 1)
{
datos [i] = Wire.read();
}
}
Convertir datos de humedad
H0 = datos [0] / 2;
H1 = datos [1] / 2;
para (int i = 0; i < 2; i ++)
{
Iniciar transmisión I2C
Wire.beginTransmission(Addr);
Enviar registro de datos
Wire.Write ((54 + i));
Detener la transmisión I2C
Wire.endTransmission();
Solicitud de 1 byte de datos
Wire.requestFrom(Addr,1);
Lee 1 byte de datos
if(Wire.Available() == 1)
{
datos [i] = Wire.read();
}
}
Convertir datos de humedad
H2 = (datos [1] * 256.0) + datos [0];
para (int i = 0; i < 2; i ++)
{
Iniciar transmisión I2C
Wire.beginTransmission(Addr);
Enviar registro de datos
Wire.Write ((58 + i));
Detener la transmisión I2C
Wire.endTransmission();
Solicitud de 1 byte de datos
Wire.requestFrom(Addr,1);
Lee 1 byte de datos
if(Wire.Available() == 1)
{
datos [i] = Wire.read();
}
}
Convertir datos de humedad
H3 = (datos [1] * 256.0) + datos [0];
Valores de temperatura calliberation
Iniciar transmisión I2C
Wire.beginTransmission(Addr);
Enviar registro de datos
Wire.Write(0x32);
Detener la transmisión I2C
Wire.endTransmission();
Solicitud de 1 byte de datos
Wire.requestFrom(Addr,1);
Lee 1 byte de datos
if(Wire.Available() == 1)
{
T0 = Wire.read();
}
Iniciar transmisión I2C
Wire.beginTransmission(Addr);
Enviar registro de datos
Wire.Write(0x33);
Detener la transmisión I2C
Wire.endTransmission();
Solicitud de 1 byte de datos
Wire.requestFrom(Addr,1);
Lee 1 byte de datos
if(Wire.Available() == 1)
{
T1 = Wire.read();
}
Iniciar transmisión I2C
Wire.beginTransmission(Addr);
Enviar registro de datos
Wire.Write(0x35);
Detener la transmisión I2C
Wire.endTransmission();
Solicitud de 1 byte de datos
Wire.requestFrom (Addr, 1);
Lee 1 byte de datos
if(Wire.Available() == 1)
{
materia prima = Wire.read();
}
materia prima = raw & 0x0F;
Convertir los valores de calliberation de temperatura a 10 bits
T0 = ((raw & 0x03) * 256) + T0;
T1 = ((raw & 0x0C) * 64) + T1;
para (int i = 0; i < 2; i ++)
{
Iniciar transmisión I2C
Wire.beginTransmission(Addr);
Enviar registro de datos
Wire.Write ((60 +));
Detener la transmisión I2C
Wire.endTransmission();
Solicitud de 1 byte de datos
Wire.requestFrom(Addr,1);
Lee 1 byte de datos
if(Wire.Available() == 1)
{
datos [i] = Wire.read();
}
}
Convertir los datos
T2 = (datos [1] * 256.0) + datos [0];
para (int i = 0; i < 2; i ++)
{
Iniciar transmisión I2C
Wire.beginTransmission(Addr);
Enviar registro de datos
Wire.Write ((62 +));
Detener la transmisión I2C
Wire.endTransmission();
Solicitud de 1 byte de datos
Wire.requestFrom(Addr,1);
Lee 1 byte de datos
if(Wire.Available() == 1)
{
datos [i] = Wire.read();
}
}
Convertir los datos
T3 = (datos [1] * 256.0) + datos [0];
Iniciar transmisión I2C
Wire.beginTransmission(Addr);
Enviar registro de datos
Wire.Write(0x28 | 0x80);
Detener la transmisión I2C
Wire.endTransmission();
Solicitud de 4 bytes de datos
Wire.requestFrom(Addr,4);
Lee 4 bytes de datos
humedad msb, lsb de humedad, temp msb, lsb temp
if(Wire.Available() == 4)
{
Val [0] = Wire.read();
Val [1] = Wire.read();
Val [2] = Wire.read();
Val [3] = Wire.read();
}
Convertir los datos
flotador de humedad = (val [1] * 256.0) + val [0];
humedad = ((1.0 * H1)-(1.0 * H0)) * (1.0 * humedad - 1.0 * H2) / (1.0 * H3 - 1.0 * H2) + (1.0 * H0);
int temp = (val [3] * 256) + val [2];
flotador cTemp = (((T1-T0) / 8.0) * (temperatura - T2)) / (T3 - T2) + (T0 / 8.0);
flotador fTemp = (cTemp * 1.8) + 32;
Salida de datos monitor serial
Serial.Print ("humedad relativa:");
Serial.Print(Humidity);
Serial.println ("% RH");
Serial.Print ("temperatura en grados Celsius:");
Serial.Print(cTemp); Serial.println ("C");
Serial.Print ("temperatura en grados Fahrenheit:");
Serial.Print(fTemp);
Serial.println ("F");
Delay(500);
}