driveCircle.h 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. #ifndef DRIVE_CIRCLE_H
  2. #define DRIVE_CIRCLE_H
  3. #include <Arduino.h>
  4. #include "globals.h"
  5. float messung = 0;
  6. unsigned long msPrint = 0;
  7. float degStart = 0;
  8. int oldState = -1;
  9. void initAuto() {
  10. }
  11. void driveAuto() {
  12. int state = 0;
  13. uint32_t elapsed = millis() - msAuto;
  14. if(elapsed > 1000) state = 1;// fahr los
  15. if(elapsed > 6000) state = 2; //messung
  16. if(elapsed > 36000) state = 3; // größerer kreis
  17. if(elapsed > 41000) state = 4; //messung
  18. if(elapsed > 71000) state = 5; // größerer kreis
  19. if(elapsed > 76000) state = 6; //messung
  20. if(elapsed > 106000) state = 7; //stop
  21. if(state == 2 || state == 4 || state == 6)
  22. messung = mpu.winkelZ - degStart;
  23. if(millis() - msPrint > 200) {
  24. Serial.print("Auto: \t");
  25. Serial.print(gasVal);
  26. Serial.print(" \t");
  27. Serial.print(servoVal);
  28. Serial.print(" \t");
  29. Serial.print(elapsed/1000);
  30. Serial.print("s \tstate=");
  31. Serial.print(state);
  32. Serial.print(" \t");
  33. Serial.print(mpu.winkelZ);
  34. Serial.print("° \t");
  35. Serial.print(messung);
  36. Serial.print("° \t");
  37. Serial.print(messung / 30);
  38. Serial.print("°/s \t");
  39. Serial.println();
  40. Serial3.print("Auto: \t");
  41. Serial3.print(gasVal);
  42. Serial3.print(" \t");
  43. Serial3.print(servoVal);
  44. Serial3.print(" \t");
  45. Serial3.print(elapsed/1000);
  46. Serial3.print("s \tstate=");
  47. Serial3.print(state);
  48. Serial3.print(" \t");
  49. Serial3.print(mpu.winkelZ);
  50. Serial3.print("° \t");
  51. Serial3.print(messung);
  52. Serial3.print("° \t");
  53. Serial3.print(messung / 30);
  54. Serial3.print("°/s \t");
  55. Serial3.println();
  56. msPrint = millis();
  57. }
  58. if(oldState == state) {
  59. return;
  60. }
  61. float spd = 0.11;
  62. switch(state) {
  63. case 0:
  64. setMotor(0);
  65. setServo(0);
  66. break;
  67. case 1:
  68. setMotor(spd);
  69. setServo(1);
  70. break;
  71. case 2:
  72. setMotor(spd);
  73. setServo(1);
  74. degStart = mpu.winkelZ;
  75. break;
  76. case 3:
  77. setMotor(spd);
  78. setServo(0.8);
  79. break;
  80. case 4:
  81. setMotor(spd);
  82. setServo(0.8);
  83. degStart = mpu.winkelZ;
  84. break;
  85. case 5:
  86. setMotor(spd);
  87. setServo(0.6);
  88. break;
  89. case 6:
  90. setMotor(spd);
  91. setServo(0.6);
  92. degStart = mpu.winkelZ;
  93. break;
  94. case 7:
  95. setMotor(0);
  96. setServo(0);
  97. break;
  98. }
  99. oldState = state;
  100. }
  101. #endif