Sokisati
Üye
- Katılım
- 24 Şubat 2024
- Mesajlar
- 39
Sensörden okunan veriye göre PID hesaplaması yapıp dik duracak bir robotun kodunu yazarken böyle iğrenç bir şey oluştu nihayetinde:
.cpp dosyasındaki hali daha da kötü:
Baktım baktım, ne yapamacağımı bilemedim. Yazdığım hiçbir parametre gereksiz değil, hatta daha da fazla parametre eklemem gerekecek LED veya potansiyometre için vs.
Ama çok karmaşık ve uzun duruyor. Bu karmaşa normal mi? Normal değilse temiz bir şekilde nasıl düzeltirim?
Aklıma şöyle bir fikir geliyor ama bu da amatör bir yöntem sanırım.
C++:
SelfBalancingRobot kaanRobot(motor1SpeedPin,motor1DirectionPin1,motor1DirectionPin2,motor2SpeedPin,motor2DirectionPin1,\
motor2DirectionPin2,dtCoefficent,setPoint,kP,kI,kD,lowerLimitForSum,upperLimitForSum);
.cpp dosyasındaki hali daha da kötü:
C++:
SelfBalancingRobot::SelfBalancingRobot(pin motor1SpeedPin, pin motor1DirectionPin1,\
pin motor1DirectionPin2,pin motor2SpeedPin,pin motor2DirectionPin1,pin motor2DirectionPin2\
,float dtCoefficent,float setPoint, float kP, float kI, float kD,float lowerLimitForSum, float upperLimitForSum)
: motor1(motor1SpeedPin,motor1DirectionPin1,motor1DirectionPin2), motor2(motor2SpeedPin,motor2DirectionPin1,motor2DirectionPin2),\
pidController(dtCoefficent,setPoint,kP,kI,kD,lowerLimitForSum,upperLimitForSum)
{
}
Baktım baktım, ne yapamacağımı bilemedim. Yazdığım hiçbir parametre gereksiz değil, hatta daha da fazla parametre eklemem gerekecek LED veya potansiyometre için vs.
Ama çok karmaşık ve uzun duruyor. Bu karmaşa normal mi? Normal değilse temiz bir şekilde nasıl düzeltirim?
Aklıma şöyle bir fikir geliyor ama bu da amatör bir yöntem sanırım.
C++:
Motor motor1(...);
Motor motor2(...);
MpuSensor mpuSensor(...);
PIDController pidController(...);
SelfBalancingRobot kaanRobot(motor1,motor2,mpuSensor, pidController);