1. Accueil
  2. Docs
  3. Librairies
  4. i51
  5. i51 arduino

i51 arduino

iggo_i51.cpp

#include <Wire.h>
#include "iggo_i51.h"

iggo_i51::iggo_i51()
{
}

void iggo_i51::begin() {
Wire.begin();
setResolution(14);
}

void iggo_i51::setResolution(uint8_t resolution)
{
SI7051_Register reg;
switch (resolution)
{
case 14:
reg.res1b7 = 0;
reg.res0b0 = 0;
break;
case 13:
reg.res1b7 = 1;
reg.res0b0 = 0;
break;
case 12:
reg.res1b7 = 0;
reg.res0b0 = 1;
break;
case 11:
reg.res0b0 = 1;
reg.res1b7 = 1;
break;
}
Wire.beginTransmission(0x40);
Wire.write(0xE6);
Wire.write(reg.rawData);
Wire.endTransmission();
}

float iggo_i51::readTemp() {
Wire.beginTransmission(0x40);
Wire.write(0xF3);
Wire.endTransmission();
delay(15);
Wire.requestFrom(0x40, (uint8_t)2);
byte msb = Wire.read();
byte lsb = Wire.read();
uint16_t val = msb << 8 | lsb;
return (175.72*val) / 65536 - 46.85;
}
typedef union {
  uint8_t rawData;
  struct {
    uint8_t res0b0: 1;
    uint8_t res1b7: 1;
  };
}
SI7051_Register;

class iggo_i51 {
  public:
	iggo_i51();
  	void begin();
  	void setResolution(uint8_t resolution);
  	float readTemp();