coche regetonero

a
mail@pastecode.io avatar
unknown
plain_text
a year ago
3.8 kB
2
Indexable
Never
//Potencia motor
const int potencia = 150;
//Configuración de los motores. 
//Motor 1
const int motorAPin1  = 5;  // Pin 14 de L293
const int motorAPin2  = 6;  // Pin 10 de L293
const int infrarrojosA = 8;
//Motor 2
const int motorBPin3  = 10; // Pin  7 de L293
const int motorBPin4  = 9;  // Pin  2 de L293
const int infrarrojosB =7;
//Ultrasonidos
const int echo = 11;
const int trigger = 12; 

//Luces 
const int LDR = A0; // Pin Analogico 0
const int Intermitente1 = 4; // Pin 4
const int Intermitente2 = 3; // Pin 3
const int Largas = 13; // Pin 13
const int Frenos = 2; // Pin 2
bool state = true;


void setup(){
    Serial.begin(9600);
    
    pinMode(motorAPin1, OUTPUT);
    pinMode(motorAPin2, OUTPUT);
    pinMode(motorBPin3, OUTPUT);
    pinMode(motorBPin4, OUTPUT);
    pinMode(infrarrojosA, INPUT);
    pinMode(infrarrojosB, INPUT);
    pinMode(echo, INPUT);
    pinMode(trigger, OUTPUT);
    pinMode(LDR, INPUT);
    pinMode(Intermitente1, OUTPUT);
    pinMode(Intermitente2, OUTPUT);
    pinMode(Largas,OUTPUT);
    pinMode(Frenos,OUTPUT);
}


void loop(){
    //Controlador motores
    if(state == true){
      if(digitalRead(infrarrojosA) == LOW){
        analogWrite(motorBPin3, potencia); // Al activar gira el motor A en sentido de las agujas del reloj. 
        analogWrite(motorBPin4, potencia); // Al activar gira el motor A en sentido contra las agujas del reloj. 
        digitalWrite(Intermitente1, HIGH);
      }
      else if(digitalRead(infrarrojosA) == HIGH){
        analogWrite(motorBPin3, potencia); // Al activar gira el motor B en sentido de las agujas del reloj. 
        digitalWrite(motorBPin4, LOW); // Al activar gira el motor B en sentido contra las agujas del reloj. 
        digitalWrite(Intermitente1, LOW);
      }
  
      if(digitalRead(infrarrojosB) == LOW){
        analogWrite(motorAPin1, potencia); // Al activar gira el motor A en sentido de las agujas del reloj.  
        analogWrite(motorAPin2, potencia); // Al activar gira el motor A en sentido contra las agujas del reloj. 
        digitalWrite(Intermitente2, HIGH);
      }
      else if(digitalRead(infrarrojosB) == HIGH){
        analogWrite(motorAPin1, potencia); // Al activar gira el motor B en sentido de las agujas del reloj. 
        digitalWrite(motorAPin2, LOW); // Al activar gira el motor B en sentido contra las agujas del reloj. 
        digitalWrite(Intermitente2, LOW);
      }
    }

    //Controlador leds

   Serial.print("Luz: ");
   Serial.print(analogRead(LDR));      //Enviamos serialmente el valor de la luz
   Serial.println();
   if(analogRead(LDR) > 750) {
   digitalWrite(Largas, LOW);
   }else {
   digitalWrite(Largas, HIGH);
   }
    //Controlador ultrasonidos
    long t; //timepo que demora en llegar el eco
    long d; //distancia en centimetros
  
    digitalWrite(trigger, HIGH);
    delayMicroseconds(10);          //Enviamos un pulso de 10us
    digitalWrite(trigger, LOW);
    
    t = pulseIn(echo, HIGH); //obtenemos el ancho del pulso
    d = t/59;             //escalamos el tiempo a una distancia en cm
    
    Serial.print("Distancia: ");
    Serial.print(d);      //Enviamos serialmente el valor de la distancia
    Serial.print("cm");
    Serial.println();
    delay(100);          //Hacemos una pausa de 100ms
    if(d < 15){
      digitalWrite(motorAPin1, LOW); // Al activar gira el motor A en sentido de las agujas del reloj. 
      digitalWrite(motorAPin2, LOW); // Al activar gira el motor A en sentido contra las agujas del reloj.
      digitalWrite(motorBPin3, LOW); // Al activar gira el motor A en sentido de las agujas del reloj. 
      digitalWrite(motorBPin4, LOW); // Al activar gira el motor A en sentido contra las agujas del reloj.
      digitalWrite(Frenos, HIGH);
      state = false;
    }else{
      state = true;
      digitalWrite(Frenos, LOW);
    }
}