Using 5 sensors(luminance, motion, tempurature, humanity, air_quality) to control

Dependencies:   Air_Quality DHT mbed-src

main.cpp

Committer:
ysy00700
Date:
2015-08-11
Revision:
1:f9339d95123d
Parent:
0:d0e594c3fb6c

File content as of revision 1:f9339d95123d:

#include "mbed.h"
#include "DHT.h"
#include"Air_Quality.h"

AirQuality airqualitysensor;
int current_quality = -1;
PinName analogPin = A0;

DHT sensor(D3, DHT11);
InterruptIn motion(D2);
AnalogIn luminance(A1);

DigitalOut led_R(LED_RED);
DigitalOut led_G(LED_GREEN);
DigitalOut led_B(LED_BLUE);

int motion_detected = 0;

// Interrupt Handler
void AirQualityInterrupt()
{
    AnalogIn sensor(analogPin);
    airqualitysensor.last_vol = airqualitysensor.first_vol;
    airqualitysensor.first_vol = sensor.read()*1000;
    airqualitysensor.timer_index = 1;
}

void irq_handler(void)
{
    motion_detected = 1;
}

int main()
{
    int error = 0;
    float hum = 0.0f;
    float cel = 0.0f;
    
    airqualitysensor.init(analogPin, AirQualityInterrupt);
    
    int cnt = 0;
    motion.rise(&irq_handler);
    
    while(1)
    {
        wait(0.1);
        error = sensor.readData();
        
        if (0 == error) {
            hum = sensor.ReadHumidity();
            cel = sensor.ReadTemperature(CELCIUS);
            printf(" 1. Humidity : %4.2f\r\n\n", hum);
            printf(" 2. Temperature in Celcius : %2.2f\r\n\n", cel);
            
            {
                if (hum > 70) {  // if celcius is higher than 28, LED_RED on.
                    led_R = 0;   // LED_RED on
                    led_B = 1;   // LED_BLUE off
                }
                else{ 
                    led_R = 1;   // LED_RED off
                    led_B = 0;   // LED_BLUE on
                }
            }
            {
                if(cel > 28) {  // if celcius is higher than 28, LED_RED on.
                    led_R = 0;   // LED_RED on
                    led_B = 1;   // LED_BLUE off
                }
                else { 
                    led_R = 1;   // LED_RED off
                    led_B = 0;   // LED_BLUE on
                }
            }
        }
        else {
            printf("Error : %d\n", error);
        }
        
        if(motion_detected) {
            cnt++;
            motion_detected = 0;
            /*led_R = 1;
            led_G = 1;
            led_B = 1;*/
            
            printf("3. Something move%d\r\n\n", cnt);
            wait(0.1); 
        }
        
        if(luminance.read()){
            
            if(0.1<=luminance.read()&&luminance.read()<=0.3){
                led_R=0; led_G=0; led_B=1;}   // yellow LED on
                
            else{
                led_R=1; led_G=1; led_B=1;}   // led off
             
            printf("4. Luminance: %f\r\n\n", luminance.read());    
            wait(0.1);
        }
        else {
            led_R=0; led_G=0; led_B=0;    // white LED on 
            printf("4. Luminance: %f\r\n\n", luminance.read());
            wait(0.1);         
        }
        //air quality sensor
        current_quality=airqualitysensor.slope();
        if (current_quality >= 0) { // if a valid data returned.
            if (current_quality == 0){
                printf("5. High pollution! Force signal active\n\r\n");
               // led1 = 0;
               // led2 = 1;
            }
            else if (current_quality == 1){
                printf("5. High pollution!\n\r\n");
              //  led1 = 0;
               // led2 = 1;
            }
            else if (current_quality == 2){
                printf("5. Low pollution!\n\n\r");
              //  led1 = 0;
              //  led2 = 1;
            }
            else if (current_quality == 3){
                printf("5. Fresh air\n\r\n");
              //  led1 = 1;
              //  led2 = 0;
            } 
        }
        
    }
}
/*
AnalogIn luminance(A0);
InterruptIn motion(D2);

DigitalOut RED(LED1, 1);
DigitalOut GREEN(LED2, 1);
DigitalOut BLUE(LED3, 1);

int motion_detected = 0;

void irq_handler(void)
{
    motion_detected = 1;
}

int main()
{
    int cnt = 0;
    motion.rise(&irq_handler);
    
    while (true) {
        
        //grove motion sensor
        if(motion_detected) {
            cnt++;
            motion_detected = 0;
            RED = 0;
            GREEN = 1;
            BLUE = 1;
            wait(1);
            printf("Something move%d\r\n", cnt);
        }
         
        //luminance sensor
        if(luminance.read()){
            
            if(0.1<=luminance.read()&&luminance.read()<=0.3){
                RED=0; GREEN=0; BLUE=1;}   // yellow LED on
                
            else{
                RED=1; GREEN=1; BLUE=1;}   // led off
             
            printf("Luminance: %f\r\n", luminance.read());    
            wait(0.5f);
        }
        else {
            RED=0; GREEN=0; BLUE=0;    // white LED on 
            printf("Luminance: %f\r\n", luminance.read());
            wait(0.5f);         
        }
                    
    }
}*/
/*
InterruptIn motion(D2);

DigitalOut RED(LED1, 1);
DigitalOut GREEN(LED2, 1);
DigitalOut BLUE(LED3, 1);

int motion_detected = 0;

void irq_handler(void)
{
    motion_detected = 1;
}

int main()
{
    int cnt = 0;
    motion.rise(&irq_handler);
    
    while (true) {
        
        //grove motion sensor
        if(motion_detected) {
            cnt++;
            motion_detected = 0;
            RED = 0;
            GREEN = 1;
            BLUE = 1;
            wait(1);
            printf("Something move%d\r\n", cnt);
        }
                    
    }
}*/