COCHE (17/05/18)

COMPAÑEROS DE GRUPO: GGS10/MGB9/GMC20

En este proyecto, tenemos que conseguir que un coche que construiremos, pueda con ayuda de unos sensores infrarrojos seguir una línea negra, y más a delante, poder girar una curva de 90º.

Para hacer esto necesitamos:

- Una placa Arduino para conectar el controlador de motor,


- Un controlador de motor para conectar los componentes del circuito,

- Motores para hacer que el coche se mueva,


- Sensores infrarrojos para detectar el color de la superficie por la que se desplaza el coche
- Y el chasis del coche

Bien, a continuación mostraremos nuestro código (en bloques y en c).


/***   Included libraries  ***/


/***   Global variables and function definition  ***/
const int INFRARROJOS_D = 2;
const int INFRARROJOS_I = 3;
const int IN1 = 11;
const int IN3 = 12;
const int IN4 = 13;
const int IN2 = 10;
const int ENA = 5;
const int ENB = 6;

float VELOCIDAD = 175;
void AVANZAR() {
    digitalWrite(IN1, HIGH);
    digitalWrite(IN2, LOW);
    digitalWrite(IN3, HIGH);
    digitalWrite(IN4, LOW);
    analogWrite(6, VELOCIDAD);
    analogWrite(5, VELOCIDAD);
}
void DERECHA() {
    digitalWrite(IN1, HIGH);
    digitalWrite(IN2, LOW);
    digitalWrite(IN3, LOW);
    digitalWrite(IN4, HIGH);
    analogWrite(6, VELOCIDAD);
    analogWrite(5, VELOCIDAD);
}
void IZQUIERDA() {
    digitalWrite(IN1, LOW);
    digitalWrite(IN2, HIGH);
    digitalWrite(IN3, HIGH);
    digitalWrite(IN4, LOW);
    analogWrite(6, VELOCIDAD);
    analogWrite(5, VELOCIDAD);
}
void DETENER() {
    digitalWrite(ENA, LOW);
    digitalWrite(ENB, LOW);
    digitalWrite(IN1, LOW);
    digitalWrite(IN2, LOW);
    digitalWrite(IN3, LOW);
    digitalWrite(IN4, LOW);
}



/***   Setup  ***/
void setup() {
    pinMode(INFRARROJOS_D, INPUT);
    pinMode(INFRARROJOS_I, INPUT);
    pinMode(IN1, OUTPUT);
    pinMode(IN3, OUTPUT);
    pinMode(IN4, OUTPUT);
    pinMode(IN2, OUTPUT);
    pinMode(ENA, OUTPUT);
    pinMode(ENB, OUTPUT);

}


/***   Loop  ***/
void loop() {
    float INFRARROJOS_DERECHA = digitalRead(INFRARROJOS_I);
    float INFRARROJOS_IZQUIERDA = digitalRead(INFRARROJOS_D);
    if (((INFRARROJOS_DERECHA == 1) && (INFRARROJOS_IZQUIERDA == 1))) {
        AVANZAR();
    } else if (((INFRARROJOS_DERECHA == 1) && (INFRARROJOS_IZQUIERDA == 0))) {
        DERECHA();
    } else if (((INFRARROJOS_DERECHA == 0) && (INFRARROJOS_IZQUIERDA == 1))) {
        IZQUIERDA();
    } else if (((INFRARROJOS_DERECHA == 0) && (INFRARROJOS_IZQUIERDA == 0))) {
        DETENER();
    }
}
Pero para terminar este curso, hemos hecho lo imposible, hemos desarrollado un código que hace que el coche pueda girar la curva de 90º. Aquí te dejamos el código en bloques y en c de nuestra propuesta:

CAMBIOS DE LA PROPUESTA:



/***   Included libraries  ***/


/***   Global variables and function definition  ***/
const int INFRARROJOS_D = 2;
const int INFRARROJOS_I = 3;
const int IN1 = 11;
const int IN3 = 12;
const int IN4 = 13;
const int IN2 = 10;
const int ENA = 5;
const int ENB = 6;

float VELOCIDAD = 100;
void AVANZAR() {
    digitalWrite(IN1, HIGH);
    digitalWrite(IN2, LOW);
    digitalWrite(IN3, HIGH);
    digitalWrite(IN4, LOW);
    analogWrite(6, VELOCIDAD);
    analogWrite(5, VELOCIDAD);
}
void DERECHA() {
    digitalWrite(IN1, HIGH);
    digitalWrite(IN2, LOW);
    digitalWrite(IN3, LOW);
    digitalWrite(IN4, HIGH);
    analogWrite(6, VELOCIDAD);
    analogWrite(5, VELOCIDAD);
}
void IZQUIERDA() {
    digitalWrite(IN1, LOW);
    digitalWrite(IN2, HIGH);
    digitalWrite(IN3, HIGH);
    digitalWrite(IN4, LOW);
    analogWrite(6, VELOCIDAD);
    analogWrite(5, VELOCIDAD);
}
void DETENER() {
    digitalWrite(ENA, LOW);
    digitalWrite(ENB, LOW);
    digitalWrite(IN1, LOW);
    digitalWrite(IN2, LOW);
    digitalWrite(IN3, LOW);
    digitalWrite(IN4, LOW);
}



/***   Setup  ***/
void setup() {
    pinMode(INFRARROJOS_D, INPUT);
    pinMode(INFRARROJOS_I, INPUT);
    pinMode(IN1, OUTPUT);
    pinMode(IN3, OUTPUT);
    pinMode(IN4, OUTPUT);
    pinMode(IN2, OUTPUT);
    pinMode(ENA, OUTPUT);
    pinMode(ENB, OUTPUT);

}


/***   Loop  ***/
void loop() {
    float INFRARROJOS_DERECHA = digitalRead(INFRARROJOS_I);
    float INFRARROJOS_IZQUIERDA = digitalRead(INFRARROJOS_D);
    if (((INFRARROJOS_DERECHA == 1) && (INFRARROJOS_IZQUIERDA == 1))) {
        AVANZAR();
    } else if (((INFRARROJOS_DERECHA == 1) && (INFRARROJOS_IZQUIERDA == 0))) {
        DERECHA();
    } else if (((INFRARROJOS_DERECHA == 0) && (INFRARROJOS_IZQUIERDA == 1))) {
        IZQUIERDA();
    } else if (((INFRARROJOS_DERECHA == 0) && (INFRARROJOS_IZQUIERDA == 0))) {
        IZQUIERDA();
    }
}

Entradas populares de este blog

TIPOS DE SENSORES EN LA ROBÓTICA

SOPHIA (PRÁCTICA VOLUNTARIA)

EL LENGUAJE DE PROGRAMACIÓN DE LA ROBÓTICA (PRÁCTICA VOLUNTARIA)