SmartWheels self-driving race car. Designed for NXP Cup. Uses FRDM-KL25Z, area-scan camera, and simple image processing to detect and navigate any NXP spec track.
Dependencies: TSI USBDevice mbed-dev
Fork of SmartWheels by
Hardwares/Servo.cpp
- Committer:
- hazheng
- Date:
- 2017-02-10
- Revision:
- 16:66c7a09e71ee
- Parent:
- 13:7dcb1642ef99
- Child:
- 20:4cdbd1ae4ead
File content as of revision 16:66c7a09e71ee:
#include "Servo.h" #include "Core.h" #include "PinAssignment.h" #include "SWUSBServer.h" #include "mbed.h" Servo::Servo(SW::Core& core) : m_core(core), m_pwm(PwmOut(PIN_SC_SERVO)) { m_pulseWidth = 0.0015; m_pwm.period(0.020); m_pwm.pulsewidth(m_pulseWidth); } void Servo::Update(float deltaTime) { } void Servo::setAngle(float angle) { if(angle > SERVO_RT * SERVO_MAX_ANGLE) angle = SERVO_RT * SERVO_MAX_ANGLE; else if(angle < SERVO_LF * SERVO_MAX_ANGLE) angle = SERVO_LF * SERVO_MAX_ANGLE; m_pulseWidth = (0.0015 + (0.00001667 * angle)); //char buf[10]; //sprintf(buf, "%f", m_pulseWidth); //m_core.GetUSBServer().PushUnreliableMsg('D', buf); m_pwm.pulsewidth(m_pulseWidth); } /* void Servo::turnRight(float angle) { if(angle > 21) angle = 21; m_pulseWidth = (0.0015 + (0.000017 * angle)); m_pwm.pulsewidth(m_pulseWidth); } void Servo::turnLeft(float angle) { if(angle > 21) angle = 21; m_pulseWidth = (0.0015 - (0.00017 * angle)); m_pwm.pulsewidth(m_pulseWidth); } */