Advertisement
partti

Läby väistöllä v1

Dec 11th, 2019
145
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.89 KB | None | 0 0
  1. #if 1
  2. // Labyrintti 1.0 valmis ilman väistöä
  3. void zmain(void)
  4. {
  5. TickType_t start; // Aloita ajanlasku
  6. start = xTaskGetTickCount();
  7. IR_Start();
  8. Ultra_Start();
  9.  
  10. struct sensors_ ref; // Sensorit päälle
  11. struct sensors_ dig;
  12. reflectance_start();
  13. reflectance_set_threshold(10000, 10000, 12000, 12000, 10000, 10000);
  14.  
  15. motor_start(); // Käynnistetään moottori
  16. motor_forward(0,0);
  17.  
  18. int x = 0; // Tarvittavat muuttujat
  19. int y = -1;
  20. int este = 0;
  21. int nappi = 0;
  22. int nappi1 = 0;
  23. int kytkin = 0;
  24. int risteys = 0;
  25. int valiaika;
  26. int risteyslupa = 0;
  27. int suuntaluku = 400;
  28. int suunta; // 0 = ylös, 1 = oikea, 2 = alas, 3 = vasen,
  29. int d = Ultra_GetDistance();
  30.  
  31. while(nappi1 == 0) {
  32. vTaskDelay(10);
  33. if(SW1_Read() == 0){ // Liikkeellelähtö napista
  34. printf("nappi painettu, lahen menee \n");
  35. nappi = 1;
  36. nappi1 = 1;
  37. }
  38. }
  39.  
  40. while(nappi == 1 && kytkin == 0){ // Odotus ensimmäisellä viivalla kunnes IR
  41. reflectance_digital(&dig);
  42. printf("ajossa\n");
  43. motor_forward(50, 10);
  44. if (dig.l3 == 1 && dig.l2 == 1 && dig.l1 == 1 && dig.r1 == 1 && dig.r2 == 1 && dig.r3 == 1) {
  45. motor_forward(0,0);
  46.  
  47. printf("olen pauses\n"); //send_mqtt(ready)
  48. IR_flush();
  49. IR_wait();
  50. printf("nappia painettu\n");
  51. valiaika = xTaskGetTickCount();
  52. printf("%d\n", valiaika); //stoptime print
  53. motor_forward(60, 300);
  54. kytkin = 1;
  55. }
  56. }
  57. while(kytkin == 1 && nappi == 1) {
  58. suunta = suuntaluku %4;
  59. printf("eka suuntaluku: %d\n", suuntaluku);
  60. int arvo = 0;
  61.  
  62. while(kytkin == 1 && nappi == 1 && risteys == 0) { // Eteenpäin ajo, kunnes viiva.
  63.  
  64. reflectance_digital(&dig);
  65.  
  66. if ((dig.r1 == 1 && dig.r2 == 1 && dig.r3 == 1) ||(dig.l1 == 1 && dig.l2 == 1 && dig.l3 == 1)) {
  67. motor_forward(0, 10); // Risteykseen ajo
  68. d = Ultra_GetDistance();
  69.  
  70. while(dig.l2 == 1 && dig.r2 == 1){
  71. reflectance_digital(&dig);
  72. motor_forward(60, 10);
  73. }
  74. motor_forward(60, 50);
  75. if(suunta == 0){
  76. y++;
  77. }
  78. else if(suunta == 1){
  79. x++;
  80. }
  81. else if(suunta == 2){
  82. y--;
  83. }
  84. else if(suunta == 3){
  85. x--;
  86. }
  87. printf("X: %d, Y: %d\n", x, y);
  88. Beep(100, 100);BatteryLed_Write(1);
  89. risteys = 1;
  90. }
  91.  
  92. else if(dig.l3 == 0 && dig.l2 == 0 && dig.l1 == 1 && dig.r1 == 1 && dig.r2 == 0 && dig.r3 == 0) {
  93. motor_forward(50, 10);
  94. }
  95.  
  96. else if(dig.l2 == 1) {
  97. motor_turn(10, 60, 10); // Korjaus vasemmalle
  98. }
  99.  
  100. else if(dig.r2 == 1) {
  101. motor_turn(60, 10, 10); // Korjaus oikealle
  102. }
  103. }
  104. while((kytkin == 1 && nappi == 1 && risteys == 1 && y<12 && d<16 && suunta == 0 && x != -3) || ( x == 0 && suunta == 1 && risteys == 1 )) { // Risteys vasemalle || (x == 0 && suunta == 1 && kytkin == 1 && nappi == 1 && risteys == 1) || (d<11 && kytkin == 1 && nappi == 1 && risteys == 1)
  105.  
  106. reflectance_digital(&dig);
  107.  
  108. if(arvo == 0){
  109. motor_hardturnleft(60, 90, 300);
  110. printf("Vasemmalle eka if");
  111. arvo = 1;
  112. }
  113. else if (dig.r1 == 0 || dig.l3 == 1 || dig.l2 == 1){
  114. motor_hardturnleft(60, 90, 1);
  115. printf("Vasemmalle toka if");
  116. }
  117. else if (dig.r1 == 1){
  118. risteys = 0;
  119. suuntaluku--;
  120. printf("Vasemmalle valmis: %d, %d\n", suuntaluku, suunta);
  121. }
  122. }
  123. while((kytkin == 1 && nappi == 1 && risteys == 1 && x == -3 && suunta == 3 )|| (d<16 && suunta == 3 && risteys == 1 ) || (y == 11 && risteys == 1 ) || (risteys == 1 && x == -3 && d<16 )) { // Risteys oikealle
  124.  
  125. reflectance_digital(&dig);
  126. if (arvo == 0){
  127. motor_hardturnright(90, 60, 300);
  128. arvo = 1;
  129. }
  130. else if (dig.l1 == 0 || dig.r3 == 1 || dig.r2 == 1){
  131. motor_hardturnright(90, 60, 1);
  132. }
  133. else if (dig.l1 == 1){
  134. risteys = 0;
  135. suuntaluku++;
  136. printf("Oikealle valmis: %d, %d\n", suuntaluku, suunta);
  137. }
  138. }
  139. risteys = 0;
  140. motor_forward(60, 100);
  141. }
  142. }
  143. #endif
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement