safwan092

Untitled

Apr 30th, 2024
60
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.46 KB | None | 0 0
  1. //#include <SoftwareSerial.h>
  2. #include <Wire.h>
  3. #include <MPU6050.h>
  4. #include <Servo.h>
  5. #include <Wire.h>
  6. #include <Adafruit_PWMServoDriver.h>
  7. Adafruit_PWMServoDriver pwm = Adafruit_PWMServoDriver();
  8.  
  9.  
  10. //SoftwareSerial mySerial(2, 3); // RX, TX
  11.  
  12.  
  13. #define SERVOMIN 150
  14. #define SERVOMAX 600
  15. #define SERVO_FREQ 50
  16. #define motor1_pin1 5
  17. #define motor1_pin2 6
  18. #define motor2_pin1 9
  19. #define motor2_pin2 10
  20.  
  21. Servo myServo;
  22. Servo myServo2;
  23.  
  24. int state = 20;
  25. char c;
  26.  
  27. String dataIn;
  28. int8_t indexOfA, indexOfB, indexOfC, indexOfD, indexOfE, indexOfF, indexOfG, indexOfH;
  29. String data1, data2, data3, data4, data5, data6, data7, data8;
  30.  
  31. String angle1_txt = "";
  32. String angle2_txt = "";
  33. String angle3_txt = "";
  34. String angle4_txt = "";
  35. String angle5_txt = "";
  36. String angle6_txt = "";
  37. String angle7_txt = "";
  38. String angle8_txt = "";
  39. int switch_data = 0;
  40. int angle1;
  41. int angle2;
  42. int angle3;
  43. int angle4;
  44. int angle5;
  45. int angle6;
  46. int angle7;
  47. int angle8;
  48. MPU6050 gy_521;
  49. int16_t ax, ay, az;
  50. int16_t gx, gy, gz;
  51. int motor1_speed;
  52. int motor2_speed;
  53.  
  54. void setup() {
  55.  
  56. pwm.begin();
  57. pwm.setPWMFreq(SERVO_FREQ);
  58. //Wire.begin( );
  59. Serial.begin(9600);//38400); // Default communication rate of the Bluetooth module
  60. Serial1.begin(9600);
  61. // Serial.println ("Initializing MPU and testing connections");
  62. gy_521.initialize ( );
  63. // Serial.println(gy_521.testConnection( ) ? "Successfully Connected" : "Connection failed");
  64. // delay(1000);
  65. // Serial.println("Reading Values");
  66.  
  67. }
  68.  
  69. void loop() {
  70.  
  71. while (Serial1.available() > 0) {
  72. c = Serial1.read();
  73. //delay(10);
  74. if (c == '\n') {
  75. break;
  76. }
  77. else {
  78. dataIn += c;
  79. }
  80. }
  81. if (c == '\n') {
  82. parseData();
  83.  
  84. resetData();
  85. }
  86.  
  87. }//END OF LOOP
  88. /*
  89. angle1 = angle1_txt.toInt();
  90. angle2 = angle2_txt.toInt();
  91. angle3 = angle3_txt.toInt();
  92. angle4 = angle4_txt.toInt();
  93. angle5 = angle5_txt.toInt();
  94. angle6 = angle6_txt.toInt();
  95. angle7 = angle7_txt.toInt();
  96. angle8 = angle8_txt.toInt();
  97.  
  98. Serial.println("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^");
  99. Serial.println(angle1);
  100. Serial.println(angle2);
  101. Serial.println(angle3);
  102. Serial.println(angle4);
  103. Serial.println(angle5);
  104. Serial.println(angle6);
  105. Serial.println(angle7);
  106. Serial.println(angle8);
  107. Serial.println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
  108. angle1_txt = "";
  109. angle2_txt = "";
  110. angle3_txt = "";
  111. angle4_txt = "";
  112. angle5_txt = "";
  113. angle6_txt = "";
  114. angle7_txt = "";
  115. angle8_txt = "";
  116. switch_data = 0;
  117. break;
  118. }
  119.  
  120. if (c == '@') {
  121. switch_data ++;
  122. continue;
  123. }
  124.  
  125. if (switch_data == 0) angle1_txt += c;
  126. else if (switch_data == 1) angle2_txt += c;
  127. else if (switch_data == 2) angle3_txt += c;
  128. else if (switch_data == 3) angle4_txt += c;
  129. else if (switch_data == 4) angle5_txt += c;
  130. else if (switch_data == 5) angle6_txt += c;
  131. else if (switch_data == 6) angle7_txt += c;
  132. else if (switch_data == 7) angle8_txt += c;
  133. }
  134.  
  135.  
  136. pwm.setPWM(0, 0, angle1);
  137. pwm.setPWM(1, 0, angle2);
  138. pwm.setPWM(2, 0, angle3);
  139. pwm.setPWM(3, 0, angle4);
  140. pwm.setPWM(4, 0, angle5);
  141. pwm.setPWM(5, 0, angle6);
  142. delay(10);
  143. gy_521.getMotion6(&ax, &ay, &az, &gx, &gy, &gz);
  144. ax = map(ax, -17000, 17000, -125, 125);
  145. motor1_speed = 125 + ax; //To move first motor
  146. motor2_speed = 125 - ax; //To move second motor
  147. // Serial.print ("Motor1 Speed = ");
  148. // Serial.print (motor1_speed, DEC);
  149. // Serial.print (" && ");
  150. // Serial.print ("Motor2 Speed = ");
  151. // Serial.println (motor2_speed, DEC);
  152.  
  153. //Serial.println(angle7);
  154. if (angle7 == HIGH) {
  155.  
  156. analogWrite (motor1_pin1, motor1_speed );
  157. analogWrite (motor2_pin2, motor2_speed);
  158. delay (20);
  159. }
  160. else {
  161. analogWrite (motor1_pin1, LOW);
  162. analogWrite (motor2_pin2, LOW);
  163. delay(20);
  164. }
  165.  
  166. Serial.println(angle8);
  167. if (angle8 == HIGH) {
  168.  
  169. analogWrite (motor1_pin2, motor1_speed );
  170. analogWrite (motor2_pin1, motor2_speed);
  171. delay (20);
  172. }
  173. else {
  174. analogWrite (motor1_pin2, LOW);
  175. analogWrite (motor2_pin1, LOW);
  176. delay(20);
  177. }
  178.  
  179. }*/
  180.  
  181.  
  182.  
  183. void parseData() {
  184. indexOfA = dataIn.indexOf("A");
  185. indexOfB = dataIn.indexOf("B");
  186. indexOfC = dataIn.indexOf("C");
  187. indexOfD = dataIn.indexOf("D");
  188. indexOfE = dataIn.indexOf("E");
  189. indexOfF = dataIn.indexOf("F");
  190. indexOfG = dataIn.indexOf("G");
  191. indexOfH = dataIn.indexOf("H");
  192.  
  193. data1 = dataIn.substring(0, indexOfA);
  194. data2 = dataIn.substring(indexOfA + 1, indexOfB);
  195. data3 = dataIn.substring(indexOfB + 1, indexOfC);
  196. data4 = dataIn.substring(indexOfC + 1, indexOfD);
  197. data5 = dataIn.substring(indexOfD + 1, indexOfE);
  198. data6 = dataIn.substring(indexOfE + 1, indexOfF);
  199. data7 = dataIn.substring(indexOfF + 1, indexOfG);
  200. data8 = dataIn.substring(indexOfG + 1, indexOfH);
  201.  
  202. /*if (data1.length() > 3 || data2.length() > 3 || data3.length() > 3 || data4.length() > 3 || data5.length() > 3 || data6.length() >3 || data7.length() > 3 || data8.length() > 3) {
  203. data1 = "0";
  204. data2 = "0";
  205. data3 = "0";
  206. data4 = "0";
  207. data5 = "0";
  208. data6 = "0";
  209. data7 = "0";
  210. data8 = "0";
  211. }
  212. else{*/
  213. ShowRxData();
  214. //}
  215. }
  216.  
  217. void ShowRxData() {
  218. Serial.println("D1: " + data1);
  219. Serial.println("D2: " + data2);
  220. Serial.println("D3: " + data3);
  221. Serial.println("D4: " + data4);
  222. Serial.println("D5: " + data5);
  223. Serial.println("D6: " + data6);
  224. Serial.println("D7: " + data7);
  225. Serial.println("D8: " + data8);
  226. }
  227.  
  228. void resetData() {
  229. c = 0;
  230. dataIn = "";
  231. }
Advertisement
Add Comment
Please, Sign In to add comment