Proyecto Final

Dependencies:   Servo mbed

Fork of final_info by oscar orozco

Final_Informatica_Industrial.cpp

Committer:
AndreaC
Date:
2014-12-02
Revision:
1:af64df8411f5

File content as of revision 1:af64df8411f5:

#include "mbed.h"   // Librería de mbed
#include "Servo.h"  // Librería del servo; para controlar el servo
 
Serial bt(PTE0, PTE1);                    // Establece puertos que comunican con el bluetooth, como también una varialbe llamada "bt" para dichos puertos
Serial pc(USBTX,USBRX);                   // comunicacion serial con la computadora 

PwmOut servo(PTA5);                       // Establece una variable Pwm llamada "servo"

PwmOut valorBuzzer(PTB1);                 // Establece una variable Pwm llamada "valorBuzzer"

PwmOut ledDeFotoresistencia(PTC8);        // Establece una variable pwm llamada "led"
AnalogIn valorFotoresistencia(PTB3);      // Establece una variable Analogica llamada "valorFotoresistencia", esta variable la resive la freedom, 

DigitalOut ledDeSensorMovimiento(PTC9);   // Establece el led controlado por el sensor de movimiento
DigitalIn SensorMovimiento = (PTB0); // Pin de lectura del sensor de movimiento

Timer timer;                              // Declara un timer para la funcion del sensor de movimiento
 
int valorReedSwitch = 0;                  // variable para conoser el estado del reed switch
DigitalIn reedSwitch(PTA13);              // puerto del reed switch
 
void f_SensorMovimiento()                 // Funcion que controla el sensor de moviminto
{
    timer.start();                        // Inicializa el timer
    while(timer <= 3)                     // Por tres segundos...
    {
        ledDeSensorMovimiento = 1;        // se enciende el led
    }
    timer.stop();                         // Detiene el timer
    timer.reset();                        // Reinicia el tiemr
    ledDeSensorMovimiento = 0;            // Led se apaga
}
 
void f_Fotoresistencia() // funcion de la fotoresistencia
{                            
    float valor = valorFotoresistencia.read();    // lee es lavor de la fotoresistencia y la asigna a una variable flotante llamada "valor"
    
    valor = ((valorFotoresistencia - 0.039) * (-10)); // Ecuacion que recorre los valores de la freedom
    
    if(valor < 0)  // Si el valor de la fotoresistencia es menor a cero...  
    {                                    
        valor = 0; // iguala el valor a 0
    }                                               
    if(valor>1)    // Si el valor es mayor a cero...
    {                                                                           
        valor=1;   // Iguala el valor a 1
    }
    
    ledDeFotoresistencia = valor;  // Se enciende el led con una intencidad = al valor 
}      
 
 void f_Buzzer()  // Funcion del buzzer
 {                 
    bt.printf("Alarma Activada\n\r");   // Como respuesta, se imprime que la alarma ha sido activada
    valorBuzzer.period_ms(1);           // Define el periodo de PWM para el buzzer
    
    timer.start();     // Inicia el timer
    while(timer <= 5)  // Por 5 segundos...
    {
        valorBuzzer = 0.5;          // Se establece el ciclo de trabajo del buzzer, que es igual a encendido
        ledDeSensorMovimiento = 1;  // Se prenden unos leds
        wait(0.3);                  // Establece un tiempo de espera para que el buzzer deje de sonar
        valorBuzzer = 0;            // Se establece el ciclo de trabajo del buzzer, que es igual a apagado
        ledDeSensorMovimiento = 0;  // Se apagan unos leds
        wait(0.3);                  // Establece un tiempo de espera para que el buzzer vuelva a sonar
    }
    timer.stop();  // Detiene el timer
    timer.reset(); // Reinicia el timer
 }
 
