Stap 3: Code:
De code van de arduino voor SI7006-A20 kan worden gedownload van onze github archief-ControlEverythingCommunity
Hier is de link voor hetzelfde:
https://github.com/ControlEverythingCommunity/SI70...
Het gegevensblad van SI7006-A20 kan hier worden gevonden:
https://S3.amazonaws.com/controleverything.Media/c...
We nemen de bibliotheek Wire.h om de I2c communicatie van de sensor met de Arduino board.
U kunt ook de code kopiëren vanaf hier, het wordt als volgt gegeven:
Gedistribueerd met een licentie van de vrije wil.
Gebruik het elke manier wilt u, op de winst of het gratis, mits het past in de licenties van de bijbehorende werken.
SI7006-A20
Deze code is ontworpen om te werken met de SI7006-A20_I2CS I2C Mini Module beschikbaar vanaf ControlEverything.com.
https://www.controleverything.com/content/Humidit...
#include < draad... h >
SI7006-A20 I2C adres is 0x40(64)
#define Addr 0x40
VOID Setup
{
I2C communicatie als MASTER initialiseren
Wire.begin();
Initialiseren van seriële communicatie, set baud-rate = 9600
Serial.begin(9600);
I2C-overdracht starten
Wire.beginTransmission(Addr);
Stop I2C transmissie
Wire.endTransmission();
delay(300);
}
void loop
{
unsigned int gegevens [2];
I2C-overdracht starten
Wire.beginTransmission(Addr);
Vochtigheid meting opdracht, NO houden MASTER verzenden
Wire.write(0xF5);
Stop I2C transmissie
Wire.endTransmission();
delay(500);
2 bytes aan gegevens aanvragen
Wire.requestFrom (Addr, 2);
Lees 2 bytes aan gegevens
vochtigheid msb, vochtigheid lsb
if(Wire.available() == 2)
{
gegevens [0] = Wire.read();
gegevens [1] = Wire.read();
}
De gegevens converteren
zweven vochtigheid = ((gegevens [0] * 256.0) + data[3]);
vochtigheid = ((125 * humidity) / 65536.0) - 6;
I2C-overdracht starten
Wire.beginTransmission(Addr);
Temperatuur meting opdracht, NO houden MASTER verzenden
Wire.write(0xF3);
Stop I2C transmissie
Wire.endTransmission();
delay(500);
2 bytes aan gegevens aanvragen
Wire.requestFrom (Addr, 2);
Lees 2 bytes aan gegevens
Temp msb, temp lsb
if(Wire.available() == 2)
{
gegevens [0] = Wire.read();
gegevens [1] = Wire.read();
}
De gegevens converteren
float temp = ((gegevens [0] * 256.0) + data[1]);
zweven ctemp = ((175.72 * temp) / 65536.0) - 46.85;
zweven ftemp = ctemp * 1.8 + 32;
Uitvoergegevens naar seriële monitor
Serial.Print ("relatieve vochtigheid:");
Serial.Print(Humidity);
Serial.println ("RH %");
Serial.Print ("temperatuur in Celsius:");
Serial.Print(ctemp);
Serial.println ("C");
Serial.Print ("temperatuur in Fahrenheit:");
Serial.Print(ftemp);
Serial.println ("F");
delay(500);
}