Advertisement
Guest User

Untitled

a guest
Feb 28th, 2020
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 5.74 KB | None | 0 0
  1. #if 1
  2.  
  3. void motor_forward_fixed(uint8 speed, uint32 delay)
  4. {
  5.     MotorDirLeft_Write(0);
  6.     MotorDirRight_Write(0);
  7.     float ratio = 1.05; // pitää säätää, 1.3 vähän liikaa
  8.    
  9.     uint8 l_speed = speed;
  10.     uint8 r_speed = (float)speed / ratio;
  11.    
  12.     printf("l_speed: %d, r_speed: %d\n", l_speed, r_speed); // tulostaa nopeudet
  13.    
  14.     motor_turn(l_speed, r_speed, delay);
  15. }  
  16. void motor_tank_turn_90dg(int left_dir, int right_dir)
  17.     {
  18.         MotorDirLeft_Write(left_dir);
  19.         MotorDirRight_Write(right_dir);
  20.         PWM_WriteCompare1(75);
  21.         PWM_WriteCompare2(75);
  22.         vTaskDelay(1500);
  23.     }
  24.  
  25. void turn_left()
  26. {
  27.    
  28. motor_turn(40, 150, 0);
  29.  
  30. }
  31. void turn_right()
  32. {
  33.    
  34.  motor_turn(150, 40, 0);  
  35.  
  36. }
  37. void mild_turn_left()
  38. {
  39.    
  40. motor_turn(70, 150, 0);
  41.  
  42. }
  43. void mild_turn_right()
  44. {
  45.    
  46. motor_turn(150, 60, 0);
  47.  
  48. }
  49. void hard_turn_left()
  50. {
  51.    
  52. motor_turn(0, 150, 0);
  53.  
  54. }
  55. void hard_turn_right()
  56. {
  57.    
  58. motor_turn(150, 0, 0);
  59. }
  60.  
  61.  
  62.  
  63. void zmain(void)
  64. {
  65.     IR_Start(); //käynnistetään IR sensori
  66.     IR_flush();
  67.    
  68.     reflectance_start(); //Käynnistetään reflectance sensorit
  69.     //struct sensors_ ref;
  70.     struct sensors_ dig;
  71.     reflectance_set_threshold(9000, 9000, 11000, 11000, 9000, 9000);
  72.    
  73.     motor_start(); //käynnistetään moottori
  74.     motor_forward(0, 0); //pysäytetään moottorit
  75.    
  76.     int linjalaskuri = 0;
  77.     bool linjalla = false;
  78.    
  79.     bool led = false; //ledi päälle kun robotti saa IR arvon
  80.    
  81.     while (SW1_Read()==1)
  82.     {
  83.         vTaskDelay(200);
  84.     }
  85.    
  86.     vTaskDelay(1000);
  87.    
  88.     for(;;)
  89.     {
  90.         reflectance_digital(&dig); // dig.l3, dig.l2, dig.l1, dig.r1, dig.r2, dig.r3    
  91.         motor_forward_fixed(70,0);
  92.        
  93.         // VIIVAN SEURANTA
  94.      
  95.         if (dig.l3 == 0 && dig.l2 == 0 && dig.l1 == 1 && dig.r1 == 1 && dig.r2 == 0 && dig.r3 == 0)
  96.         {
  97.             linjalla = false;
  98.             // mene suoraan
  99.             motor_forward_fixed(70, 0);
  100.         }
  101.         else if (dig.l3 == 0 && dig.l2 == 1 && dig.l1 == 1 && dig.r1 == 0 && dig.r2 == 0 && dig.r3 == 0)
  102.         {
  103.             linjalla = false;
  104.             // käänny oikea
  105.             turn_left();
  106.         }
  107.         else if (dig.l3 == 0 && dig.l2 == 0 && dig.l1 == 0 && dig.r1 == 1 && dig.r2 == 1 && dig.r3 == 0)
  108.         {
  109.             linjalla = false;
  110.             // käänny vasen
  111.             turn_right();
  112.         }
  113.         else if (dig.l3 == 1 && dig.l2 == 1 && dig.l1 == 0 && dig.r1 == 0 && dig.r2 == 0 && dig.r3 == 0)
  114.         {
  115.             linjalla = false;
  116.             // käänny vahva oikea
  117.             hard_turn_left();
  118.         }
  119.          else if (dig.l3 == 1 && dig.l2 == 1 && dig.l1 == 1 && dig.r1 == 0 && dig.r2 == 0 && dig.r3 == 0)
  120.         {
  121.             linjalla = false;
  122.             // käänny vahva oikea
  123.             hard_turn_left();
  124.         }  
  125.          else if (dig.l3 == 1 && dig.l2 == 0 && dig.l1 == 0 && dig.r1 == 0 && dig.r2 == 0 && dig.r3 == 0)
  126.         {
  127.             linjalla = false;
  128.             // käänny vahva oikea
  129.             hard_turn_left();
  130.         }
  131.         else if (dig.l3 == 0 && dig.l2 == 0 && dig.l1 == 0 && dig.r1 == 0 && dig.r2 == 1 && dig.r3 == 1)
  132.         {
  133.             linjalla = false;
  134.             // käänny vahva vasen
  135.             hard_turn_right();
  136.         }
  137.         else if (dig.l3 == 0 && dig.l2 == 0 && dig.l1 == 0 && dig.r1 == 0 && dig.r2 == 1 && dig.r3 == 0)
  138.         {
  139.             linjalla = false;
  140.             // käänny vahva vasen
  141.             hard_turn_right();
  142.         }
  143.         else if (dig.l3 == 0 && dig.l2 == 0 && dig.l1 == 0 && dig.r1 == 0 && dig.r2 == 0 && dig.r3 == 1)
  144.         {
  145.             linjalla = false;
  146.             // käänny vahva vasen
  147.             hard_turn_right();
  148.         }
  149.         else if (dig.l3 == 0 && dig.l2 == 0 && dig.l1 == 0 && dig.r1 == 1 && dig.r2 == 1 && dig.r3 == 1)
  150.         {
  151.             linjalla = false;
  152.             // käänny vahva vasen
  153.             hard_turn_right();
  154.         }
  155.         else if (dig.l3 == 0 && dig.l2 == 0 && dig.l1 == 0 && dig.r1 == 1 && dig.r2 == 0 && dig.r3 == 0)
  156.         {
  157.             linjalla = false;
  158.             // käänny loiva vasen
  159.             mild_turn_right();
  160.         }
  161.         else if (dig.l3 == 0 && dig.l2 == 0 && dig.l1 == 1 && dig.r1 == 0 && dig.r2 == 0 && dig.r3 == 0)
  162.         {
  163.             linjalla = false;
  164.             // käänny loiva oikea
  165.             mild_turn_left();
  166.         }
  167.          else if (dig.l3 == 0 && dig.l2 == 1 && dig.l1 == 0 && dig.r1 == 0 && dig.r2 == 0 && dig.r3 == 0)
  168.         {
  169.             linjalla = false;
  170.             // käänny loiva oikea
  171.             mild_turn_left();
  172.         }
  173.         else if (dig.l3 == 1 && dig.l2 == 1 && dig.l1 == 1 && dig.r1 == 1 && dig.r2 == 1 && dig.r3 == 1)
  174.         {
  175.             // kaikki on ykkösiä
  176.             if (linjalaskuri == 0)
  177.             {
  178.                 motor_forward(0, 0);
  179.                 IR_wait();
  180.                 led = !led;
  181.                 linjalla = true;
  182.                 linjalaskuri++;
  183.             }
  184.             else if (linjalaskuri == 1)
  185.             {
  186.                 if (!linjalla)
  187.                 {
  188.                     motor_forward(0,0);
  189.                     linjalla = true;
  190.                     linjalaskuri++;
  191.                 }
  192.                 //linjalaskuri++;
  193.             }    
  194.            
  195.             else
  196.             {
  197.                 motor_forward(0,0);          
  198.             }
  199.             /*
  200.             if (!linjalla)
  201.             {
  202.                 linjalaskuri++;
  203.                 linjalla = true;
  204.             }
  205.                */
  206.            
  207.         }
  208.         else
  209.         {
  210.             motor_forward_fixed(70,0);
  211.         }
  212.             // lisää iffejä...
  213.      
  214.      
  215.  
  216.     }
  217. }
  218. #endif
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement