Weather control switch for connected day. NXP LPC 1768 module. Ethernet connectivity.
Dependencies: EthernetInterface mbed-rtos mbed nanoservice_client_1_12
Fork of Trenton_Switch_LPC1768_WIFLY by
sensor_ctl.cpp
- Committer:
- andcor02
- Date:
- 2014-12-03
- Revision:
- 25:cb16c5248769
File content as of revision 25:cb16c5248769:
/** Implements Sensor Control for CES Instrumented Booth */ #include "mbed.h" #include "sensor_ctl.h" //#include "node_cfg.h" //Sensor Drivers #include "RHT03.h" #include "MAX9814.h" #include "sonar.h" #include "PIR.h" #include "SHARPIR.h" //Sensor MDS Resources #include "door_trip.h" #include "height.h" #include "kiosk_presence.h" #include "motion.h" #include "sound_level.h" #include "temperature.h" //Common Sensors RHT03 temperature(PTB2); MAX9814 microphone(PTB3); //Analogue in required. Timer sonarTimer; Sonar Sonar(PTB10, sonarTimer); //(AnalogIn required, Leave as SW2.) PIR pir(PTB2); //(InterruptPin), for PIR sensor, SHARPIR sharpir(PTB11); //(AnalogIn required), for IR door trip //Variables provided to rest of applications float current_temperature_value; float current_ambient_noise_value; //Either height XOR kiosk presence XOR PIR station... float current_door_height_value; bool current_presence_value; //Either from Kiosk or PIR #define KIOSK_MAX_RANGE 200; //Max range, centimetres... //And it might have a door trip.. bool current_door_trip_value; //Initialisation void init_sensors() { //TODO Initiate sensors, interrupts, etc. //Start the sonar pulse width timer... #if NODE_HEIGHT_STATION sonarTimer.start(); #elif NODE_KIOSK_STATION sonarTimer.start(); #endif } //timer handler functions void handle_temperature_report_timer() { if(temperature.readData() == RHT_ERROR_NONE) { //Only report valid data... current_temperature_value = temperature.getTemperatureC(); printf("Temperature Sample: %2.2f\r\n", current_temperature_value); // temperature_report(); } else { printf("Temperature Sampleing Failure\r\n"); } } void handle_microphone_sample_timer() { float sample = microphone.sound_level(); printf("Sound Sample: %2.2f\r\n", sample); if (sample > current_ambient_noise_value){ current_ambient_noise_value = sample; } } void handle_microphone_report_timer() { //Report. //sound_level_report(); //Reset noise... current_ambient_noise_value = 0; } void handle_door_height_sample_timer() { } void drive_height() { // current_height_value=/*obj*/.data_conversion_m(); // // if(current_height_value>1) { // if (current_height_value>maxValue){ // maxValue = current_height_value; // } // set=true; // } // // if(current_height_value<1 && set) { // current_height_value=maxValue; // height_report(); // maxValue=0,set=false; // } } void drive_door_trip() { //// wait_ms(50); // value=.volt(); // // if (value>min+0.15) { // current_door_trip_value=1; // } // // else if (value<min+0.15) { // current_door_trip_value=0; // } // // if (last_reported_door_trip != current_door_trip) // door_trip_report(); } void drive_kiosk_presence() { // // if (kiosk.getdetection()) { // current_kiosk_presence_value=1; // } // // else current_kiosk_presence_value=0; // // if (last_reported_kiosk_presence != current_kiosk_presence) // kiosk_presence_report(); } void drive_motion() { // // if (pir.getdetection()) { // current_motion_value=1; // } // // else current_motion_value=0; // // if (last_reported_motion!= current_door_motion) // motion_report(); }