Proyecto Final

Dependencies:   Servo mbed

Fork of final_info by oscar orozco

Committer:
AndreaC
Date:
Tue Dec 02 05:35:13 2014 +0000
Revision:
1:af64df8411f5
Proyecto final de la clase de Informatica Industrial

Who changed what in which revision?

UserRevisionLine numberNew contents of line
AndreaC 1:af64df8411f5 1 #include "mbed.h" // Librería de mbed
AndreaC 1:af64df8411f5 2 #include "Servo.h" // Librería del servo; para controlar el servo
AndreaC 1:af64df8411f5 3
AndreaC 1:af64df8411f5 4 Serial bt(PTE0, PTE1); // Establece puertos que comunican con el bluetooth, como también una varialbe llamada "bt" para dichos puertos
AndreaC 1:af64df8411f5 5 Serial pc(USBTX,USBRX); // comunicacion serial con la computadora
AndreaC 1:af64df8411f5 6
AndreaC 1:af64df8411f5 7 PwmOut servo(PTA5); // Establece una variable Pwm llamada "servo"
AndreaC 1:af64df8411f5 8
AndreaC 1:af64df8411f5 9 PwmOut valorBuzzer(PTB1); // Establece una variable Pwm llamada "valorBuzzer"
AndreaC 1:af64df8411f5 10
AndreaC 1:af64df8411f5 11 PwmOut ledDeFotoresistencia(PTC8); // Establece una variable pwm llamada "led"
AndreaC 1:af64df8411f5 12 AnalogIn valorFotoresistencia(PTB3); // Establece una variable Analogica llamada "valorFotoresistencia", esta variable la resive la freedom,
AndreaC 1:af64df8411f5 13
AndreaC 1:af64df8411f5 14 DigitalOut ledDeSensorMovimiento(PTC9); // Establece el led controlado por el sensor de movimiento
AndreaC 1:af64df8411f5 15 DigitalIn SensorMovimiento = (PTB0); // Pin de lectura del sensor de movimiento
AndreaC 1:af64df8411f5 16
AndreaC 1:af64df8411f5 17 Timer timer; // Declara un timer para la funcion del sensor de movimiento
AndreaC 1:af64df8411f5 18
AndreaC 1:af64df8411f5 19 int valorReedSwitch = 0; // variable para conoser el estado del reed switch
AndreaC 1:af64df8411f5 20 DigitalIn reedSwitch(PTA13); // puerto del reed switch
AndreaC 1:af64df8411f5 21
AndreaC 1:af64df8411f5 22 void f_SensorMovimiento() // Funcion que controla el sensor de moviminto
AndreaC 1:af64df8411f5 23 {
AndreaC 1:af64df8411f5 24 timer.start(); // Inicializa el timer
AndreaC 1:af64df8411f5 25 while(timer <= 3) // Por tres segundos...
AndreaC 1:af64df8411f5 26 {
AndreaC 1:af64df8411f5 27 ledDeSensorMovimiento = 1; // se enciende el led
AndreaC 1:af64df8411f5 28 }
AndreaC 1:af64df8411f5 29 timer.stop(); // Detiene el timer
AndreaC 1:af64df8411f5 30 timer.reset(); // Reinicia el tiemr
AndreaC 1:af64df8411f5 31 ledDeSensorMovimiento = 0; // Led se apaga
AndreaC 1:af64df8411f5 32 }
AndreaC 1:af64df8411f5 33
AndreaC 1:af64df8411f5 34 void f_Fotoresistencia() // funcion de la fotoresistencia
AndreaC 1:af64df8411f5 35 {
AndreaC 1:af64df8411f5 36 float valor = valorFotoresistencia.read(); // lee es lavor de la fotoresistencia y la asigna a una variable flotante llamada "valor"
AndreaC 1:af64df8411f5 37
AndreaC 1:af64df8411f5 38 valor = ((valorFotoresistencia - 0.039) * (-10)); // Ecuacion que recorre los valores de la freedom
AndreaC 1:af64df8411f5 39
AndreaC 1:af64df8411f5 40 if(valor < 0) // Si el valor de la fotoresistencia es menor a cero...
AndreaC 1:af64df8411f5 41 {
AndreaC 1:af64df8411f5 42 valor = 0; // iguala el valor a 0
AndreaC 1:af64df8411f5 43 }
AndreaC 1:af64df8411f5 44 if(valor>1) // Si el valor es mayor a cero...
AndreaC 1:af64df8411f5 45 {
AndreaC 1:af64df8411f5 46 valor=1; // Iguala el valor a 1
AndreaC 1:af64df8411f5 47 }
AndreaC 1:af64df8411f5 48
AndreaC 1:af64df8411f5 49 ledDeFotoresistencia = valor; // Se enciende el led con una intencidad = al valor
AndreaC 1:af64df8411f5 50 }
AndreaC 1:af64df8411f5 51
AndreaC 1:af64df8411f5 52 void f_Buzzer() // Funcion del buzzer
AndreaC 1:af64df8411f5 53 {
AndreaC 1:af64df8411f5 54 bt.printf("Alarma Activada\n\r"); // Como respuesta, se imprime que la alarma ha sido activada
AndreaC 1:af64df8411f5 55 valorBuzzer.period_ms(1); // Define el periodo de PWM para el buzzer
AndreaC 1:af64df8411f5 56
AndreaC 1:af64df8411f5 57 timer.start(); // Inicia el timer
AndreaC 1:af64df8411f5 58 while(timer <= 5) // Por 5 segundos...
AndreaC 1:af64df8411f5 59 {
AndreaC 1:af64df8411f5 60 valorBuzzer = 0.5; // Se establece el ciclo de trabajo del buzzer, que es igual a encendido
AndreaC 1:af64df8411f5 61 ledDeSensorMovimiento = 1; // Se prenden unos leds
AndreaC 1:af64df8411f5 62 wait(0.3); // Establece un tiempo de espera para que el buzzer deje de sonar
AndreaC 1:af64df8411f5 63 valorBuzzer = 0; // Se establece el ciclo de trabajo del buzzer, que es igual a apagado
AndreaC 1:af64df8411f5 64 ledDeSensorMovimiento = 0; // Se apagan unos leds
AndreaC 1:af64df8411f5 65 wait(0.3); // Establece un tiempo de espera para que el buzzer vuelva a sonar
AndreaC 1:af64df8411f5 66 }
AndreaC 1:af64df8411f5 67 timer.stop(); // Detiene el timer
AndreaC 1:af64df8411f5 68 timer.reset(); // Reinicia el timer
AndreaC 1:af64df8411f5 69 }
AndreaC 1:af64df8411f5 70
AndreaC 1:af64df8411f5 71 int main() // Inicia el programa principal
AndreaC 1:af64df8411f5 72 {
AndreaC 1:af64df8411f5 73
AndreaC 1:af64df8411f5 74 bt.baud(9600); // Establece la comunicacion serial entre la KL25Z y el Bluethooth
AndreaC 1:af64df8411f5 75 servo.period_ms(20); // Asigna un periodo de PWM en milisegundos, para poder utilizar el servo
AndreaC 1:af64df8411f5 76
AndreaC 1:af64df8411f5 77 while(1) // Ciclo Infinito
AndreaC 1:af64df8411f5 78 {
AndreaC 1:af64df8411f5 79 if(bt.readable()) // Establece la conexion del bluethooth
AndreaC 1:af64df8411f5 80 {
AndreaC 1:af64df8411f5 81 char c = bt.getc(); // Recibe un caracter via bluethoth y lo asigna a una variable char
AndreaC 1:af64df8411f5 82
AndreaC 1:af64df8411f5 83 bt.printf("%c\n\r",c); // Como respuesta, para verificar que la informacion llego a la KL25Z,
AndreaC 1:af64df8411f5 84 // la imprime en la terminal del usuario
AndreaC 1:af64df8411f5 85 if (c == 'w')
AndreaC 1:af64df8411f5 86 { // Si el caracter mandado por el usuario es una "w"...
AndreaC 1:af64df8411f5 87
AndreaC 1:af64df8411f5 88 servo.pulsewidth_us(1800); // Se mueve el servo a la posicion 180°
AndreaC 1:af64df8411f5 89 bt.printf("Cochera Abierta\n\r"); // Se imprime en la terminal "Cochera Abierta"
AndreaC 1:af64df8411f5 90
AndreaC 1:af64df8411f5 91 }
AndreaC 1:af64df8411f5 92 if (c == 's')
AndreaC 1:af64df8411f5 93 { // Si el caracter mandado por el usuario es una "s"...
AndreaC 1:af64df8411f5 94
AndreaC 1:af64df8411f5 95 servo.pulsewidth_us(1000); // Se mueve el servo a la posicion 0°
AndreaC 1:af64df8411f5 96 bt.printf("Cochera Cerrada\n\r"); // Se imprime en la terminal "Cochera Cerrada"
AndreaC 1:af64df8411f5 97 }
AndreaC 1:af64df8411f5 98
AndreaC 1:af64df8411f5 99 if( c == 'p')
AndreaC 1:af64df8411f5 100 { // Si el caracter mandado por el usuario es una "p"...
AndreaC 1:af64df8411f5 101 f_Buzzer(); // Se manda llamar la función f_Buzzer
AndreaC 1:af64df8411f5 102 }
AndreaC 1:af64df8411f5 103
AndreaC 1:af64df8411f5 104 if (c == 'm')
AndreaC 1:af64df8411f5 105 { // Si el caracter mandado por el usuario es una "m"...
AndreaC 1:af64df8411f5 106
AndreaC 1:af64df8411f5 107 bt.printf("Iluminacion Automatica Activada\r"); // Imprime en la terminal "Iluminacion Automatica Activada"
AndreaC 1:af64df8411f5 108
AndreaC 1:af64df8411f5 109 while(c != 'v')
AndreaC 1:af64df8411f5 110 { // Si el bluethooth lee la que variable "c" es "v", se sale de este apartado
AndreaC 1:af64df8411f5 111 int valorSensorMovimiento = SensorMovimiento.read(); // Se lee el valor del sensor de movimiento
AndreaC 1:af64df8411f5 112 if (valorSensorMovimiento == 0) // Si el valor es 0, significa que hay movimiento, por lo tanto...
AndreaC 1:af64df8411f5 113 {
AndreaC 1:af64df8411f5 114 f_SensorMovimiento(); // manda llamar la funcion de movimiento
AndreaC 1:af64df8411f5 115 }
AndreaC 1:af64df8411f5 116 if(bt.readable())
AndreaC 1:af64df8411f5 117 { // Se reestablece la conexión del bluethooth para solicitar o verificar si se cumple la opción para salir del while(c != 'v')
AndreaC 1:af64df8411f5 118 c = bt.getc(); // Recibe un caracter via bluethoth y lo asigna a una variable
AndreaC 1:af64df8411f5 119 ledDeSensorMovimiento = 0; // Apaga el led si se sale de esta sección del código
AndreaC 1:af64df8411f5 120 }
AndreaC 1:af64df8411f5 121 }
AndreaC 1:af64df8411f5 122 bt.printf("Iluminacion Automatica Desactivada"); // Imprime en la terminal "Iluminacion Automatica Desactivada"
AndreaC 1:af64df8411f5 123 }
AndreaC 1:af64df8411f5 124
AndreaC 1:af64df8411f5 125 if (c == 'a')
AndreaC 1:af64df8411f5 126 { // Si el caracter mandado por el usuario es una "a"...
AndreaC 1:af64df8411f5 127
AndreaC 1:af64df8411f5 128 bt.printf("Sistema de Seguridad Activado\r"); // Imprime en la terminal "Sistema de Seguridad Activado"
AndreaC 1:af64df8411f5 129
AndreaC 1:af64df8411f5 130 while(c != 'v')
AndreaC 1:af64df8411f5 131 { // Cumple con la misma función que en - if (c == 'm') -
AndreaC 1:af64df8411f5 132 int valorSensorMovimiento = SensorMovimiento.read(); // Se lee el valor del sensor de movimiento
AndreaC 1:af64df8411f5 133 if (valorSensorMovimiento == 0) // Si el valor es 0, significa que hay movimiento, por lo tanto...
AndreaC 1:af64df8411f5 134 {
AndreaC 1:af64df8411f5 135 bt.printf("INTRUSO!"); // Imprime en la terminal "INTRUSO!"
AndreaC 1:af64df8411f5 136 while (c != 'e')
AndreaC 1:af64df8411f5 137 { // Si el bluethooth lee que el valor "c" es "v" se sale de este apartado
AndreaC 1:af64df8411f5 138 f_Buzzer();
AndreaC 1:af64df8411f5 139 if(bt.readable())
AndreaC 1:af64df8411f5 140 { // Reestablece la conexion del bluethooth para solisitar/revisar si se cumple la opción para salir del while(c!='e')
AndreaC 1:af64df8411f5 141 c = bt.getc();
AndreaC 1:af64df8411f5 142 ledDeSensorMovimiento = 0;
AndreaC 1:af64df8411f5 143 }
AndreaC 1:af64df8411f5 144 }
AndreaC 1:af64df8411f5 145 }
AndreaC 1:af64df8411f5 146 if(bt.readable())
AndreaC 1:af64df8411f5 147 { // Reestablece la conexion del bluethooth para solisitar/revisar si se cumple la opción para salir del while(c!='v')
AndreaC 1:af64df8411f5 148 c = bt.getc();
AndreaC 1:af64df8411f5 149 ledDeSensorMovimiento = 0;
AndreaC 1:af64df8411f5 150 }
AndreaC 1:af64df8411f5 151 }
AndreaC 1:af64df8411f5 152 bt.printf("Alarma Desactivada"); // Imprime en la terminal "Alarma Desactivada"
AndreaC 1:af64df8411f5 153 }
AndreaC 1:af64df8411f5 154
AndreaC 1:af64df8411f5 155 if(c =='f')
AndreaC 1:af64df8411f5 156 { // Si el caracter mandado por el usuario es una "f"...
AndreaC 1:af64df8411f5 157 bt.printf("Fotoresistencia Activada\r"); //Imprime en la terminal "Fotoresistencia Activada"
AndreaC 1:af64df8411f5 158
AndreaC 1:af64df8411f5 159 while(c != 'v')
AndreaC 1:af64df8411f5 160 { // Cumple con la misma función que en - if (c == 'm') -
AndreaC 1:af64df8411f5 161 f_Fotoresistencia(); // Manda llamar la funcion de la resistencia
AndreaC 1:af64df8411f5 162
AndreaC 1:af64df8411f5 163 if(bt.readable())
AndreaC 1:af64df8411f5 164 { // Reestablece la conexion del bluethooth para solisitar/revisar si se cumple la opción para salir del while(c!='v')
AndreaC 1:af64df8411f5 165 c = bt.getc();
AndreaC 1:af64df8411f5 166 ledDeFotoresistencia=0;
AndreaC 1:af64df8411f5 167 }
AndreaC 1:af64df8411f5 168 }
AndreaC 1:af64df8411f5 169 bt.printf("Fotoresistencia DESACTIVADA\n\r"); // Imprime en la terminal "Fotoresistencia DESACTIVADA"
AndreaC 1:af64df8411f5 170 }
AndreaC 1:af64df8411f5 171 }
AndreaC 1:af64df8411f5 172 }
AndreaC 1:af64df8411f5 173 }