Gripper.ino 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. #include "Arduino.h"
  2. #include "AX12A.h"
  3. #define DirectionPin (10u)
  4. #define BaudRate (1000000ul)
  5. #define ID1 (4u)
  6. #define ID1 (5u)
  7. #include <XYZrobotServo.h>
  8. #ifdef SERIAL_PORT_HARDWARE_OPEN
  9. #define servoSerial SERIAL_PORT_HARDWARE_OPEN
  10. #else
  11. #include <SoftwareSerial.h>
  12. SoftwareSerial servoSerial(10, 11);
  13. #endif
  14. int input = 0;
  15. XYZrobotServo servo1(servoSerial, 2);
  16. XYZrobotServo servo2(servoSerial, 3);
  17. const uint8_t playtime = 200;
  18. int x;
  19. int val[10] = {0,0,0,0,0};
  20. int position,lastposition_ax12 = 512;
  21. int choice;
  22. void ax12(int position){
  23. if((position<300) && (position>700)){
  24. Serial.print("invalide position. Try again");
  25. return;
  26. }
  27. if(lastposition_ax12<position){
  28. for(int i = lastposition_ax12;i<position;i=i+1){
  29. ax12a.move(ID1,i);
  30. delay(10);
  31. }
  32. }
  33. if(lastposition_ax12>position){
  34. for(int i = lastposition_ax12;i>position;i=i-1){
  35. ax12a.move(ID1,i);
  36. delay(10);
  37. }
  38. }
  39. lastposition_ax12 = position;
  40. }
  41. void a116_1(int position){
  42. servo1.setPosition(position, playtime);
  43. }
  44. void a116_2(int position){
  45. servo2.setPosition(position, playtime);
  46. }
  47. void setup() {
  48. Serial.begin(9600);
  49. Serial.setTimeout(1);
  50. ax12a.begin(BaudRate, DirectionPin, &Serial3);
  51. ax12a.setEndless(ID1, OFF);
  52. servoSerial.begin(115200);
  53. ax12a.move(ID1,512);
  54. servo1.setPosition(512, playtime);
  55. servo2.setPosition(512, playtime);
  56. }
  57. void loop() {
  58. if (Serial.available()){
  59. //Serial.print(test);
  60. for(int n = 0; n < 10 ; n++){
  61. val[n] = Serial.readString().toInt();
  62. //Serial.print(x);
  63. //Serial.print(n);
  64. }
  65. position = 0 ;
  66. for(int i = 2; i < 5;i++){
  67. position = position * 10 + val[i];
  68. }
  69. choice = val[0];
  70. Serial.print("Motor: ");
  71. Serial.print(choice);
  72. Serial.print(" position: ");
  73. Serial.print(position);
  74. switch(val[0]){
  75. case 1:
  76. ax12(position);
  77. break;
  78. case 2:
  79. a116_1(position);
  80. break;
  81. case 3:
  82. a116_2(position);
  83. break;
  84. }
  85. }
  86. }