Craig Evans
/
MeArm_Servo_Calibration
Servo calibration code
main.cpp
- Committer:
- eencae
- Date:
- 2017-07-11
- Revision:
- 1:a9852a93d829
- Parent:
- 0:68133f5cdfa0
File content as of revision 1:a9852a93d829:
/* MeArm Servo Calibration (c) Dr Craig A. Evans, University of Leeds July 2017 */ #include "mbed.h" // pins for potentiometers AnalogIn m_pot(p17); AnalogIn l_pot(p18); AnalogIn r_pot(p19); AnalogIn c_pot(p20); // PWM pins for servos PwmOut m_servo(p21); PwmOut l_servo(p22); PwmOut r_servo(p23); PwmOut c_servo(p24); int main() { m_servo.period_ms(20); // 20 ms = 50 Hz // all PWM channels share the same period and so only need to set one of them // keep looping forever while(1) { // read val in range 0.0 to 1.0 float m_pot_val = m_pot.read(); // create a pulse-width value in range 400 to 3000us int m_pot_pulse_us = int(400.0 + m_pot_val*2600.0); m_servo.pulsewidth_us(m_pot_pulse_us); // repeat for other servos float l_pot_val = l_pot.read(); int l_pot_pulse_us = int(400.0 + l_pot_val*2600.0); l_servo.pulsewidth_us(l_pot_pulse_us); float r_pot_val = r_pot.read(); int r_pot_pulse_us = int(400.0 + r_pot_val*2600.0); r_servo.pulsewidth_us(r_pot_pulse_us); float c_pot_val = c_pot.read(); int c_pot_pulse_us = int(400.0 + c_pot_val*2600.0); c_servo.pulsewidth_us(c_pot_pulse_us); // print the values to the PC terminal printf("M=%i L=%i R=%i C=%i\n",m_pot_pulse_us,l_pot_pulse_us,r_pot_pulse_us,c_pot_pulse_us); // delay as we don't want to update the servos too often wait_ms(200); } }