Advertisement
Guest User

parcialV2

a guest
Apr 25th, 2017
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 4.21 KB | None | 0 0
  1. #include <Servo.h>
  2.  
  3. /*
  4.  
  5.    SENSORES
  6.    Entradas analogas A0 a A8
  7.  
  8.    CONTROL SERVO
  9.    Pin 9
  10.  
  11.    SALIDAS MOTOR 1
  12.    Adelante - Pin 10
  13.    Atras - Pin 11
  14.    PWM - Pin 6
  15.  
  16.    SALIDAS MOTOR 2
  17.    Adelante - Pin 12
  18.    Atras - Pin 13
  19.    PWM - Pin 7
  20.  
  21. */
  22.  
  23. // Servo
  24. Servo direccion;
  25. int cabrilla = 9;
  26.  
  27. // Motor 1 - Izquierdo
  28. int adelante1 = 10;
  29. int atras1 = 11;
  30. int pwm1 = 6;
  31.  
  32. // Motor 2 - Derecho
  33. int adelante2 = 12;
  34. int atras2 = 13;
  35. int pwm2 = 7;
  36.  
  37. // Sensores
  38. int s1 = 0;
  39. int s2 = 1;
  40. int s3 = 2;
  41. int s4 = 3;
  42. int s5 = 4;
  43. int s6 = 5;
  44. int s7 = 6;
  45. int s8 = 7;
  46. int s9 = 8;
  47.  
  48. // Variables
  49. int vel = 255 * 0.45;
  50. int curva = 255 * 0.40;
  51. int limites[18];
  52.  
  53. int estado;
  54.  
  55. void setup() {
  56.   Serial.begin(9600);
  57.   // Auto Calibracion:
  58.   for (int i = 0; i < 9; i++) {
  59.     int sensor = analogRead(i);
  60.     limites[i * 2] = sensor - 8;
  61.     limites[i * 2 + 1] = sensor + 8;
  62.     delay(500);
  63.   }
  64.  
  65.   delay(500);
  66.  
  67.   // Calibracion Cabrilla:
  68.   direccion.attach(cabrilla);
  69.   direccion.write(110);
  70.   delay(1000);
  71.   direccion.write(70);
  72.   delay(1000);
  73.   direccion.write(90);
  74.   delay(1500);
  75.  
  76.   // Paso adelante
  77.   direccion.write(90);
  78.  
  79.   digitalWrite(adelante1, HIGH);
  80.   analogWrite(pwm1, 100);
  81.  
  82.   digitalWrite(adelante2, HIGH);
  83.   analogWrite(pwm2, 100);
  84.  
  85.   estado = 0;
  86. }
  87.  
  88. void parar() {
  89.   digitalWrite(adelante1, LOW);
  90.   digitalWrite(atras1, LOW);
  91.   analogWrite(pwm1, 0);
  92.  
  93.   digitalWrite(adelante2, LOW);
  94.   digitalWrite(atras2, LOW);
  95.   analogWrite(pwm2, 0);
  96.   delay(100);
  97. }
  98.  
  99. void adelante() {
  100.   // parar();
  101.   direccion.write(90);
  102.  
  103.   digitalWrite(adelante1, HIGH);
  104.   analogWrite(pwm1, vel);
  105.  
  106.   digitalWrite(adelante2, HIGH);
  107.   analogWrite(pwm2, vel);
  108. }
  109.  
  110. void atras() {
  111.   // parar();
  112.   digitalWrite(atras1, HIGH);
  113.   analogWrite(pwm1, vel);
  114.  
  115.   digitalWrite(atras2, HIGH);
  116.   analogWrite(pwm2, vel);
  117. }
  118.  
  119. void girarIzq(int grados) {
  120.   // parar();
  121.   digitalWrite(atras1, HIGH);
  122.   digitalWrite(adelante1, LOW);
  123.   analogWrite(pwm1, curva);
  124.   digitalWrite(adelante2, HIGH);
  125.   digitalWrite(atras2, LOW);
  126.   analogWrite(pwm2, curva);
  127.  
  128.   direccion.write(grados);
  129. }
  130.  
  131. void girarDer(int grados) {
  132.   // parar();
  133.   digitalWrite(atras2, HIGH);
  134.   digitalWrite(adelante2, LOW);
  135.   analogWrite(pwm2, curva);
  136.   digitalWrite(adelante1, HIGH);
  137.   digitalWrite(atras1, LOW);
  138.   analogWrite(pwm1, curva);
  139.  
  140.   direccion.write(grados);
  141. }
  142.  
  143. void loop() {
  144.  
  145.   s1 = analogRead(A0);
  146.   s2 = analogRead(A1);
  147.   s3 = analogRead(A2);
  148.   s4 = analogRead(A3);
  149.   s5 = analogRead(A4);
  150.   s6 = analogRead(A5);
  151.   s7 = analogRead(A6);
  152.   s8 = analogRead(A7);
  153.   s9 = analogRead(A8);
  154.  
  155.   //Adelante
  156.   if (s5 > limites[8] && s2 < limites[9]) {
  157.     if (estado == 0) {
  158.       adelante();
  159.     } else {
  160.       parar();
  161.       adelante();
  162.       estado = 0;
  163.     }
  164.   }
  165.  
  166.   //Giros Izquierda
  167.   else if (s1 > limites[0] && s1 < limites[1]) {
  168.     if (estado == 1) {
  169.       girarIzq(120);
  170.     } else {
  171.       parar();
  172.       girarIzq(120);
  173.       estado = 1;
  174.     }
  175.   } else if (s2 > limites[2] && s2 < limites[3]) {
  176.     if (estado == 1) {
  177.       girarIzq(110);
  178.     } else {
  179.       parar();
  180.       girarIzq(110);
  181.       estado = 1;
  182.     }
  183.   } else if (s2 > limites[4] && s2 < limites[5]) {
  184.     if (estado == 1) {
  185.       girarIzq(100);
  186.     } else {
  187.       parar();
  188.       girarIzq(100);
  189.       estado = 1;
  190.     }
  191.   } else if (s3 > limites[6] && s3 < limites[7]) {
  192.     if (estado == 1) {
  193.       girarIzq(100);
  194.     } else {
  195.       parar();
  196.       girarIzq(100);
  197.       estado = 1;
  198.     }
  199.   }
  200.  
  201.   //Giros derecha
  202.   else if (s6 > limites[10] && s6 < limites[11]) {
  203.     if (estado == 2) {
  204.       girarDer(85);
  205.     } else {
  206.       parar();
  207.       girarDer(85);
  208.       estado = 2;
  209.     }
  210.   } else if (s7 > limites[12] && s7 < limites[13]) {
  211.     if (estado == 2) {
  212.       girarDer(80);
  213.     } else {
  214.       parar();
  215.       girarDer(80);
  216.       estado = 2;
  217.     }
  218.   } else if (s8 > limites[14] && s8 < limites[15]) {
  219.     if (estado == 2) {
  220.       girarDer(70);
  221.     } else {
  222.       parar();
  223.       girarDer(70);
  224.       estado = 2;
  225.     }
  226.   } else if (s9 > limites[16] && s9 < limites[17]) {
  227.     if (estado == 2) {
  228.       girarDer(60);
  229.     } else {
  230.       parar();
  231.       girarDer(60);
  232.       estado = 2;
  233.     }
  234.   }
  235.  
  236.   else {
  237.     parar();
  238.   }
  239. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement