CCCPaste

CARRITO EVITA OBSTACULO-UNS 2022

#define ledPin 13
#define motorDerecha1 4
#define motorDerecha2 5
#define motorIzquierda1 2
#define motorIzquierda2 3
#define echoPin 6
#define triggerPin 7

char estado = 'q';

void setup() {
  pinMode(ledPin, OUTPUT);
  pinMode(motorDerecha1, OUTPUT);
  pinMode(motorDerecha2, OUTPUT);
  pinMode(motorIzquierda1, OUTPUT);
  pinMode(motorIzquierda2, OUTPUT);
  pinMode(triggerPin, OUTPUT);
  pinMode(echoPin, INPUT);

  digitalWrite(ledPin, LOW);
  digitalWrite(motorDerecha1, LOW);
  digitalWrite(motorDerecha2, LOW);
  digitalWrite(motorIzquierda1, LOW);
  digitalWrite(motorIzquierda2, LOW);
  
  Serial.begin(9600);
}

void loop() {
 
  long tiempo;
  long distancia;
  
  digitalWrite(triggerPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(triggerPin, LOW);

  tiempo = pulseIn(echoPin, HIGH);
  distancia = (tiempo/29)/3;
  Serial.println(distancia);
  Serial.println(estado);


  if(distancia <= 15) {
    digitalWrite(ledPin, HIGH);
  } else {
    digitalWrite(ledPin, LOW);
  }
  
  //adelante y evadir
  if(estado == 'w' && distancia <= 15) {
    digitalWrite(motorDerecha1, LOW);
    digitalWrite(motorDerecha2, HIGH);
    digitalWrite(motorIzquierda1, HIGH);
    digitalWrite(motorIzquierda2, LOW);
  }


  //adelante
  if(estado == 'w' && distancia > 15) {
    digitalWrite(motorDerecha1, HIGH);
    digitalWrite(motorDerecha2, LOW);
    digitalWrite(motorIzquierda1, HIGH);
    digitalWrite(motorIzquierda2, LOW);
   
  }

  //atras
  if(estado == 's') {
    digitalWrite(motorDerecha1, LOW);
    digitalWrite(motorDerecha2, HIGH);
    digitalWrite(motorIzquierda1, LOW);
    digitalWrite(motorIzquierda2, HIGH);
  }

  //stop
  if(estado == 'q') {
    digitalWrite(motorDerecha1, LOW);
    digitalWrite(motorDerecha2, LOW);
    digitalWrite(motorIzquierda1, LOW);
    digitalWrite(motorIzquierda2, LOW);
  }

  //derecha
  if(estado == 'd' && distancia <= 15) {
    digitalWrite(motorDerecha1, LOW);
    digitalWrite(motorDerecha2, HIGH);
    digitalWrite(motorIzquierda1, HIGH);
    digitalWrite(motorIzquierda2, LOW);
  }


  if(estado == 'd' && distancia > 15) {
    digitalWrite(motorDerecha1, LOW);
    digitalWrite(motorDerecha2, LOW);
    digitalWrite(motorIzquierda1, HIGH);
    digitalWrite(motorIzquierda2, LOW);
  }

  //izquierda
  if(estado == 'a' && distancia <= 15) {
    digitalWrite(motorDerecha1, HIGH);
    digitalWrite(motorDerecha2, LOW);
    digitalWrite(motorIzquierda1, LOW);
    digitalWrite(motorIzquierda2, HIGH);
  }

  if(estado == 'a' && distancia > 15) {
    digitalWrite(motorDerecha1, HIGH);
    digitalWrite(motorDerecha2, LOW);
    digitalWrite(motorIzquierda1, LOW);
    digitalWrite(motorIzquierda2, LOW);
  }
 
}


void serialEvent() {
    if(Serial.available() > 0 ){
      int  x = Serial.read();
      if(x>=97) {
        estado = (char) x;
      }
  }
}