Lineas de código para tus proyectos.

Aquí encontrarás el código que usas en cada uno de tus proyectos.

Robót Seguidor de Línea

c++

// Sensor infrarojo
int pinInfraIzq = 12;
int pinInfraDer= 13;

int valorInfraIzq = 0;
int valorInfraDer = 0;

// MOTOR IZQUIERDO
const int pinIN1 = 5;
const int pinIN2 = 4;
const int pinENA = 3;

// MOTOR DERECHO
const int pinIN3 = 9;
const int pinIN4 = 10;
const int pinENB = 11;

const int velIzq = 70; // 0-255
const int velDer = 75; // 0-255

const int intEsperaAvanzaIzqDer = 200; // 110
const int intEsperaAvanza = 40; // 50
const int intEsperaAlto = 15; // 20

void setup() {
  Serial.begin(9600);
  //delay(1000);

  pinMode(pinInfraIzq, INPUT);
  pinMode(pinInfraDer, INPUT);

  pinMode(pinIN1, OUTPUT);
  pinMode(pinIN2, OUTPUT);
  pinMode(pinENA, OUTPUT);

  pinMode(pinIN3, OUTPUT);
  pinMode(pinIN4, OUTPUT);
  pinMode(pinENB, OUTPUT);

  // VCC SENSORES INFRAROJOS
  pinMode(A0, OUTPUT);
  pinMode(A1, OUTPUT);
  analogWrite(A0, 255);
  analogWrite(A1, 255);

  Alto();

  for(int i = 0; i < 5; i++){
    digitalWrite(LED_BUILTIN, HIGH);
    delay(300);
    digitalWrite(LED_BUILTIN, LOW);
    delay(100);
  }

}

void loop() {

  valorInfraIzq = digitalRead(pinInfraIzq);
  valorInfraDer = digitalRead(pinInfraDer);
  //Serial.println("Izq: " + String(valorInfraIzq) + " Der: " + String(valorInfraDer));

  if(valorInfraIzq == 0 && valorInfraDer == 0){
    Serial.println("Ninguno en linea");

    Alto();
    Avanza();
  }

  if(valorInfraIzq == 0 && valorInfraDer == 1){
    Serial.println("Derecho en linea");

    Alto();
    AvanzaIzquierdo();
  }

  if(valorInfraIzq == 1 && valorInfraDer == 0){
    Serial.println("Izquierdo en linea");

    Alto();
    AvanzaDerecho();
  }

  if(valorInfraDer == 1 && valorInfraIzq == 1){
    Serial.println("Ambos en linea");

    // SENTIDO DE GIRO
    Alto();
  }


}



void AvanzaIzquierdo(){
    // SENTIDO DE GIRO
    analogWrite (pinENA, 0.8*velDer);
    digitalWrite(pinIN1, HIGH);
    delay(intEsperaAvanzaIzqDer); // 200
}

void AvanzaDerecho(){
  // SENTIDO DE GIRO
  analogWrite (pinENB, 0.8*velIzq);
  digitalWrite(pinIN4, HIGH);
  delay(intEsperaAvanzaIzqDer); // 200
}

void Avanza(){

  // AVANZA IZQUIERDO
  analogWrite (pinENA, velIzq);
  digitalWrite(pinIN1, HIGH);

  // AVANZA DERECHO
  analogWrite (pinENB, velDer);
  digitalWrite(pinIN4, HIGH);

  delay(intEsperaAvanza); // 50
}


void Alto(){
  // SENTIDO DE GIRO
  digitalWrite(pinIN1,LOW);
  digitalWrite(pinIN2,LOW);
  digitalWrite(pinIN3,LOW);
  digitalWrite(pinIN4,LOW);

  // VELOCIDAD DE MOTORES
  analogWrite (pinENA, 0);
  analogWrite (pinENB, 0);
  delay(intEsperaAlto);
}


Web hosting by Somee.com