gobot.io/x/gobot/v2@v2.1.0/drivers/aio/grove_temperature_sensor_driver.go (about)

     1  package aio
     2  
     3  import (
     4  	"time"
     5  
     6  	"gobot.io/x/gobot/v2"
     7  )
     8  
     9  var _ gobot.Driver = (*GroveTemperatureSensorDriver)(nil)
    10  
    11  // GroveTemperatureSensorDriver represents a temperature sensor
    12  // The temperature is reported in degree Celsius
    13  type GroveTemperatureSensorDriver struct {
    14  	*TemperatureSensorDriver
    15  }
    16  
    17  // NewGroveTemperatureSensorDriver returns a new GroveTemperatureSensorDriver with a polling interval of
    18  // 10 Milliseconds given an AnalogReader and pin.
    19  //
    20  // Optionally accepts:
    21  //
    22  //	time.Duration: Interval at which the sensor is polled for new information (given 0 switch the polling off)
    23  //
    24  // Adds the following API Commands:
    25  //
    26  //	"Read"      - See AnalogDriverSensor.Read
    27  //	"ReadValue" - See AnalogDriverSensor.ReadValue
    28  func NewGroveTemperatureSensorDriver(a AnalogReader, pin string, v ...time.Duration) *GroveTemperatureSensorDriver {
    29  	t := NewTemperatureSensorDriver(a, pin, v...)
    30  	ntc := TemperatureSensorNtcConf{TC0: 25, R0: 10000.0, B: 3975} //Ohm, R25=10k
    31  	t.SetNtcScaler(1023, 10000, false, ntc)                        //Ohm, reference value: 1023, series R: 10k
    32  
    33  	d := &GroveTemperatureSensorDriver{
    34  		TemperatureSensorDriver: t,
    35  	}
    36  	d.SetName(gobot.DefaultName("GroveTemperatureSensor"))
    37  
    38  	return d
    39  }
    40  
    41  // Temperature returns the last read temperature from the sensor.
    42  func (t *TemperatureSensorDriver) Temperature() (val float64) {
    43  	return t.Value()
    44  }