code: func (w *WiichuckDriver) Start() (err error) {
  	bus := w.GetBusOrDefault(w.connector.GetDefaultBus())
  	address := w.GetAddressOrDefault(wiichuckAddress)
  
  	w.connection, err = w.connector.GetConnection(address, bus)
  	if err != nil {
  		return err
  	}
  
  	go func() {
  		for {
  			if _, err := w.connection.Write([]byte{0x40, 0x00}); err != nil {
  				w.Publish(w.Event(Error), err)
  				continue
  			}
  			time.Sleep(w.pauseTime)
  			if _, err := w.connection.Write([]byte{0x00}); err != nil {
  				w.Publish(w.Event(Error), err)
  				continue
  			}
  			time.Sleep(w.pauseTime)
  			newValue := make([]byte, 6)
  			bytesRead, err := w.connection.Read(newValue)
  			if err != nil {
  				w.Publish(w.Event(Error), err)
  				continue
  			}
  			if bytesRead == 6 {
  				if err = w.update(newValue); err != nil {
  					w.Publish(w.Event(Error), err)
  					continue
  				}
  			}
  			time.Sleep(w.interval)
  		}
  	}()
  	return
  }
docs: // Start initilizes i2c and reads from adaptor
  // using specified interval to update with new value