refactor(pwm steering): asymetric center
This commit is contained in:
		@@ -13,9 +13,9 @@ const (
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
type Steering struct {
 | 
			
		||||
	channel           int
 | 
			
		||||
	leftPWM, rightPWM int
 | 
			
		||||
	dev               *pca9685.Dev
 | 
			
		||||
	channel                      int
 | 
			
		||||
	leftPWM, rightPWM, centerPWM int
 | 
			
		||||
	dev                          *pca9685.Dev
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (s *Steering) SetPulse(pulse int) {
 | 
			
		||||
@@ -26,19 +26,26 @@ func (s *Steering) SetPulse(pulse int) {
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Set percent value steering
 | 
			
		||||
// SetPercentValue Set percent value steering
 | 
			
		||||
func (s *Steering) SetPercentValue(p float32) {
 | 
			
		||||
	// map absolute angle to angle that vehicle can implement.
 | 
			
		||||
	pulse := util.MapRange(float64(p), LeftAngle, RightAngle, float64(s.leftPWM), float64(s.rightPWM))
 | 
			
		||||
 | 
			
		||||
	pulse := s.centerPWM
 | 
			
		||||
	if p > 0 {
 | 
			
		||||
		pulse = util.MapRange(float64(p), 0, RightAngle, float64(s.centerPWM), float64(s.rightPWM))
 | 
			
		||||
	} else if p < 0 {
 | 
			
		||||
		pulse = util.MapRange(float64(p), LeftAngle, 0, float64(s.leftPWM), float64(s.centerPWM))
 | 
			
		||||
	}
 | 
			
		||||
	s.SetPulse(pulse)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func NewSteering(channel, leftPWM, rightPWM int) *Steering {
 | 
			
		||||
func NewSteering(channel, leftPWM, rightPWM, centerPWM int) *Steering {
 | 
			
		||||
	s := Steering{
 | 
			
		||||
		channel:  channel,
 | 
			
		||||
		dev:      device,
 | 
			
		||||
		leftPWM:  leftPWM,
 | 
			
		||||
		rightPWM: rightPWM,
 | 
			
		||||
		channel:   channel,
 | 
			
		||||
		dev:       device,
 | 
			
		||||
		leftPWM:   leftPWM,
 | 
			
		||||
		rightPWM:  rightPWM,
 | 
			
		||||
		centerPWM: centerPWM,
 | 
			
		||||
	}
 | 
			
		||||
	return &s
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user