Luftfuktighet mätning med hjälp av HYT939 och Arduino Nano (3 / 4 steg)
Steg 3: Arduino kod för luftfuktighet mätning:
Kan börja med arduino koden nu.
När du använder modulen sensor med arduino, inkluderar vi Wire.h bibliotek. "Wire" bibliotek innehåller funktioner som underlättar i2c kommunikationen mellan sensorn och arduino styrelsen.
Hela arduino koden ges nedan för att underlätta för användaren:
#include < Wire.h >
HYT939 I2C adress är 0x28(40)
#define Addr 0x28
void setup()
{
Initialisera I2C kommunikation som MASTER
Wire.BEGIN();
Initialisera seriell kommunikation
Serial.BEGIN(9600);
Delay(300);
}
void loop()
{
unsigned int data [4].
Starta I2C-överföring
Wire.beginTransmission(Addr);
Skicka normalläge kommando
Wire.write(0x80);
Stoppa I2C sändningen
Wire.endTransmission();
Delay(300);
Begäran 4 byte data
Wire.requestFrom (Addr, 4);
Läs 4 byte data
fuktighet msb, luftfuktighet lsb, temp msb, temp lsb
IF(Wire.available() == 4)
{
data [0] = Wire.read();
data [1] = Wire.read();
data [2] = Wire.read();
data [3] = Wire.read();
Konvertera data till 14-bitar
flyta fuktighet = (((0x3F & data [0]) * 256,0) + data[1]) * (100,0 / 16383.0);
flyta cTemp = (((data [2] * 256,0) + (data [3] & 0xFC)) / 4) * (165.0 / 16383.0) - 40;
flyta fTemp = (cTemp * 1,8) + 32;
Utdata till seriell monitor
Serial.Print ("relativ luftfuktighet:");
Serial.Print(humidity);
Serial.println ("% RH").
Serial.Print ("temperaturen i Celsius:");
Serial.Print(cTemp);
Serial.println ("C").
Serial.Print ("temperaturen i Fahrenheit:");
Serial.Print(fTemp);
Serial.println "F".
}
Delay(300);
}
I tråd bibliotek används Wire.write() och Wire.read() för att skriva kommandon och läsa sensor utdata. Efter del av koden visar läsningen av sensordata.
Läs 4 byte data
fuktighet msb, luftfuktighet lsb, temp msb, temp lsb
IF(Wire.available() == 4)
{
data [0] = Wire.read();
data [1] = Wire.read();
data [2] = Wire.read();
data [3] = Wire.read();
}
Sensor utdata visas i bilden ovan.