Advertisement
Guest User

Labyrintti 1.0 ilman väistöä

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