Luftfuktighet mätning med hjälp av HYT939 och Raspberry Pi (3 / 4 steg)
Steg 3: Javakod för luftfuktighet mätning:
Fördelen med att använda raspberry pi är som ger dig flexibiliteten i det programmera språket som du vill programmera styrelsen för att gränssnittet sensorn med det. Utnyttja denna fördel av denna styrelse, visar vi här sin programmering i Java. Java-kod för HYT939 kan hämtas från vår github gemenskap som är Kontroll allt gemenskap.
Samt för att underlätta för användarna, förklarar vi koden här också:
Som ett första steg av kodning måste du ladda ner pi4j biblioteket vid java, eftersom detta bibliotek stöder funktioner används i koden. Så, om du vill ladda ner biblioteket kan du besöka följande länk:
Du kan också kopiera arbetar Javakod för denna sensor härifrån:
import com.pi4j.io.i2c.I2CBus;
import com.pi4j.io.i2c.I2CDevice;
import com.pi4j.io.i2c.I2CFactory;
import java.io.IOException;
allmän klass HYT939
{
public static void main (String args[]) kastar undantag
{
Skapa I2CBus
I2CBus buss = I2CFactory.getInstance(I2CBus.BUS_1);
Får I2C enheten, HYT939 I2C adress är 0x28(40)
I2CDevice device = bus.getDevice(0x28);
Skicka normalläge kommando
Device.write((byte)0x80);
Thread.Sleep(500);
Läs 4 byte data
fuktighet msb, luftfuktighet lsb, temp msb, temp lsb
byte [] data = nya byte [4].
Device.Read(data,0,4);
Konvertera data till 14-bitar
dubbel fuktighet = (((0x3F & data [0]) * 256) + (data [1] & 0xFF)) * (100,0 / 16383.0);
Double cTemp = (((data [2] & 0xFF) * 256) + (data [3] & 0xFC)) / 4) * (165.0 / 16383.0) - 40;
Double fTemp = (cTemp * 1,8) + 32;
Utdata till skärm
System.out.printf ("relativa luftfuktigheten är: %.2f %% RH %n", fuktighet);
System.out.printf ("temperaturen i Celsius är: %.2f C %n", cTemp);
System.out.printf ("temperaturen i Fahrenheit är: %.2f F %n", fTemp);
}
}
Biblioteket som underlättar i2c kommunikation mellan sensorn och styrelsen är pi4j, dess olika paket I2CBus, I2CDevice och I2CFactory hjälp för att upprätta anslutningen.
import com.pi4j.io.i2c.I2CBus;
import com.pi4j.io.i2c.I2CDevice;
import com.pi4j.io.i2c.I2CFactory;
import java.io.IOException;
anropa och read() funktioner används för att skriva några speciella kommandon till sensorn för att få det att arbeta i ett visst läge och läsa sensorn utgång respektive. Efter del av koden illustrerar användningen av dessa funktioner.
Skicka normalläge kommando
Device.write((byte)0x80);
Thread.Sleep(500);
Läs 4 byte data
fuktighet msb, luftfuktighet lsb, temp msb, temp lsb
byte [] data = nya byte [4].
Device.Read(data,0,4);
Produktionen av sensorn visas också på bilden ovan.