mecha
Dependents: 2019NHK_A_manual_red 2019NHK_A_manual_red 2019NHK_A_manual_blue
towelest.cpp
- Committer:
- ec30109b
- Date:
- 2019-09-13
- Revision:
- 2:623fb33351af
- Parent:
- 1:c6950f45b03c
- Child:
- 3:63bb3e19c7eb
File content as of revision 2:623fb33351af:
#include "towelest.h" towelest::towelest(): serial(mdTX,mdRX,115200), pid(4.0, 0, 0.001, 0.01), LimitSW1(schmitt_trigger_0), LimitSW2(schmitt_trigger_1) { Motor[0] = new ikarashiMDC(2,0,SM,&serial); Motor[1] = new ikarashiMDC(2,2,SM,&serial); Motor[2] = new ikarashiMDC(2,1,SM,&serial); Motor[0]->braking = true; Motor[1]->braking = true; Motor[2]->braking = true; thread.start(callback(this, &towelest::loop)); pid.setInputLimits(-1800, 1800); pid.setOutputLimits(-0.6,0.6); pid.setBias(0.0); pid.setMode(AUTO_MODE); pid.setSetPoint(0); } void towelest::open() { if(LimitSW1.read() == 1) { Motor[0]->setSpeed(0); Motor[1]->setSpeed(0); } else if(LimitSW1.read() == 0) { Motor[0]->setSpeed(-0.2); Motor[1]->setSpeed(0); } } void towelest::close() { Motor[0]->setSpeed(0.2); Motor[1]->setSpeed(0); } void towelest::lift() { if(LimitSW2.read() == 1) { Motor[0]->setSpeed(0); Motor[1]->setSpeed(0); } else if(LimitSW2.read() == 0) { Motor[0]->setSpeed(0); Motor[1]->setSpeed(0.8); } } void towelest::drop() { timer.start(); time = timer.read(); if(time <= 5) { pid.setSetPoint(-800); } else { pid.setSetPoint(0); timer.stop(); timer.reset(); } } void towelest::setPulse(int Loli) { loli = Loli; } void towelest::loop() { while(true) { pid.setProcessValue(loli); compute = pid.compute(); Motor[2]->setSpeed(compute); Limit1 = LimitSW1.read(); Limit2 = LimitSW2.read(); //pc.printf("%d %d %f \n\r",Limit1,Limit2,RotationDistance); } }