![](/media/cache/group/default_image.jpg.50x50_q85.jpg)
First run
Dependencies: ContinuousServo Tach mbed
main.cpp
- Committer:
- nbchaskin
- Date:
- 2018-04-25
- Revision:
- 1:be893bda5f00
- Parent:
- 0:a0013f51f232
- Child:
- 2:b8e0c824a562
File content as of revision 1:be893bda5f00:
#include "mbed.h" #include "ContinuousServo.h" #include "Tach.h" Tach tLeft(p17,64); Tach tRight(p13,64); ContinuousServo left(p23); ContinuousServo right(p26); AnalogIn sonar(p19); float distance; float l; float r; float speedL; float speedR; float errorL; float errorR; float sampling_per; Serial pc(USBTX,USBRX); float PIpwmL(float desired_speed,float speed); float PIpwmR(float desired_speed,float speed); int main() { while(1) { float check; check = sonar; //son[0] = sonar; //son[1] = sonar; //son[2] = sonar; //son[3] = sonar; //son[4] = sonar; //son[5] = sonar; //float check; //check = son[0] + son[1] + son[2] + son[3]+son[4]+son[5]; //check = check/6; check = check*3.3; check = check/0.0098; pc.printf("%f\n",check); distance = 7;//inches; wait(0.05); if (check > distance){ speedL = tLeft.getSpeed(); speedR = tRight.getSpeed(); l = PIpwmL(0.3, speedL); r = PIpwmR(0.3, speedR); left.speed(l); right.speed(-r); pc.printf("%f,%f\n",speedL,speedR); wait(0.05); } else { left.stop(); right.stop(); break; } } } float PIpwmL(float desired_speed,float speed) { float integral_errorL = 0.0; float sampling_per = 0.05; float errorL = desired_speed - speed; integral_errorL += (errorL*sampling_per); float left = (0.07*integral_errorL) + (0.08*errorL) + 0.485; return left; } float PIpwmR(float desired_speed,float speed) { float integral_errorR = 0.0; float sampling_per = 0.05; float errorR = desired_speed - speed; integral_errorR += (errorR*sampling_per); float right = (0.07*integral_errorR) + (0.08*errorR) + 0.25; return right; }