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).
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,
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:/*** 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(); } }
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(); } }