/// <summary> /// Turn the heater on or off. /// </summary> /// <param name="onOrOff">Heater status, true = turn heater on, false = turn heater off.</param> public void Heater(bool onOrOff) { var register = _si7021.ReadRegister(Registers.ReadUserRegister1); register &= 0xfd; if (onOrOff) { register |= 0x02; } _si7021.WriteRegister(Registers.WriteUserRegister1, register); }
/// <summary> /// Force the sensor to make a reading and update the relevanyt properties. /// </summary> public void Read() { var controlRegister = _mag3110.ReadRegister((byte)Registers.Control1); controlRegister |= 0x02; _mag3110.WriteRegister((byte)Registers.Control1, controlRegister); var data = _mag3110.ReadRegisters((byte)Registers.XMSB, 6); X = (short)((data[0] << 8) | data[1]); Y = (short)((data[2] << 8) | data[3]); Z = (short)((data[4] << 8) | data[5]); }
/// <summary> /// Create a new MAG3110 object using the default parameters for the component. /// </summary> /// <param name="interruptPort">Interrupt port used to detect end of conversions.</param> /// <param name="address">Address of the MAG3110 (default = 0x0e).</param> /// <param name="speed">Speed of the I2C bus (default = 400 KHz).</param> public MAG3110(IDigitalInputPort interruptPort = null, byte address = 0x0e, ushort speed = 400) { _mag3110 = new I2cBus(address, speed); var deviceID = _mag3110.ReadRegister((byte)Registers.WhoAmI); if (deviceID != 0xc4) { throw new Exception("Unknown device ID, " + deviceID + " retruend, 0xc4 expected"); } if (interruptPort != null) { _digitalInputPort = interruptPort; _digitalInputPort.Changed += DigitalInputPortChanged; } Reset(); }