52 #if defined SERVO_HARDWARE_PWM 53 servo =
new PwmOut(pin);
54 #elif defined SERVO_SOFTWARE_PWM 77 m_minAngle = min + m_correctionAngle;
78 m_maxAngle = max + m_correctionAngle;
89 m_minAngle = 90 - diffAngle + m_correctionAngle;
90 m_maxAngle = 90 + diffAngle + m_correctionAngle;
100 m_lastAngle = nxpcup::clamp<uint8_t>(degree + m_correctionAngle, m_minAngle, m_maxAngle);
101 uint16_t positionInMicrosecond = 0;
102 if (m_isReverseSignal) {
103 positionInMicrosecond = m_maxUs - (m_lastAngle * usDiff) / 180;
105 positionInMicrosecond = m_minUs + (m_lastAngle * usDiff) / 180;
107 setMicrosecond(positionInMicrosecond);
118 setAngle(90 + ((reverse ? -1 : 1) * degree));
124 uint8_t
angle()
const {
return m_lastAngle; }
149 void setMicrosecond(uint16_t microsecond)
151 servo->pulsewidth_us(microsecond);
154 #if defined SERVO_HARDWARE_PWM 156 #elif defined SERVO_SOFTWARE_PWM 160 uint8_t m_minAngle = 0;
161 uint8_t m_maxAngle = 180;
162 int8_t m_correctionAngle = 0;
163 uint8_t m_lastAngle = 0;
164 bool m_isReverseSignal =
false;
166 const uint32_t m_minUs;
167 const uint32_t m_maxUs;
168 const uint32_t usDiff = m_maxUs - m_minUs;
static constexpr uint16_t CENTER_US
Definition: Servo.h:24
uint8_t angle() const
Definition: Servo.h:124
PinName pin
Definition: Servo.h:12
bool isReverseSignal
Definition: Servo.h:16
int8_t correctionAngle
Definition: Servo.h:13
Definition: BorderDetector.h:6
uint32_t minUs
Definition: Servo.h:20
int getMaxAngle() const
Definition: Servo.h:143
uint8_t servoMinMaxAngle
Definition: Servo.h:14
Servo(PinName pin, uint16_t minUs=1000, uint16_t maxUs=2000)
Definition: Servo.h:48
uint32_t maxUs
Definition: Servo.h:21
void setAngleCenter(int8_t degree, bool reverse=false)
Definition: Servo.h:116
void setAngleMinMax(uint8_t min, uint8_t max)
Definition: Servo.h:75
void setAngleMinMaxCenter(uint8_t diffAngle)
Definition: Servo.h:87
int8_t defaultCenterAngle
Definition: Servo.h:15
void setAngleCorrection(int8_t angle)
Definition: Servo.h:67
static constexpr uint16_t PERIOD_US
Definition: Servo.h:23
int8_t centerAngle() const
Definition: Servo.h:129
Servo(Config config)
Definition: Servo.h:32
void setAngle(uint8_t degree)
Definition: Servo.h:98
int getMinAngle() const
Definition: Servo.h:136