Programa realizado para el trabajo: SISTEMA DE DETECCIÓN Y ALERTAS POR APROXIMACIÓN DE VEHÍCULOS EN ZONAS CIEGAS DE UNA MOTOCICLETA // JOSE ALBERTO RUIZ ORTEGA // UNIVERSIDAD NACIONAL DE COLOMBIA // SEDE MEDELLÍN // Realizado con colaboración del estudiante Jair Hernan Vargas y asesoría de los docentes: Gustavo Ramirez y Jesus Hernandez
Dependencies: DebouncedIn HCSR04 HCSR042 HCSR043 HCSR044 MMA8451Q TextLCD USBDevice mbed
main.cpp
- Committer:
- jaruiz
- Date:
- 2014-12-04
- Revision:
- 0:694ea51ef4bf
File content as of revision 0:694ea51ef4bf:
// // // SISTEMA DE DETECCIÓN Y ALERTAS POR APROXIMACIÓN DE VEHÍCULOS EN // ZONAS CIEGAS DE UNA MOTOCICLETA // // JOSE ALBERTO RUIZ ORTEGA // 1085262530 // // INGENIERIA DE CONTROL // // UNIVERSIDAD NACIONAL DE COLOMBIA // // Programa realizado para la detección de vehiculos que se acercan a una motocicleta. // Para la realización de este trabajo se contó con la colaboracion del estudiante Jair Hernán Vargas // //:::::::::::::::::: Librerías #include "mbed.h" #include "HCSR04.h" #include "HCSR042.h" #include "HCSR043.h" #include "HCSR044.h" #include "TextLCD.h" #include "MMA8451Q.h" #include "DebouncedIn.h" #define MMA8451_I2C_ADDRESS (0x1d<<1) //:::::::::::::::::: Puertos MMA8451Q acc(PTE25, PTE24, MMA8451_I2C_ADDRESS); PwmOut rojo(LED_RED); PwmOut verde(LED_GREEN); PwmOut azul(LED_BLUE); DigitalOut led2(PTE23); DigitalOut led3(PTE29); DigitalOut led4(PTC17); DigitalOut led5(PTA16); PwmOut ledD(PTC8); PwmOut ledI(PTC9); PwmOut sound(PTA12); DigitalOut ledbD(PTC7); DigitalOut ledbI(PTC0); DigitalOut ledgD(PTC5); DigitalOut ledgI(PTC6); HCSR04 sensor(PTD4, PTA13); HCSR042 sensor2(PTA5, PTD5); HCSR043 sensor3(PTA1, PTD0); HCSR044 sensor4(PTA4, PTD2); DebouncedIn button1(PTC12); //:::::::::::::::::::::::::::::: Display TextLCD lcd(PTB10, PTB11, PTE2, PTE3, PTE4, PTE5); //:::::::::::::::::::::::::::::: Variables float X,Y,Z; bool b; bool a; bool c; bool d; int e; float DD1; float DD2; //::::::::::::::::::::::::::::::::: PROGRAMA int main() { while(1){ //a=0; //b=0; //:::::::::::::::::::::::::: Acelerómetro X=acc.getAccX(); Y=acc.getAccY(); Z=acc.getAccZ(); rojo=1.0 - abs(X); verde=1.0 - abs(Y); azul=1.0 - abs(Z); wait(0.1); if (Y>=0.1) { led2=1; c=1; d=0; } else { led2=0; c=0; } if (Y<=-0.1) { d=1; c=0; led3=1; } else { led3=0; d=0; } // :::::::::::::::::::::::::::::::::: Selección de Modos lcd.locate(0,0); lcd.printf("e:%d ",e); wait(0.1); if (button1.falling()) { e=e+1; } if (e==3) { e=0; } // MODO CARRETERA if (e==0) { DD1=120; DD2=400; lcd.locate(0,0); lcd.printf("Modo Carretera"); wait(0.1); } // MODO CIUDAD if (e==1) { DD1=70; DD2=300; lcd.locate(0,1); lcd.printf("Modo Ciudad"); wait(0.1); } // MODO SIN ALARMAS if (e==2) { sound=0; lcd.locate(0,1); lcd.printf("Modo Sin Alarma"); wait(0.1); } //:::::::::::::::::::::::::::::::::::::::::::::SENSADO // SENSOR 1 DERECHA ________________________________________________________________________________________ long d = sensor.distance(1); lcd.locate(0,0); lcd.printf("DER:%d ",sensor.distance(1)); // SENSOR 2 IZQUIERDA ________________________________________________________________________________________ long s = sensor2.distance(1); lcd.locate(8,0); lcd.printf("IZQ:%d ",sensor2.distance(1)); // SENSOR 3 POSTERIOR ________________________________________________________________________________________ long p = sensor3.distance(1); lcd.locate(0,1); lcd.printf("FRN:%d ",sensor3.distance(1)); //wait(0.5); // SENSOR 4 FRONTAL ________________________________________________________________________________________ long q = sensor4.distance(1); lcd.locate(8,1); lcd.printf("TRS:%d ",sensor4.distance(1)); //wait(0.5); //:::::::::::::::::::::::: ALARMAS // ::::::::::::::::::::::::::::::::ALERTA MUY CERCANA DERECHA if (d>-1 && d<=DD1) { lcd.locate(0,0); lcd.printf("AMAXD "); ledbD=0; ledgD=0; ledD.period(4.0); // 4 second period //ledD.pulsewidth(0.2); // 2 second pulse (on) ledD.write(0.20f); // 50% duty cycle //while(1); // led flashing a=1; } // ::::::::::::::::::::::::::::::::ALERTA MUY CERCANA IZQUIERDA if(s>-1 && s<=DD1) { lcd.locate(8,0); lcd.printf("AMAXI "); ledbI=0; ledgI=0; ledI.period(6.0); // 4 second period //ledI.pulsewidth(0.2); // 2 second pulse (on) ledI.write(0.20f); // 50% duty cycle //while(1); // led flashing a=1; } // ::::::::::::::::::::::::::::::::ALERTA CERCANA DERECHA if(d>DD1 && d<=DD2) { ledD=0; ledbD=1; ledgD=0; a=1; lcd.locate(0,0); lcd.printf("AMIND "); } // ::::::::::::::::::::::::::::::::ALERTA CERCANA IZQUIERDA if(s>DD1 && s<=DD2) { ledI=0; ledbI=1; ledgI=0; a=1; lcd.locate(8,0); lcd.printf("AMINI "); } // ::::::::::::::::::::::::::::::::SIN ALERTAS DERECHA if(d>DD2) { ledD=0; ledbD=0; ledgD=1; a=0; lcd.locate(0,0); lcd.printf("NOALD "); } //:::::::::::::::::::::::::::::::: SIN ALERTAS IZQ if(s>DD2) { ledI=0; ledbI=0; ledgI=1; a=0; lcd.locate(8,0); lcd.printf("NOALI "); } // :::::::::::::::::::::::::::::::: SIN ALERTAS DERECHA if(d==-1) { ledD=0; ledbD=0; ledgD=1; a=0; lcd.locate(0,0); lcd.printf("NOALD "); } // :::::::::::::::::::::::::::::::: SIN ALERTAS IZQUIERDA if(s==-1) { ledI=0; ledbI=0; ledgI=1; a=0; lcd.locate(8,0); lcd.printf("NOALI "); } // ::::::::::::::::::::::::::::::::alarma POSTERIOR if (p<=100) { led4=1; } else { led4=0; } // ::::::::::::::::::::::::::::::::alarma POSTERIOR if (q<=100) { led5=1; } else { led5=0; } // :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::SONIDO if (abs(Y)>=0.1 && a==1) { sound=1; wait(0.07); sound=0; } } }