1
0

Gripper.ino 1.9 KB

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