Practical Robotics Modular Robot Library
motors.cpp
- Committer:
- jah128
- Date:
- 2016-11-26
- Revision:
- 0:8a2dd255c508
- Child:
- 3:8762f6b2ea8d
File content as of revision 0:8a2dd255c508:
#include "robot.h" DigitalOut nsleep(p7); DigitalIn nfault_l(p8,PullUp); DigitalIn nfault_r(p11,PullUp); AnalogIn motor_vprop_l(p19); AnalogIn motor_vprop_r(p20); PwmOut enable_l(p21); PwmOut enable_r(p22); DigitalOut hb1_l(p23); DigitalOut hb1_r(p24); DigitalOut hb2_l(p29); DigitalOut hb2_r(p30); float Motors::get_current_left(){ float current = motor_vprop_l.read(); //Vprop = 5x voltage on sense pins - sense pins have 0.25 ohm resistance - current is 0.8 actual voltage measured [or 2.64 x scaled value] return current * 2.64f; } float Motors::get_current_right(){ float current = motor_vprop_r.read(); return current * 2.64f; } float Motors::get_adjusted_speed(float speed_in){ float ret_speed = speed_in; if(USE_STALL_OFFSET == 1){ ret_speed += STALL_OFFSET; ret_speed /= (STALL_OFFSET + 1.0f); } return ret_speed; } void Motors::sleep(){ nsleep = 0; } void Motors::wake_up(){ nsleep = 1; } void Motors::coast_left(){ enable_l = 0; } void Motors::brake_left(){ hb1_l = 1; hb2_l = 1; enable_l = 1; } void Motors::set_left_motor_speed(float speed){ if(speed < 0){ hb1_l = 0; hb2_l = 1; enable_l = get_adjusted_speed(-speed); }else{ hb1_l = 1; hb2_l = 0; enable_l = get_adjusted_speed(speed); } } void Motors::coast_right(){ enable_r = 0; } void Motors::brake_right(){ hb1_r = 1; hb2_r = 1; enable_r = 1; } void Motors::coast(){ coast_left(); coast_right(); } void Motors::brake(){ brake_left(); brake_right(); } void Motors::set_right_motor_speed(float speed){ if(speed < 0){ hb1_r = 0; hb2_r = 1; enable_r = get_adjusted_speed(-speed); }else{ hb1_r = 1; hb2_r = 0; enable_r = get_adjusted_speed(speed); } } void Motors::init(){ enable_l.period_us(MOTOR_PWM_PERIOD_US); enable_r.period_us(MOTOR_PWM_PERIOD_US); enable_l = 0; enable_r = 0; wake_up(); }