code: func (a *AnalogSensorDriver) Start() (err error) {
  	var value int = 0
  	go func() {
  		timer := time.NewTimer(a.interval)
  		timer.Stop()
  		for {
  			newValue, err := a.Read()
  			if err != nil {
  				a.Publish(a.Event(Error), err)
  			} else if newValue != value && newValue != -1 {
  				value = newValue
  				a.Publish(a.Event(Data), value)
  			}
  
  			timer.Reset(a.interval)
  			select {
  			case <-timer.C:
  			case <-a.halt:
  				timer.Stop()
  				return
  			}
  		}
  	}()
  	return
  }
docs: // Start starts the AnalogSensorDriver and reads the Analog Sensor at the given interval.
  // Emits the Events:
  //	Data int - Event is emitted on change and represents the current reading from the sensor.
  //	Error error - Event is emitted on error reading from the sensor.