int main() // Inicia el programa principal
{
 
    bt.baud(9600);       // Establece la comunicacion serial entre la KL25Z y el Bluethooth
    servo.period_ms(20); // Asigna un periodo de PWM en milisegundos, para poder utilizar el servo 
    
    while(1)  // Ciclo Infinito 
    {
        if(bt.readable())           // Establece la conexion del bluethooth
        {
            char c = bt.getc();     // Recibe un caracter via bluethoth y lo asigna a una variable char
            
            bt.printf("%c\n\r",c);  // Como respuesta, para verificar que la informacion llego a la KL25Z,
                                    // la imprime en la terminal del usuario
            if (c == 'w')
            { // Si el caracter mandado por el usuario es una "w"...
            
                servo.pulsewidth_us(1800);        // Se mueve el servo a la posicion 180°
                bt.printf("Cochera Abierta\n\r"); // Se imprime en la terminal "Cochera Abierta"
          
            }
            if (c == 's')
            { // Si el caracter mandado por el usuario es una "s"...
            
                servo.pulsewidth_us(1000);       // Se mueve el servo a la posicion 0°
                bt.printf("Cochera Cerrada\n\r"); // Se imprime en la terminal "Cochera Cerrada"
            }
            
            if( c == 'p')
            { // Si el caracter mandado por el usuario es una "p"...
                f_Buzzer(); // Se manda llamar la función f_Buzzer
            }
            
            if (c == 'm')                                     
            { // Si el caracter mandado por el usuario es una "m"...
             
                bt.printf("Iluminacion Automatica Activada\r"); // Imprime en la terminal  "Iluminacion Automatica Activada"
                
                while(c != 'v')  
                { // Si el bluethooth lee la que variable "c" es "v", se sale de este apartado
                    int valorSensorMovimiento = SensorMovimiento.read(); // Se lee el valor del sensor de movimiento 
                    if (valorSensorMovimiento == 0)                      // Si el valor es 0, significa que hay movimiento, por lo tanto... 
                    {                                       
                        f_SensorMovimiento(); // manda llamar la funcion de movimiento
                    }
                    if(bt.readable()) 
                    { // Se reestablece la conexión del bluethooth para solicitar o verificar si se cumple la opción para salir del while(c != 'v') 
                        c = bt.getc();              // Recibe un caracter via bluethoth y lo asigna a una variable 
                        ledDeSensorMovimiento = 0;  // Apaga el led si se sale de esta sección del código
                    }   
                }
                bt.printf("Iluminacion Automatica Desactivada"); // Imprime en la terminal "Iluminacion Automatica Desactivada"
            }
            
            if (c == 'a')
            { // Si el caracter mandado por el usuario es una "a"...
                
                bt.printf("Sistema de Seguridad Activado\r");   // Imprime en la terminal "Sistema de Seguridad Activado"
                
                while(c != 'v')                                
                { // Cumple con la misma función que en - if (c == 'm') -
                    int valorSensorMovimiento = SensorMovimiento.read();  // Se lee el valor del sensor de movimiento
                    if (valorSensorMovimiento == 0)                       // Si el valor es 0, significa que hay movimiento, por lo tanto... 
                    {
                        bt.printf("INTRUSO!");  // Imprime en la terminal "INTRUSO!"
                        while (c != 'e')
                        { // Si el bluethooth lee que el valor "c" es "v" se sale de este apartado      
                            f_Buzzer();
                            if(bt.readable()) 
                            { // Reestablece la conexion del bluethooth para solisitar/revisar si se cumple la opción para salir del while(c!='e')              
                                c = bt.getc();
                                ledDeSensorMovimiento = 0;        
                            }
                        }
                    }
                    if(bt.readable()) 
                    { // Reestablece la conexion del bluethooth para solisitar/revisar si se cumple la opción para salir del while(c!='v') 
                        c = bt.getc();
                        ledDeSensorMovimiento = 0;
                    }
                }
                bt.printf("Alarma Desactivada"); // Imprime en la terminal "Alarma Desactivada"
            }
            
            if(c =='f')
            { // Si el caracter mandado por el usuario es una "f"...
                bt.printf("Fotoresistencia Activada\r"); //Imprime en la terminal "Fotoresistencia Activada"
                
                while(c != 'v')
                { // Cumple con la misma función que en - if (c == 'm') -
                    f_Fotoresistencia(); // Manda llamar la funcion de la resistencia
                    
                    if(bt.readable())
                    { // Reestablece la conexion del bluethooth para solisitar/revisar si se cumple la opción para salir del while(c!='v') 
                        c = bt.getc();          
                        ledDeFotoresistencia=0;       
                    }
                }
                bt.printf("Fotoresistencia DESACTIVADA\n\r");  // Imprime en la terminal "Fotoresistencia DESACTIVADA"
            }
        }
    }
}