NHK2017 octopus robot
Dependencies: 2017NHKpin_config mbed FEP ikarashiMDC PID jy901 omni HMC6352 omni_wheel
Fork of KANI2017v2 by
Diff: bot/PIDcontroller/PID_controller.cpp
- Revision:
- 20:477c5d039e93
- Parent:
- 19:41f7dd1a5ed1
- Child:
- 22:682cc376da6f
diff -r 41f7dd1a5ed1 -r 477c5d039e93 bot/PIDcontroller/PID_controller.cpp --- a/bot/PIDcontroller/PID_controller.cpp Thu Aug 31 10:34:55 2017 +0900 +++ b/bot/PIDcontroller/PID_controller.cpp Tue Sep 05 01:23:32 2017 +0000 @@ -5,7 +5,7 @@ confirm(); } -PIDC::PIDC() : PID(KC, TI, TD, INTERVAL), HMC6352(HMCsda, HMCscl) +PIDC::PIDC() : PID(KC, TI, TD, INTERVAL), JY901(HMCsda, HMCscl) { PID::setInputLimits(-INPUT_LIMIT, INPUT_LIMIT); PID::setOutputLimits(-OUTPUT_LIMIT, OUTPUT_LIMIT); @@ -13,41 +13,41 @@ PID::setMode(AUTO_MODE); PID::setSetPoint(0.0); - HMC6352::setOpMode(HMC6352_CONTINUOUS, 1, 20); - rawDegree = HMC6352::sample(); - beforeDegree = HMC6352::sample(); - offSetDegree = HMC6352::sample(); + //HMC6352::setOpMode(HMC6352_CONTINUOUS, 1, 20); + rawDegree = JY901::getZaxisAngle(); + beforeDegree = JY901::getZaxisAngle(); + offSetDegree = JY901::getZaxisAngle(); initDegree = 0; turnOverNumber = 0; // this -> attach(this, &PIDC::updateOutput, INTERVAL); } PIDC::PIDC(PinName sda, PinName scl, float kc, float ti, float td, float interval) : -PID(kc, ti, td, interval), HMC6352(sda, scl) -{ - PID::setInputLimits(-INPUT_LIMIT, INPUT_LIMIT); - PID::setOutputLimits(-OUTPUT_LIMIT, OUTPUT_LIMIT); - PID::setBias(BIAS); - PID::setMode(AUTO_MODE); - PID::setSetPoint(0.0); - - HMC6352::setOpMode(HMC6352_CONTINUOUS, 1, 20); - rawDegree = HMC6352::sample(); - beforeDegree = HMC6352::sample(); - offSetDegree = HMC6352::sample(); - initDegree = 0; - turnOverNumber = 0; -// this -> attach(this, &PIDC::updateOutput, INTERVAL); -} +PID(kc, ti, td, interval), JY901(sda, scl) +{ + PID::setInputLimits(-INPUT_LIMIT, INPUT_LIMIT); + PID::setOutputLimits(-OUTPUT_LIMIT, OUTPUT_LIMIT); + PID::setBias(BIAS); + PID::setMode(AUTO_MODE); + PID::setSetPoint(0.0); + + //HMC6352::setOpMode(HMC6352_CONTINUOUS, 1, 20); + rawDegree = JY901::getZaxisAngle(); + beforeDegree = JY901::getZaxisAngle(); + offSetDegree = JY901::getZaxisAngle(); + initDegree = 0; + turnOverNumber = 0; +// this -> attach(this, &PIDC::updateOutput, INTERVAL); +} void PIDC::confirm() { - rawDegree = HMC6352::sample(); + rawDegree = getZaxisAngle(); if(rawDegree - beforeDegree < -1800) turnOverNumber++; if(rawDegree - beforeDegree > 1800) turnOverNumber--; initDegree = rawDegree - offSetDegree + turnOverNumber * 3600; - beforeDegree = HMC6352::sample(); + beforeDegree = JY901::getZaxisAngle(); PID::setProcessValue(initDegree / 10.0); co = PID::compute(); }