servos.h 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. /***************************************************************
  2. Copyright: 2016-2019 ROS小课堂 www.corvin.cn
  3. Author: corvin
  4. Description:
  5. 定义舵机操作的类SweepServo,舵机连接的引脚和初始的舵机角度.在这里连接
  6. 的两个舵机分别连接5,6两个引脚,5号引脚连接左右旋转的舵机,6号引脚连接
  7. 上下移动的舵机.其中设置左右旋转的舵机初始角度为90度,上下转动舵机的初始
  8. 角度为0度.在代码里总共可以连接12个舵机,当然你的舵机可以根据arduino板
  9. 的不同来连接不同的引脚,同时修改引脚的初始角度即可.
  10. History:
  11. 20181128: initial this comment.
  12. 20181130: 新增了舵机使能状态的标识,而且最多可接12个舵机。
  13. 20181204: 新增getCurrentPos()函数用户获取当前舵机的角度。
  14. *************************************************************/
  15. #ifndef _SERVOS_H_
  16. #define _SERVOS_H_
  17. #define N_SERVOS 12
  18. #define SERVO_ENABLE 1
  19. #define SERVO_DISABLE 0
  20. //Define All Servos's Pins
  21. byte myServoPins[N_SERVOS] = {2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13};
  22. // Initial Servo Position [0, 180] degrees
  23. int servoInitPosition[N_SERVOS] = {0, 0, 0, 90, 0, 0, 0, 0, 0, 0, 0, 0};
  24. class SweepServo
  25. {
  26. public:
  27. SweepServo();
  28. void initServo(int servoPin, unsigned int initPosition, unsigned int stepDelayMs);
  29. void setTargetPos(unsigned int targetPos, unsigned int stepDelayMs);
  30. int getCurrentPos(void);
  31. void setEnable(byte flag);
  32. void moveServo(void);
  33. byte isEnabled(void);
  34. Servo getServoObj();
  35. private:
  36. Servo servo;
  37. unsigned int stepDelayMs;
  38. unsigned long lastMoveTime;
  39. int currentPosDegrees;
  40. int targetPosDegrees;
  41. byte enabled;
  42. };
  43. SweepServo myServos[N_SERVOS];
  44. #endif