Advertisement
Guest User

Labyrintti alpha 0.2.5 rikkinäinen

a guest
Dec 12th, 2019
121
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.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. int arvo;
  31.  
  32. while(nappi1 == 0) {
  33. vTaskDelay(10);
  34. if(SW1_Read() == 0){ // Liikkeellelähtö napista
  35. printf("nappi painettu, lahen menee \n");
  36. nappi = 1;
  37. nappi1 = 1;
  38. }
  39. }
  40.  
  41. while(nappi == 1 && kytkin == 0){ // Odotus ensimmäisellä viivalla kunnes IR
  42. reflectance_digital(&dig);
  43. printf("ajossa\n");
  44. motor_forward(50, 10);
  45.  
  46. if (dig.l3 == 1 && dig.l2 == 1 && dig.l1 == 1 && dig.r1 == 1 && dig.r2 == 1 && dig.r3 == 1) {
  47. motor_forward(0,0);
  48.  
  49. printf("olen pauses\n"); //send_mqtt(ready)
  50. IR_flush();
  51. IR_wait();
  52. printf("nappia painettu\n");
  53. valiaika = xTaskGetTickCount();
  54. printf("%d\n", valiaika); //stoptime print
  55. motor_forward(60, 300);
  56. kytkin = 1;
  57. }
  58. }
  59. while(kytkin == 1 && nappi == 1) {
  60. suunta = suuntaluku %4;
  61. printf("eka suuntaluku: %d\n", suuntaluku);
  62. int arvo = 0;
  63. reflectance_digital(&dig);
  64. d = Ultra_GetDistance();
  65.  
  66. while(((dig.r2 == 1 && dig.r3 == 1) || (dig.l2 == 1 && dig.l3 == 1)) && este == 0) { // Eteenpäin ajo, kunnes viiva.
  67.  
  68. reflectance_digital(&dig);
  69.  
  70. motor_forward(0, 10); // Risteykseen ajo
  71.  
  72. while(dig.l2 == 1 || dig.r2 == 1){
  73. motor_forward(60, 10);
  74. reflectance_digital(&dig);
  75. }
  76.  
  77. if(suunta == 0){
  78. y++;
  79. }
  80. else if(suunta == 1){
  81. x++;
  82. }
  83. else if(suunta == 2){
  84. y--;
  85. }
  86. else if(suunta == 3){
  87. x--;
  88. }
  89. printf("X: %d, Y: %d\n", x, y);
  90. motor_forward(100, 50);
  91. risteys = 1;
  92. d = Ultra_GetDistance();
  93.  
  94. if(d > 20) {
  95. motor_forward(100, 20);
  96. motor_forward(0, 0);
  97. este = 0;
  98. }
  99. else if(d <= 20) {
  100. motor_forward(0 , 0);
  101. este = 1;
  102. }
  103. reflectance_digital(&dig);
  104. Beep(100, 100);
  105. }
  106.  
  107.  
  108.  
  109. while(dig.l2 == 0 && dig.l1 == 1 && dig.r1 == 1 && dig.r2 == 0 && risteys == 0){
  110. motor_forward(100, 10);
  111. reflectance_digital(&dig);
  112. }
  113.  
  114. while(dig.l2 == 1 && risteys == 0 && dig.r2 == 0) {
  115. motor_turn(0, 100, 10); // Korjaus vasemmalle
  116. reflectance_digital(&dig);
  117. }
  118.  
  119. while(dig.l2 == 0 && risteys == 0 && dig.r2 == 1) {
  120. motor_turn(100, 0, 10); // Korjaus oikealle
  121. reflectance_digital(&dig);
  122. }
  123.  
  124. while(dig.l1 == 1 && dig.r1 == 0 && risteys == 0) {
  125. motor_turn(40, 100, 10); // Korjaus vasemmalle
  126. reflectance_digital(&dig);
  127. }
  128.  
  129. while(dig.l1 == 0 && dig.r1 == 1 && risteys == 0) {
  130. motor_turn(100, 40, 10); // Korjaus oikealle
  131. reflectance_digital(&dig);
  132. }
  133. while(dig.l3 == 0 && dig.l2 == 0 && dig.l1 == 0 && dig.r1 == 0 && dig.r2 == 0 && dig.r3 == 0 && y > 12){
  134. motor_forward(0, 1000);
  135. reflectance_digital(&dig);
  136. }
  137.  
  138. reflectance_digital(&dig);
  139.  
  140. while((y < 11 && kytkin == 1 && nappi == 1 && risteys == 1 && d < 20 && suunta == 0 && x != -3) ||
  141. ( x == 0 && suunta == 1 && risteys == 1 ) ||
  142. (suunta == 1 && este == 1 && risteys == 1) ||
  143. (x > 0 && suunta == 1 && este == 0 && risteys == 1)) { // Risteys vasemalle
  144.  
  145. reflectance_digital(&dig);
  146.  
  147. if(arvo == 0){
  148. motor_hardturnleft(60, 60, 300);
  149. printf("Vasemmalle eka if");
  150. arvo = 1;
  151. }
  152. else if (dig.r1 == 0){
  153. motor_hardturnleft(60, 60, 1);
  154. printf("Vasemmalle toka if");
  155. }
  156. else if (dig.r1 == 1){
  157. risteys = 0;
  158. suuntaluku--;
  159. printf("Vasemmalle valmis: %d, %d\n", suuntaluku, suunta);
  160. este = 0;
  161. d = Ultra_GetDistance();
  162.  
  163. if(d > 20) {
  164. motor_forward(60, 20);
  165. este = 0;
  166. }
  167. else if(d <= 20) {
  168. este = 1;
  169. }
  170. }
  171. reflectance_digital(&dig);
  172. }
  173. while((kytkin == 1 && nappi == 1 && risteys == 1 && x == -3 && suunta == 3 )||
  174. (d<16 && suunta == 3 && risteys == 1 ) || (risteys == 1 && x == -3 && d<16 ) ||
  175. (risteys == 1 && suunta == 0 && x < 0 && y >= 11) ||
  176. (suunta == 3 && y > 10 && x == 0 && risteys == 1) ||
  177. (este == 1 && suunta == 0 && risteys == 1)) { // Risteys oikealle
  178.  
  179. reflectance_digital(&dig);
  180. if (arvo == 0){
  181. motor_hardturnright(60, 60, 300);
  182. arvo = 1;
  183. }
  184. else if (dig.l1 == 0){
  185. motor_hardturnright(60, 60, 1);
  186. }
  187. else if (dig.l1 == 1){
  188. risteys = 0;
  189. suuntaluku++;
  190. printf("Oikealle valmis: %d, %d\n", suuntaluku, suunta);
  191. este = 0;
  192. d = Ultra_GetDistance();
  193.  
  194. if(d > 20) {
  195. este = 0;
  196. }
  197. else if(d <= 20) {
  198. este = 1;
  199. }
  200. }
  201. reflectance_digital(&dig);
  202. }
  203. risteys = 0;
  204. }
  205. }
  206.  
  207. #endif
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement