lunes, 21 de septiembre de 2026

CODIGO CARRO EVASOR DE OBSTACULOS

 CODIGO CARRO EVASOR DE OBSTACULOS


// ==========================================

// EVASOR DE OBSTACULOS

// Arduino UNO + L298N + HC-SR04

// ==========================================


// ---------- MOTORES ----------


const int ENA = 5;

const int IN1 = 8;

const int IN2 = 9;


const int ENB = 6;

const int IN3 = 10;

const int IN4 = 11;


// ---------- HC-SR04 ----------


const int TRIG = 3;

const int ECHO = 4;


// const int TRIG = 12;

// const int ECHO = 13;


// ---------- CONFIGURACION ----------


const int VELOCIDAD = 140;

const int DISTANCIA_MINIMA = 20;



// ==========================================

// FUNCIONES DE MOVIMIENTO

// ==========================================


void adelante() {


  digitalWrite(IN1, LOW);

  digitalWrite(IN2, HIGH);


  digitalWrite(IN3, LOW);

  digitalWrite(IN4, HIGH);


  analogWrite(ENA, VELOCIDAD);

  analogWrite(ENB, VELOCIDAD);

}



void atras() {


  digitalWrite(IN1, HIGH);

  digitalWrite(IN2, LOW);


  digitalWrite(IN3, HIGH);

  digitalWrite(IN4, LOW);


  analogWrite(ENA, VELOCIDAD);

  analogWrite(ENB, VELOCIDAD);

}



void izquierda() {


  digitalWrite(IN1, HIGH);

  digitalWrite(IN2, LOW);


  digitalWrite(IN3, LOW);

  digitalWrite(IN4, HIGH);


  analogWrite(ENA, VELOCIDAD);

  analogWrite(ENB, VELOCIDAD);

}



void derecha() {


  digitalWrite(IN1, LOW);

  digitalWrite(IN2, HIGH);


  digitalWrite(IN3, HIGH);

  digitalWrite(IN4, LOW);


  analogWrite(ENA, VELOCIDAD);

  analogWrite(ENB, VELOCIDAD);

}



void detener() {


  analogWrite(ENA, 0);

  analogWrite(ENB, 0);

}



// ==========================================

// MEDIR DISTANCIA

// ==========================================


float medirDistancia() {


  digitalWrite(TRIG, LOW);

  delayMicroseconds(2);


  digitalWrite(TRIG, HIGH);

  delayMicroseconds(10);


  digitalWrite(TRIG, LOW);


  long tiempo = pulseIn(ECHO, HIGH);


  float distancia = tiempo * 0.0343 / 2;


  return distancia;

}



// ==========================================

// CONFIGURACION

// ==========================================


void setup() {


  pinMode(ENA, OUTPUT);

  pinMode(IN1, OUTPUT);

  pinMode(IN2, OUTPUT);


  pinMode(ENB, OUTPUT);

  pinMode(IN3, OUTPUT);

  pinMode(IN4, OUTPUT);


  pinMode(TRIG, OUTPUT);

  pinMode(ECHO, INPUT);

}



// ==========================================

// PROGRAMA PRINCIPAL

// ==========================================


void loop() {


  float distancia = medirDistancia();


  if (distancia > DISTANCIA_MINIMA) {


    adelante();


  } 

  else {


    detener();

    delay(300);


    atras();

    delay(300);


    detener();

    delay(200);


    derecha();

    delay(600);


    detener();

    delay(200);

  }

}

No hay comentarios:

Publicar un comentario

CODIGO CARRO EVASOR DE OBSTACULOS

 CODIGO CARRO EVASOR DE OBSTACULOS // ========================================== // EVASOR DE OBSTACULOS // Arduino UNO + L298N + HC-SR04 //...