Carro Seguidor de Línea con Arduino, Puente H L298N y Sensores Infrarrojos |José Fidel|

แชร์
ฝัง
  • เผยแพร่เมื่อ 4 ต.ค. 2024
  • Hola a todos, mi nombre es José Fidel, soy estudiante de Ingeniería Mecatrónica, en el vídeo de hoy realicé un carro seguidor de línea negra, para reconocer dicha línea negra lo hice mediante dos sensores infrarrojos, además de la ayuda de un puente H L298N para controlar el sentido y velocidad de los motores, cómo microcontrolador utilicé un Arduino Uno, para la alimentación fue necesaria una batería de 9V, para probarlo realicé un circuito con cinta negra. Espero les guste y les sea de utilidad, no olviden dejar su like y suscribirse.

ความคิดเห็น • 40

  • @sergionunezvillacres
    @sergionunezvillacres 2 ปีที่แล้ว +1

    José Fidel cordial saludo. Excelente trabajo. Felicitaciones!

  • @josedanielhernandez6529
    @josedanielhernandez6529 2 ปีที่แล้ว +8

    Hola, muy buen aporte, me podrías compartir la programación.

  • @victorcalle2374
    @victorcalle2374 ปีที่แล้ว +1

    Buenas noches, excelente trabajo, me puedes facilitar el código fuente?

  • @danielyanez9823
    @danielyanez9823 2 ปีที่แล้ว +1

    Buen video bro me sirve demasiado para un proyecto pero una pregunta
    Puedes hacer que vaya un poco más rápido el carrito..?

  • @catalogorestrepo6615
    @catalogorestrepo6615 3 ปีที่แล้ว +5

    Excelente video, donde pudo conseguir el código de programación para ingresar al Arduino?

    • @BionicSpace13
      @BionicSpace13  3 ปีที่แล้ว +23

      Muchas gracias, aquí tienes el código:
      //Canal TH-cam:José Fidel
      // Definición de variables y constantes relacionadas con el motor izquierdo
      const int IN1 = 13; // Pin digital 13 para controlar sentido giro motor izquierdo
      const int IN2 = 12; // Pin digital 12 para controlar sentido giro motor izquierdo
      const int ENA = 6;

      // Definición de variables y constantes relacionadas con el motor derecho
      const int IN3 = 11; // Pin digital 11 para controlar sentido giro motor izquierdo
      const int IN4 = 10; // Pin digital 10 para controlar sentido giro motor izquierdo
      const int ENB = 5;

      const int vel = 70;
      const int vel2 = 90;
      const int vel3 = 55;
      const int vel4= 35;

      // Definición de variables y constantes relacionadas con los sensores IR
      int lecturaSensorIzq; // Almacena el valor de la lectura del sensor izquierdo
      int lecturaSensorDer; // Almacena el valor de la lectura del sensor derecho
      const int sensorIzqPin = A0; // El sensor izq irá conectado al pin analógico A0
      const int sensorDerPin = A1; // El sensor derecho irá conectado al pin analógico A1

      void setup()
      {
      // Se declaran todos los pines como salidas
      // Pines asociados a los motores
      pinMode (IN1, OUTPUT);
      pinMode (IN2, OUTPUT);
      pinMode (IN3, OUTPUT);
      pinMode (IN4, OUTPUT);
      pinMode (ENA, OUTPUT);
      pinMode (ENB, OUTPUT);
      pinMode( sensorIzqPin , INPUT) ;
      pinMode( sensorDerPin , INPUT) ;
      Serial.begin(9600); // Se inicia el puerto de comunicaciones en serie
      }

      void loop()
      {

      lecturaSensorIR(); // Se lee el valor de los sensores IR
      // Se analiza el resultado de los sensores para hacer que el robot siga la línea negra

      // Si el resultado de ambos sensores es 0 (zona blanca) el robot sigue se para
      if(lecturaSensorIzq == 1 && lecturaSensorDer == 1)
      {
      robotParar(); // El robot para

      }
      // Si el izquierdo retorna 0 (zona blanca) y el derecho 1 (negra) el robot gira derecha
      if (lecturaSensorIzq == 1 && lecturaSensorDer == 0)
      {
      robotIzquierda();
      // El robot gira a la derecha
      Serial.println("Gira Izquierda");

      }
      // Si el izquierdo retorna 1 (zona negra) y el derecho 0 (blanca) el robot gira izquierda
      if (lecturaSensorIzq == 0 && lecturaSensorDer == 1)
      {
      robotDerecha();


      }
      // Si ambos sensores retornan 0 (zona negra) el robot sigue recto
      if (lecturaSensorIzq == 0 && lecturaSensorDer == 0)
      {
      robotAvance(); // El robot avanza
      Serial.println("robot avanza");
      }

      }
      /*
      Función lecturaSensorIR: leerá el valor del sensor de infrarrojos TCRT5000
      y lo almacena en una variable. Dicho sensor retornará el valor 0 (LOW) si
      el sensor está en zona blanca y el valor 1 (HIGH) si el sensor está en zona
      negra.
      */
      void lecturaSensorIR()
      {
      lecturaSensorIzq = digitalRead(sensorIzqPin); // Almacena la lectura del sensor izquierdo
      lecturaSensorDer = digitalRead(sensorDerPin); // Almacena la lectura del sensor derecho

      Serial.println("El valor del sensor izquierdo es ");
      Serial.println(lecturaSensorIzq);

      Serial.println("El valor del sensor derecho es ");
      Serial.println(lecturaSensorDer);
      }
      /*
      Función robotAvance: esta función hará que ambos motores se activen a máxima potencia
      por lo que el robot avanzará hacia delante
      */
      void robotAvance()
      {
      // Motor izquierdo
      // Al mantener un pin HIGH y el otro LOW el motor gira en un sentido
      digitalWrite (IN1, HIGH);
      digitalWrite (IN2, LOW);
      analogWrite (ENA, vel); //Velocidad motor A

      // Motor derecho
      // Al mantener un pin HIGH y el otro LOW el motor gira en un sentido
      digitalWrite (IN3, HIGH);
      digitalWrite (IN4, LOW);
      analogWrite (ENB, vel); //Velocidad motor B
      }

      /*
      Función robotDerecha: esta función acccionará el motor izquierdo y parará el derecho
      por lo que el coche girará hacia la derecha (sentido horario)
      */
      void robotDerecha()
      {
      // Motor izquierdo
      // Se activa el motor izquierdo
      digitalWrite (IN1, HIGH);
      digitalWrite (IN2, LOW);
      analogWrite (ENA, vel3); //Velocidad motor A

      // Motor derecho
      // Se para el motor derecho
      digitalWrite (IN3, HIGH);
      digitalWrite (IN4, LOW);
      analogWrite (ENB, vel4); //Velocidad motor A

      }
      /*
      Función robotIzquierda: esta función acccionará el motor derecho y parará el izquierdo
      por lo que el coche girará hacia la izquierda (sentido antihorario)
      */
      void robotIzquierda ()
      {
      // Motor izquierdo
      // Se para el motor izquierdo
      digitalWrite (IN1, HIGH);
      digitalWrite (IN2, LOW);
      analogWrite (ENA, vel4); //Velocidad motor A

      // Motor derecho
      // Se activa el motor derecho
      digitalWrite (IN3, HIGH);
      digitalWrite (IN4, LOW);
      analogWrite (ENB, vel3); //Velocidad motor A
      }
      /*
      Función robotParar: esta función parará ambos motores
      por lo que el robot se parará.
      */
      void robotParar()
      {
      // Motor izquierdo
      // Se para el motor izquierdo
      digitalWrite (IN1, LOW);
      digitalWrite (IN2, LOW);

      // Motor derecho
      // Se para el motor derecho
      digitalWrite (IN3, LOW);
      digitalWrite (IN4, LOW);

      }

    • @edwarmolina5596
      @edwarmolina5596 2 ปีที่แล้ว

      @@BionicSpace13 bro no lo puedo copear

  • @jhonnycondorihuallpa5285
    @jhonnycondorihuallpa5285 2 ปีที่แล้ว +3

    hola muy interesante tu video me gusto mucho, me podrías ayudar con el código de programación

  • @roselydelarosaluchi4899
    @roselydelarosaluchi4899 2 ปีที่แล้ว +2

    Hola, bro. Cómo conectaste a los puertos ENA y ENB del puente H? es que mis jumpers quedan muy flojos, gracias por tan buen video

    • @BionicSpace13
      @BionicSpace13  ปีที่แล้ว

      Hola, mándame mensaje a Instagram, saludos!

  • @yassirbruce7912
    @yassirbruce7912 ปีที่แล้ว

    me gusto ese video, podrías compartirme la programación.

  • @azteiklag2989
    @azteiklag2989 2 ปีที่แล้ว +1

    Se pueden usar los sensores TCRT5000 con ese código que tienes o cambia ?

    • @BionicSpace13
      @BionicSpace13  ปีที่แล้ว

      No lo sé, necesito checar, mándame mensaje a Instagram

  • @jesusalejandrosantanavelas5565
    @jesusalejandrosantanavelas5565 3 ปีที่แล้ว +3

    Me podrías ayudar con el programa pero con sensores tcrt5000

    • @BionicSpace13
      @BionicSpace13  3 ปีที่แล้ว

      Mándame un correo y por ahí te lo paso con gusto!

  • @carlosenriquegonzalezmonca7249
    @carlosenriquegonzalezmonca7249 2 ปีที่แล้ว

    hola una pregunta ya prendio y todo pero no sé mueve el carrito las llantas no giran como lo soluciono?

  • @damiancabrera1022
    @damiancabrera1022 2 ปีที่แล้ว +1

    Disculpa el código puede funcionar de la misma forma pero con sensores tcrt5000

    • @BionicSpace13
      @BionicSpace13  ปีที่แล้ว

      No lo sé, necesito checar, mándame mensaje a Instagram

  • @tanyapereira2679
    @tanyapereira2679 5 หลายเดือนก่อน

    Hola! me podrías ayudar con el código para programarlo, por favor

  • @eliza_bethsp
    @eliza_bethsp 2 ปีที่แล้ว

    Como puedo hacer para que el carrito vaya a mas velocidad??

  • @yarleycamilomejiabedoya6369
    @yarleycamilomejiabedoya6369 2 ปีที่แล้ว

    Buenas Tardes
    Me podrias orientar respecto al montaje en proteus??? es que estoy tratando de hacer el diagrama y no se como hacerlo

  • @yahiromar25
    @yahiromar25 2 ปีที่แล้ว +2

    Me puedes pasar el código del carrito seguidor de línea.
    Saludod

    • @BionicSpace13
      @BionicSpace13  ปีที่แล้ว

      Mándame mensaje a Instagram, saludos!

  • @migueloswaldoordonezmelo6532
    @migueloswaldoordonezmelo6532 ปีที่แล้ว

    buena tarde.
    cual es la referencia de los sensores? y me puede colaborar con el codigo?
    gracias

  • @jonathanhuerta1147
    @jonathanhuerta1147 8 หลายเดือนก่อน

    Hola buenas noches
    Me podrías apoyar con los códigos del seguidor de línea

  • @memesovejosos9567
    @memesovejosos9567 2 ปีที่แล้ว +1

    Amigo como se llman los cables que usaste por favor qwq

  • @jaimeyulianzambranogarcia7794
    @jaimeyulianzambranogarcia7794 3 ปีที่แล้ว +2

    holaaa, me puedes hacer el favor de enviarme el codigo completo

    • @BionicSpace13
      @BionicSpace13  3 ปีที่แล้ว +1

      //Canal TH-cam:José Fidel
      // Definición de variables y constantes relacionadas con el motor izquierdo
      const int IN1 = 13; // Pin digital 13 para controlar sentido giro motor izquierdo
      const int IN2 = 12; // Pin digital 12 para controlar sentido giro motor izquierdo
      const int ENA = 6;

      // Definición de variables y constantes relacionadas con el motor derecho
      const int IN3 = 11; // Pin digital 11 para controlar sentido giro motor izquierdo
      const int IN4 = 10; // Pin digital 10 para controlar sentido giro motor izquierdo
      const int ENB = 5;

      const int vel = 70;
      const int vel2 = 90;
      const int vel3 = 55;
      const int vel4= 35;

      // Definición de variables y constantes relacionadas con los sensores IR
      int lecturaSensorIzq; // Almacena el valor de la lectura del sensor izquierdo
      int lecturaSensorDer; // Almacena el valor de la lectura del sensor derecho
      const int sensorIzqPin = A0; // El sensor izq irá conectado al pin analógico A0
      const int sensorDerPin = A1; // El sensor derecho irá conectado al pin analógico A1

      void setup()
      {
      // Se declaran todos los pines como salidas
      // Pines asociados a los motores
      pinMode (IN1, OUTPUT);
      pinMode (IN2, OUTPUT);
      pinMode (IN3, OUTPUT);
      pinMode (IN4, OUTPUT);
      pinMode (ENA, OUTPUT);
      pinMode (ENB, OUTPUT);
      pinMode( sensorIzqPin , INPUT) ;
      pinMode( sensorDerPin , INPUT) ;
      Serial.begin(9600); // Se inicia el puerto de comunicaciones en serie
      }

      void loop()
      {

      lecturaSensorIR(); // Se lee el valor de los sensores IR
      // Se analiza el resultado de los sensores para hacer que el robot siga la línea negra

      // Si el resultado de ambos sensores es 0 (zona blanca) el robot sigue se para
      if(lecturaSensorIzq == 1 && lecturaSensorDer == 1)
      {
      robotParar(); // El robot para

      }
      // Si el izquierdo retorna 0 (zona blanca) y el derecho 1 (negra) el robot gira derecha
      if (lecturaSensorIzq == 1 && lecturaSensorDer == 0)
      {
      robotIzquierda();
      // El robot gira a la derecha
      Serial.println("Gira Izquierda");

      }
      // Si el izquierdo retorna 1 (zona negra) y el derecho 0 (blanca) el robot gira izquierda
      if (lecturaSensorIzq == 0 && lecturaSensorDer == 1)
      {
      robotDerecha();


      }
      // Si ambos sensores retornan 0 (zona negra) el robot sigue recto
      if (lecturaSensorIzq == 0 && lecturaSensorDer == 0)
      {
      robotAvance(); // El robot avanza
      Serial.println("robot avanza");
      }

      }
      /*
      Función lecturaSensorIR: leerá el valor del sensor de infrarrojos TCRT5000
      y lo almacena en una variable. Dicho sensor retornará el valor 0 (LOW) si
      el sensor está en zona blanca y el valor 1 (HIGH) si el sensor está en zona
      negra.
      */
      void lecturaSensorIR()
      {
      lecturaSensorIzq = digitalRead(sensorIzqPin); // Almacena la lectura del sensor izquierdo
      lecturaSensorDer = digitalRead(sensorDerPin); // Almacena la lectura del sensor derecho

      Serial.println("El valor del sensor izquierdo es ");
      Serial.println(lecturaSensorIzq);

      Serial.println("El valor del sensor derecho es ");
      Serial.println(lecturaSensorDer);
      }
      /*
      Función robotAvance: esta función hará que ambos motores se activen a máxima potencia
      por lo que el robot avanzará hacia delante
      */
      void robotAvance()
      {
      // Motor izquierdo
      // Al mantener un pin HIGH y el otro LOW el motor gira en un sentido
      digitalWrite (IN1, HIGH);
      digitalWrite (IN2, LOW);
      analogWrite (ENA, vel); //Velocidad motor A

      // Motor derecho
      // Al mantener un pin HIGH y el otro LOW el motor gira en un sentido
      digitalWrite (IN3, HIGH);
      digitalWrite (IN4, LOW);
      analogWrite (ENB, vel); //Velocidad motor B
      }

      /*
      Función robotDerecha: esta función acccionará el motor izquierdo y parará el derecho
      por lo que el coche girará hacia la derecha (sentido horario)
      */
      void robotDerecha()
      {
      // Motor izquierdo
      // Se activa el motor izquierdo
      digitalWrite (IN1, HIGH);
      digitalWrite (IN2, LOW);
      analogWrite (ENA, vel3); //Velocidad motor A

      // Motor derecho
      // Se para el motor derecho
      digitalWrite (IN3, HIGH);
      digitalWrite (IN4, LOW);
      analogWrite (ENB, vel4); //Velocidad motor A

      }
      /*
      Función robotIzquierda: esta función acccionará el motor derecho y parará el izquierdo
      por lo que el coche girará hacia la izquierda (sentido antihorario)
      */
      void robotIzquierda ()
      {
      // Motor izquierdo
      // Se para el motor izquierdo
      digitalWrite (IN1, HIGH);
      digitalWrite (IN2, LOW);
      analogWrite (ENA, vel4); //Velocidad motor A

      // Motor derecho
      // Se activa el motor derecho
      digitalWrite (IN3, HIGH);
      digitalWrite (IN4, LOW);
      analogWrite (ENB, vel3); //Velocidad motor A
      }
      /*
      Función robotParar: esta función parará ambos motores
      por lo que el robot se parará.
      */
      void robotParar()
      {
      // Motor izquierdo
      // Se para el motor izquierdo
      digitalWrite (IN1, LOW);
      digitalWrite (IN2, LOW);

      // Motor derecho
      // Se para el motor derecho
      digitalWrite (IN3, LOW);
      digitalWrite (IN4, LOW);

      }

  • @cristiancamilocortesbaquer8135
    @cristiancamilocortesbaquer8135 3 ปีที่แล้ว +2

    hola donde puedo conseguir el codigo?

    • @BionicSpace13
      @BionicSpace13  3 ปีที่แล้ว

      //Canal TH-cam:José Fidel
      // Definición de variables y constantes relacionadas con el motor izquierdo
      const int IN1 = 13; // Pin digital 13 para controlar sentido giro motor izquierdo
      const int IN2 = 12; // Pin digital 12 para controlar sentido giro motor izquierdo
      const int ENA = 6;

      // Definición de variables y constantes relacionadas con el motor derecho
      const int IN3 = 11; // Pin digital 11 para controlar sentido giro motor izquierdo
      const int IN4 = 10; // Pin digital 10 para controlar sentido giro motor izquierdo
      const int ENB = 5;

      const int vel = 70;
      const int vel2 = 90;
      const int vel3 = 55;
      const int vel4= 35;

      // Definición de variables y constantes relacionadas con los sensores IR
      int lecturaSensorIzq; // Almacena el valor de la lectura del sensor izquierdo
      int lecturaSensorDer; // Almacena el valor de la lectura del sensor derecho
      const int sensorIzqPin = A0; // El sensor izq irá conectado al pin analógico A0
      const int sensorDerPin = A1; // El sensor derecho irá conectado al pin analógico A1

      void setup()
      {
      // Se declaran todos los pines como salidas
      // Pines asociados a los motores
      pinMode (IN1, OUTPUT);
      pinMode (IN2, OUTPUT);
      pinMode (IN3, OUTPUT);
      pinMode (IN4, OUTPUT);
      pinMode (ENA, OUTPUT);
      pinMode (ENB, OUTPUT);
      pinMode( sensorIzqPin , INPUT) ;
      pinMode( sensorDerPin , INPUT) ;
      Serial.begin(9600); // Se inicia el puerto de comunicaciones en serie
      }

      void loop()
      {

      lecturaSensorIR(); // Se lee el valor de los sensores IR
      // Se analiza el resultado de los sensores para hacer que el robot siga la línea negra

      // Si el resultado de ambos sensores es 0 (zona blanca) el robot sigue se para
      if(lecturaSensorIzq == 1 && lecturaSensorDer == 1)
      {
      robotParar(); // El robot para

      }
      // Si el izquierdo retorna 0 (zona blanca) y el derecho 1 (negra) el robot gira derecha
      if (lecturaSensorIzq == 1 && lecturaSensorDer == 0)
      {
      robotIzquierda();
      // El robot gira a la derecha
      Serial.println("Gira Izquierda");

      }
      // Si el izquierdo retorna 1 (zona negra) y el derecho 0 (blanca) el robot gira izquierda
      if (lecturaSensorIzq == 0 && lecturaSensorDer == 1)
      {
      robotDerecha();


      }
      // Si ambos sensores retornan 0 (zona negra) el robot sigue recto
      if (lecturaSensorIzq == 0 && lecturaSensorDer == 0)
      {
      robotAvance(); // El robot avanza
      Serial.println("robot avanza");
      }

      }
      /*
      Función lecturaSensorIR: leerá el valor del sensor de infrarrojos TCRT5000
      y lo almacena en una variable. Dicho sensor retornará el valor 0 (LOW) si
      el sensor está en zona blanca y el valor 1 (HIGH) si el sensor está en zona
      negra.
      */
      void lecturaSensorIR()
      {
      lecturaSensorIzq = digitalRead(sensorIzqPin); // Almacena la lectura del sensor izquierdo
      lecturaSensorDer = digitalRead(sensorDerPin); // Almacena la lectura del sensor derecho

      Serial.println("El valor del sensor izquierdo es ");
      Serial.println(lecturaSensorIzq);

      Serial.println("El valor del sensor derecho es ");
      Serial.println(lecturaSensorDer);
      }
      /*
      Función robotAvance: esta función hará que ambos motores se activen a máxima potencia
      por lo que el robot avanzará hacia delante
      */
      void robotAvance()
      {
      // Motor izquierdo
      // Al mantener un pin HIGH y el otro LOW el motor gira en un sentido
      digitalWrite (IN1, HIGH);
      digitalWrite (IN2, LOW);
      analogWrite (ENA, vel); //Velocidad motor A

      // Motor derecho
      // Al mantener un pin HIGH y el otro LOW el motor gira en un sentido
      digitalWrite (IN3, HIGH);
      digitalWrite (IN4, LOW);
      analogWrite (ENB, vel); //Velocidad motor B
      }

      /*
      Función robotDerecha: esta función acccionará el motor izquierdo y parará el derecho
      por lo que el coche girará hacia la derecha (sentido horario)
      */
      void robotDerecha()
      {
      // Motor izquierdo
      // Se activa el motor izquierdo
      digitalWrite (IN1, HIGH);
      digitalWrite (IN2, LOW);
      analogWrite (ENA, vel3); //Velocidad motor A

      // Motor derecho
      // Se para el motor derecho
      digitalWrite (IN3, HIGH);
      digitalWrite (IN4, LOW);
      analogWrite (ENB, vel4); //Velocidad motor A

      }
      /*
      Función robotIzquierda: esta función acccionará el motor derecho y parará el izquierdo
      por lo que el coche girará hacia la izquierda (sentido antihorario)
      */
      void robotIzquierda ()
      {
      // Motor izquierdo
      // Se para el motor izquierdo
      digitalWrite (IN1, HIGH);
      digitalWrite (IN2, LOW);
      analogWrite (ENA, vel4); //Velocidad motor A

      // Motor derecho
      // Se activa el motor derecho
      digitalWrite (IN3, HIGH);
      digitalWrite (IN4, LOW);
      analogWrite (ENB, vel3); //Velocidad motor A
      }
      /*
      Función robotParar: esta función parará ambos motores
      por lo que el robot se parará.
      */
      void robotParar()
      {
      // Motor izquierdo
      // Se para el motor izquierdo
      digitalWrite (IN1, LOW);
      digitalWrite (IN2, LOW);

      // Motor derecho
      // Se para el motor derecho
      digitalWrite (IN3, LOW);
      digitalWrite (IN4, LOW);

      }

  • @dariozambrano6740
    @dariozambrano6740 2 ปีที่แล้ว

    como se hace la programacion

  • @fernandoleana2618
    @fernandoleana2618 3 ปีที่แล้ว +2

    Buen video
    Tendrás el diagrama Bro ?

    • @BionicSpace13
      @BionicSpace13  3 ปีที่แล้ว

      Esta en el video bro, en el minuto 1:20

  • @moncho02
    @moncho02 2 ปีที่แล้ว

    Hola, alguien me puede decir cómo se llama la música de fondo del minuto 1:20 por favor.

  • @cristiandecker2180
    @cristiandecker2180 3 ปีที่แล้ว +1

    Hola… donde puedo conseguir el código

    • @BionicSpace13
      @BionicSpace13  3 ปีที่แล้ว +3

      //Canal TH-cam:José Fidel
      // Definición de variables y constantes relacionadas con el motor izquierdo
      const int IN1 = 13; // Pin digital 13 para controlar sentido giro motor izquierdo
      const int IN2 = 12; // Pin digital 12 para controlar sentido giro motor izquierdo
      const int ENA = 6;

      // Definición de variables y constantes relacionadas con el motor derecho
      const int IN3 = 11; // Pin digital 11 para controlar sentido giro motor izquierdo
      const int IN4 = 10; // Pin digital 10 para controlar sentido giro motor izquierdo
      const int ENB = 5;

      const int vel = 70;
      const int vel2 = 90;
      const int vel3 = 55;
      const int vel4= 35;

      // Definición de variables y constantes relacionadas con los sensores IR
      int lecturaSensorIzq; // Almacena el valor de la lectura del sensor izquierdo
      int lecturaSensorDer; // Almacena el valor de la lectura del sensor derecho
      const int sensorIzqPin = A0; // El sensor izq irá conectado al pin analógico A0
      const int sensorDerPin = A1; // El sensor derecho irá conectado al pin analógico A1

      void setup()
      {
      // Se declaran todos los pines como salidas
      // Pines asociados a los motores
      pinMode (IN1, OUTPUT);
      pinMode (IN2, OUTPUT);
      pinMode (IN3, OUTPUT);
      pinMode (IN4, OUTPUT);
      pinMode (ENA, OUTPUT);
      pinMode (ENB, OUTPUT);
      pinMode( sensorIzqPin , INPUT) ;
      pinMode( sensorDerPin , INPUT) ;
      Serial.begin(9600); // Se inicia el puerto de comunicaciones en serie
      }

      void loop()
      {

      lecturaSensorIR(); // Se lee el valor de los sensores IR
      // Se analiza el resultado de los sensores para hacer que el robot siga la línea negra

      // Si el resultado de ambos sensores es 0 (zona blanca) el robot sigue se para
      if(lecturaSensorIzq == 1 && lecturaSensorDer == 1)
      {
      robotParar(); // El robot para

      }
      // Si el izquierdo retorna 0 (zona blanca) y el derecho 1 (negra) el robot gira derecha
      if (lecturaSensorIzq == 1 && lecturaSensorDer == 0)
      {
      robotIzquierda();
      // El robot gira a la derecha
      Serial.println("Gira Izquierda");

      }
      // Si el izquierdo retorna 1 (zona negra) y el derecho 0 (blanca) el robot gira izquierda
      if (lecturaSensorIzq == 0 && lecturaSensorDer == 1)
      {
      robotDerecha();


      }
      // Si ambos sensores retornan 0 (zona negra) el robot sigue recto
      if (lecturaSensorIzq == 0 && lecturaSensorDer == 0)
      {
      robotAvance(); // El robot avanza
      Serial.println("robot avanza");
      }

      }
      /*
      Función lecturaSensorIR: leerá el valor del sensor de infrarrojos TCRT5000
      y lo almacena en una variable. Dicho sensor retornará el valor 0 (LOW) si
      el sensor está en zona blanca y el valor 1 (HIGH) si el sensor está en zona
      negra.
      */
      void lecturaSensorIR()
      {
      lecturaSensorIzq = digitalRead(sensorIzqPin); // Almacena la lectura del sensor izquierdo
      lecturaSensorDer = digitalRead(sensorDerPin); // Almacena la lectura del sensor derecho

      Serial.println("El valor del sensor izquierdo es ");
      Serial.println(lecturaSensorIzq);

      Serial.println("El valor del sensor derecho es ");
      Serial.println(lecturaSensorDer);
      }
      /*
      Función robotAvance: esta función hará que ambos motores se activen a máxima potencia
      por lo que el robot avanzará hacia delante
      */
      void robotAvance()
      {
      // Motor izquierdo
      // Al mantener un pin HIGH y el otro LOW el motor gira en un sentido
      digitalWrite (IN1, HIGH);
      digitalWrite (IN2, LOW);
      analogWrite (ENA, vel); //Velocidad motor A

      // Motor derecho
      // Al mantener un pin HIGH y el otro LOW el motor gira en un sentido
      digitalWrite (IN3, HIGH);
      digitalWrite (IN4, LOW);
      analogWrite (ENB, vel); //Velocidad motor B
      }

      /*
      Función robotDerecha: esta función acccionará el motor izquierdo y parará el derecho
      por lo que el coche girará hacia la derecha (sentido horario)
      */
      void robotDerecha()
      {
      // Motor izquierdo
      // Se activa el motor izquierdo
      digitalWrite (IN1, HIGH);
      digitalWrite (IN2, LOW);
      analogWrite (ENA, vel3); //Velocidad motor A

      // Motor derecho
      // Se para el motor derecho
      digitalWrite (IN3, HIGH);
      digitalWrite (IN4, LOW);
      analogWrite (ENB, vel4); //Velocidad motor A

      }
      /*
      Función robotIzquierda: esta función acccionará el motor derecho y parará el izquierdo
      por lo que el coche girará hacia la izquierda (sentido antihorario)
      */
      void robotIzquierda ()
      {
      // Motor izquierdo
      // Se para el motor izquierdo
      digitalWrite (IN1, HIGH);
      digitalWrite (IN2, LOW);
      analogWrite (ENA, vel4); //Velocidad motor A

      // Motor derecho
      // Se activa el motor derecho
      digitalWrite (IN3, HIGH);
      digitalWrite (IN4, LOW);
      analogWrite (ENB, vel3); //Velocidad motor A
      }
      /*
      Función robotParar: esta función parará ambos motores
      por lo que el robot se parará.
      */
      void robotParar()
      {
      // Motor izquierdo
      // Se para el motor izquierdo
      digitalWrite (IN1, LOW);
      digitalWrite (IN2, LOW);

      // Motor derecho
      // Se para el motor derecho
      digitalWrite (IN3, LOW);
      digitalWrite (IN4, LOW);

      }

  • @marisolyepezospino8140
    @marisolyepezospino8140 ปีที่แล้ว

    Hola muy buen aporte, me puedes pasar la hoja de programación a mi correo

  • @eliasfrias7659
    @eliasfrias7659 2 ปีที่แล้ว

    Hola podrias pasar el codigo solo para copiar y pegar?

  • @elcapichoco7703
    @elcapichoco7703 2 ปีที่แล้ว

    me podrías pasas el código el carrito bro