Luftfuktighet mätning med hjälp av HYT939 och partikel Photon (3 / 4 steg)
Steg 3: Kod för luftfuktighet mätning:
Kan börja med partikel koden nu.
När du använder modulen sensor med arduino, inkluderar vi application.h och spark_wiring_i2c.h bibliotek. "application.h" och spark_wiring_i2c.h bibliotek innehåller funktioner som underlättar i2c kommunikationen mellan sensorn och partikeln.
Hela partikel koden ges nedan för att underlätta för användaren:
#include < application.h >
#include < spark_wiring_i2c.h >
HYT939 I2C adress är 0x28(40)
#define Addr 0x28
dubbel fuktighet = 0,0, cTemp = 0,0, fTemp = 0,0;
void setup()
{
Variabeln
Particle.Variable ("i2cdevice", "HYT939");
Particle.Variable ("cTemp", cTemp);
Particle.Variable ("fukt", fuktighet);
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 av data från enheten
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
fukt = (((0x3F & data [0]) * 256,0) + data[1]) * (100,0 / 16383.0);
cTemp = (((data [2] * 256,0) + (data [3] & 0xFC)) / 4) * (165.0 / 16383.0) - 40;
fTemp = (cTemp * 1,8) + 32;
Utdata till dashboard
Particle.publish ("relativa luftfuktigheten är:", String(humidity));
Delay(1000);
Particle.publish ("temperaturen i Celsius:", String(cTemp));
Delay(1000);
Particle.publish ("temperaturen i Fahrenheit:", String(fTemp));
Delay(1000);
}
Particle.Variable() funktion skapar variabler för att lagra utdata från sensorn och Particle.publish() funktion visar utdata på instrumentbrädan av webbplatsen.
Sensor utdata visas i bilden ovan som referens.