Advertisement
Guest User

Labyrintti 1.2 väistöllä

a guest
Dec 11th, 2019
106
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.92 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.  
  105. while((y < 11 && 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)
  106.  
  107. reflectance_digital(&dig);
  108.  
  109. if(arvo == 0){
  110. motor_hardturnleft(60, 90, 300);
  111. printf("Vasemmalle eka if");
  112. arvo = 1;
  113. }
  114. else if (dig.r1 == 0 || dig.l3 == 1 || dig.l2 == 1){
  115. motor_hardturnleft(60, 90, 1);
  116. printf("Vasemmalle toka if");
  117. }
  118. else if (dig.r1 == 1){
  119. risteys = 0;
  120. suuntaluku--;
  121. printf("Vasemmalle valmis: %d, %d\n", suuntaluku, suunta);
  122. }
  123. }
  124. while((kytkin == 1 && nappi == 1 && risteys == 1 && x == -3 && suunta == 3 )|| (d<16 && suunta == 3 && risteys == 1 ) || (risteys == 1 && x == -3 && d<16 ) || (risteys ==1 && suunta ==0 && x<0 && y>=11)) { // Risteys oikealle
  125.  
  126. reflectance_digital(&dig);
  127. if (arvo == 0){
  128. motor_hardturnright(90, 60, 300);
  129. arvo = 1;
  130. }
  131. else if (dig.l1 == 0 || dig.r3 == 1 || dig.r2 == 1){
  132. motor_hardturnright(90, 60, 1);
  133. }
  134. else if (dig.l1 == 1){
  135. risteys = 0;
  136. suuntaluku++;
  137. printf("Oikealle valmis: %d, %d\n", suuntaluku, suunta);
  138. }
  139. }
  140. risteys = 0;
  141. motor_forward(60, 100);
  142. }
  143. }
  144. #endif
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement