Advertisement
Guest User

babcia_v1.0

a guest
Mar 19th, 2018
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 4.10 KB | None | 0 0
  1.  
  2. const int czujodl= A4; //konf. czujnika odleglosci
  3. const int pinkier1= 4; //pin kierunku lewego
  4. const int pinpwm1 = 5; //pin predkosci lewej
  5. const int pinkier2= 7; //pin kierunku prawego
  6. const int pinpwm2 = 6; // pin predkosci prawej
  7. const int przyc= 2; //pin przycisku dotykowego
  8.  
  9. //konfriguracja czujnikow odbicia
  10. const int l2 = A5;
  11. const int l1 = A0;
  12. const int sr = A1;
  13. const int p1 = A2;
  14. const int p2 = A3;
  15.  
  16. //zmienne wartosci czujnikow odbicia
  17. int ol2 = 0;
  18. int ol1 = 0;
  19. int osr = 0;
  20. int op1 = 0;
  21. int op2 = 0;
  22.  
  23. double k = 0.6; //mnoznik (regulator P)
  24. double p = 35.0; //liczba pomocnicza
  25.  
  26. int odl= 0; //zmienna odległosci
  27. int pwm1=0; //zmienna wartości pwm lewego koła
  28. int pwm2=0; //zmienna wartosci pwm prawego kola
  29. boolean onoff = 0; //stan wlaczenia/wylaczenia
  30. void setup() {
  31.  
  32. pinMode(pinkier1, OUTPUT);
  33. pinMode(pinpwm1, OUTPUT);
  34. pinMode(pinkier2, OUTPUT);
  35. pinMode(pinpwm2, OUTPUT);
  36. pinMode(przyc, INPUT);
  37. Serial.begin(9600);
  38. }
  39.  
  40. void loop(){
  41.  
  42. //odczyt wskazań czujnikow odbicia
  43.  
  44.   ol2 = analogRead(l2);
  45.    ol1 = analogRead(l1);
  46.     osr = analogRead(sr);
  47.      op1 = analogRead(p1);
  48.       op2 = analogRead(p2);
  49.  
  50.       Serial.println(" ");
  51.  
  52. //wypisywanie wskazan na monitor
  53.       Serial.println(ol2);
  54.       Serial.println(ol1);
  55.       Serial.println(osr);
  56.       Serial.println(op1);
  57.       Serial.println(op2);
  58.       Serial.println(" ");
  59.  
  60. //konfiguracja wlaczenia i wylaczenia robota
  61. if(digitalRead(przyc)==LOW && onoff == 0)
  62. { onoff = 1;
  63. //zabezpieczenie przed wielokrotną zmianą stanu
  64.   while(digitalRead(przyc) == LOW)
  65.   {delay(100);
  66.   }
  67. }
  68. if(digitalRead(przyc)==LOW && onoff == 1)
  69. { onoff = 0;
  70.  
  71.  //wylaczenie silnikow
  72. digitalWrite(pinkier1,HIGH);
  73.  analogWrite(pinpwm1, 0);
  74.  digitalWrite(pinkier2,LOW);
  75.  analogWrite(pinpwm2, 0);
  76.  
  77. //zabezpieczenie przed wielokrotną zmianą stanu
  78.   while(digitalRead(przyc) == LOW)
  79.   {delay(100);
  80.   }
  81. }
  82.  
  83.  if(onoff == 1){
  84.  
  85.  //9 możliwych warunków na dzialania silnikow w zaleznosci od odczytow z czujnikow
  86.  if(ol2<500 && ol1<500 && osr>500 && op1<500 && op2<500) // czujnik sr
  87.  {
  88.  digitalWrite(pinkier1,HIGH);
  89.  analogWrite(pinpwm1, 220*k);
  90.  digitalWrite(pinkier2,LOW);
  91.  analogWrite(pinpwm2, 220*k);
  92.  Serial.println("sr");
  93.  }
  94.  
  95.    if(ol2<500 && ol1>500 && osr<500 && op1<500 && op2<500) // czujnik l1 i sr
  96.  {
  97.  digitalWrite(pinkier1,HIGH);
  98.  analogWrite(pinpwm1, (220-1*p)*k);
  99.  digitalWrite(pinkier2,LOW);
  100.  analogWrite(pinpwm2, 220*k);
  101.   Serial.println("l1");
  102.  }
  103.  
  104.   if(ol2<500 && ol1>500 && osr<500 && op1<500 && op2<500) // czujnik l1
  105.  {
  106.  digitalWrite(pinkier1,HIGH);
  107.  analogWrite(pinpwm1, (220-2*p)*k);
  108.  digitalWrite(pinkier2,LOW);
  109.  analogWrite(pinpwm2, 220*k);
  110.   Serial.println("l1");
  111.  }
  112.  
  113.  if(ol2>500 && ol1>500 && osr<500 && op1<500 && op2<500) // czujnik l1 i l2
  114.  {
  115.  digitalWrite(pinkier1,HIGH);
  116.  analogWrite(pinpwm1, (220-4*p)*k);
  117.  digitalWrite(pinkier2,LOW);
  118.  analogWrite(pinpwm2, 220*k);
  119.   Serial.println("l1");
  120.  }
  121.  
  122.  if(ol2>500 && ol1<500 && osr<500 && op1<500 && op2<500) // czujnik l2
  123.  {
  124.  digitalWrite(pinkier1,LOW);
  125.  analogWrite(pinpwm1, (220-2*p)*k);
  126.  digitalWrite(pinkier2,LOW);
  127.  analogWrite(pinpwm2, (220-2*p)*k);
  128.   Serial.println("l2");
  129.  }
  130.  
  131.  if(ol2<500 && ol1<500 && osr>500 && op1>500 && op2<500) // czujnik p1 i sr
  132.  {
  133.  digitalWrite(pinkier1,HIGH);
  134.  analogWrite(pinpwm1, 220*k);
  135.  digitalWrite(pinkier2,LOW);
  136.  analogWrite(pinpwm2, (220-1*p)*k);
  137.   Serial.println("p1");
  138.  }
  139.  
  140.   if(ol2<500 && ol1<500 && osr<500 && op1>500 && op2<500) // czujnik p1
  141.  {
  142.  digitalWrite(pinkier1,HIGH);
  143.  analogWrite(pinpwm1, 220*k);
  144.  digitalWrite(pinkier2,LOW);
  145.  analogWrite(pinpwm2, (220-2*p)*k);
  146.   Serial.println("p1");
  147.  }
  148.  
  149.  if(ol2<500 && ol1<500 && osr<500 && op1>500 && op2>500) // czujnik p1 i p2
  150.  {
  151.  digitalWrite(pinkier1,HIGH);
  152.  analogWrite(pinpwm1, 220*k);
  153.  digitalWrite(pinkier2,LOW);
  154.  analogWrite(pinpwm2, (220-4*p)*k);
  155.   Serial.println("p1");
  156.  }
  157.  
  158.   if(ol2<500 && ol1<500 && osr<500 && op1<500 && op2>500) // czujnik p2
  159.  {
  160.  digitalWrite(pinkier1,HIGH);
  161.  analogWrite(pinpwm1, (220-2*p)*k);
  162.  digitalWrite(pinkier2,HIGH);
  163.  analogWrite(pinpwm2, (220-2*p)*k);
  164.   Serial.println("p2");
  165.  }
  166.  
  167.  }
  168. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement