Gripper.ino 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  1. #include "Arduino.h"
  2. #include "AX12A.h"
  3. #define DirectionPin (10u)
  4. #define BaudRate (1000000ul)
  5. #define ID1 (4u)
  6. #define ID2 (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. const uint8_t playtime = 100;
  17. int button_oben = 2;
  18. int button_unten = 3;
  19. int ain1 = 4;
  20. int ain2 = 5;
  21. int pwma = 8;
  22. int x ,position;
  23. int val[10] = {0,0,0,0,0};
  24. int choice;
  25. void ax12_1(int position){
  26. if((position<300) || (position>700)){
  27. Serial.print("invalide position. Try again");
  28. return;}
  29. ax12a.moveSpeed(ID1,position, playtime);
  30. }
  31. void ax12_2(int position){
  32. if((position<300) || (position>700)){
  33. Serial.print("invalide position. Try again");
  34. return;}
  35. ax12a.moveSpeed(ID2,position, playtime);
  36. }
  37. void a116(int position){
  38. if((position<300) || (position>700)){
  39. Serial.print("invalide position. Try again");
  40. return;
  41. }
  42. servo1.setPosition(position, playtime);
  43. }
  44. void motor(int speed, int dir){
  45. if (dir == 1){
  46. digitalWrite(ain1,HIGH);
  47. digitalWrite(ain2,LOW);
  48. }
  49. else{
  50. digitalWrite(ain1,LOW);
  51. digitalWrite(ain2,HIGH);
  52. }
  53. analogWrite(pwma,speed);
  54. }
  55. void setup() {
  56. Serial.begin(9600);
  57. Serial.setTimeout(1);
  58. ax12a.begin(BaudRate, DirectionPin, &Serial3);
  59. ax12a.setEndless(ID1, OFF);
  60. ax12a.setEndless(ID2, OFF);
  61. servoSerial.begin(115200);
  62. ax12a.move(ID1,512);
  63. ax12a.move(ID2,512);
  64. servo1.setPosition(512, playtime);
  65. pinMode(button_oben,INPUT_PULLUP);
  66. pinMode(button_unten,INPUT_PULLUP);
  67. attachInterrupt(digitalPinToInterrupt(button_oben),interrupt1, LOW);
  68. attachInterrupt(digitalPinToInterrupt(button_unten),interrupt2,LOW);
  69. }
  70. void loop() {
  71. if (Serial.available()){
  72. //Serial.print(test);
  73. for(int n = 0; n < 10 ; n++){
  74. val[n] = Serial.readString().toInt();
  75. }
  76. position = 0 ;
  77. for(int i = 2; i < 5;i++){
  78. position = position * 10 + val[i];
  79. }
  80. choice = val[0];
  81. Serial.print("Motor: ");
  82. Serial.print(choice);
  83. Serial.print(" position: ");
  84. Serial.print(position);
  85. switch(val[0]){
  86. case 1:
  87. ax12_1(position);
  88. Serial.print("Ready");
  89. break;
  90. case 2:
  91. a116(position);
  92. Serial.print("Ready");
  93. break;
  94. case 3:
  95. ax12_2(position);
  96. Serial.print("Ready");
  97. break;
  98. case 4:
  99. motor(position,val[1]);
  100. Serial.print("Ready");
  101. break;
  102. }
  103. }
  104. }
  105. void interrupt1(){
  106. Serial.println("interrupt button oben");
  107. motor(254,' ');
  108. delay(200);
  109. motor(0,' ');
  110. }
  111. void interrupt2(){
  112. Serial.println("interrupt button unten");
  113. motor(254,'a');
  114. delay(200);
  115. motor(0,'a');
  116. }