
Det som er kjempeviktig med denne sensoren er at den kun skal ha 3.3v.
Koble opp slik:
| Kort | 3.3v | GND | SCL | SDA |
| UNO | 3.3v | GND | A5 | A4 |
| Mega | 3.3v | GND | 21 | 20 |
| Nano | 3.3v | GND | A5 | A4 |
Se denne siden for hvor du kan kjøpe delene.
Her er kildekoden til et enkelt program:
/* www.hushagehobby.no
* Måling av luftfuktighet og temperatur - I2C
* 3/5-2017
*
* Test Arduino Mega - HDC1080
*/
#include <Wire.h>
#define Adr_luftfukt 0x40 //adressen til luftfuktighetsmåleren
#define Adr_temp 0x00 // underadresse for å hente ut temperatur
#define Adr_fukt 0x01 // underadresse for å hente ut luftfukt
#define Adr_config 0x02 // underadresse ved konfigurering av annet en standard
#define Adr_SN1 0xFB // underadresse for del en av s/n
#define Adr_SN2 0xFC // underadresse for del to av s/n
#define Adr_SN3 0xFD // underadresse for del tre av s/n
#define Adr_ProdID 0xFE // underadresse for produsent ID
#define Adr_SensID 0xFF // underadresse for sensortype
int Verdi; //Verdien som leses av I2C sub-adressen
void setup() {
Serial.begin(9600);
Serial.println("Starter opp Luftfuktighetsmåler");
Wire.begin();
Wire.beginTransmission(Adr_luftfukt);
Wire.endTransmission();
Serial.print("Produsent nr:");
lesSensor8(Adr_ProdID,Verdi); //Les sensor - Produsent ID (8bit)
Serial.println(Verdi,HEX); //konverterer desimaltall til Hexadesimal
Serial.print("Type:");
lesSensor8(Adr_SensID,Verdi); // Les sensor - Type
Serial.println(Verdi,HEX); //konverterer desimaltall til Hexadesimal
Serial.print("S/N:");
lesSensor8(Adr_SN1,Verdi); // Les sensor - Første del av S/N
Serial.print(Verdi,HEX); //konverterer desimaltall til Hexadesimal
lesSensor8(Adr_SN2,Verdi);// Les sensor - Andre del av S/N
Serial.print(Verdi,HEX); //konverterer desimaltall til Hexadesimal
lesSensor8(Adr_SN3,Verdi);// Les sensor - Tredje del av S/N
Serial.println(Verdi,HEX); //konverterer desimaltall til Hexadesimal
Serial.println("");
Serial.println("****************************************************************************************************");
Serial.println("");
}
void loop() {
lesSensor8(Adr_temp,Verdi);
Serial.print("Temp: ");
float temp_C = (Verdi);
temp_C /= 65536; // Utregning i henhold til datablad
temp_C *= 165;
temp_C -= 40;
Serial.print(temp_C);
Serial.println("*C");
lesSensor8(Adr_fukt,Verdi);
Serial.print("Luftfuktighet: ");
float humidity = (Verdi);
humidity /= 65536; // Utregning i henhold til datablad
humidity *= 100;
Serial.print(humidity);
Serial.println("%");
delay(1000);
}
void lesSensor8(int subAdresse, int& r){
Wire.beginTransmission(Adr_luftfukt); // Begynn kommunikasjon med sensors
Wire.write(subAdresse); // Be om informasjon fra en sub-adresse
Wire.endTransmission(); // Sier man er ferdig med å be om informasjon
delay(70); // vent litt slik sensor får klargjør seg
Wire.requestFrom(Adr_luftfukt,2); //to bytes
r = Wire.read();
r <<= 8; // Bit shift - endrer hvilken bit i en byte som skal ha tilgang til. << *(venstre) indikerer hvilken vei (>> høyre)
r |= Wire.read(); // slå sammen på bit nivå
}
Det som kan avleses i «Seriell Overvåker» er da :