Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed Servo mbed-rtos MQ2 DHT
Revision 0:872bdbfc6c15, committed 2019-04-23
- Comitter:
- roycoll
- Date:
- Tue Apr 23 15:14:58 2019 +0000
- Child:
- 1:98989411e334
- Commit message:
- Edit
Changed in this revision
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/DHT.lib Tue Apr 23 15:14:58 2019 +0000 @@ -0,0 +1,1 @@ +https://os.mbed.com/teams/components/code/DHT/#6937e130feca
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/MQ2.lib Tue Apr 23 15:14:58 2019 +0000 @@ -0,0 +1,1 @@ +https://os.mbed.com/users/azazeal88/code/MQ2/#944051b30179
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Servo.lib Tue Apr 23 15:14:58 2019 +0000 @@ -0,0 +1,1 @@ +https://os.mbed.com/users/simon/code/Servo/#36b69a7ced07
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp Tue Apr 23 15:14:58 2019 +0000
@@ -0,0 +1,182 @@
+#include "mbed.h"
+#include "DHT.h"
+#include "MQ2.h"
+#include "rtos.h"
+#include "Servo.h"
+
+
+ DigitalIn Occupant(D10); //Hall Switch input shows to determine if vehicle is occupied
+ DigitalIn EngSw(D3); //Button D3 turns Engine on and off
+ DigitalOut Buzz(D2); //Alarm signaling high gas levels
+ DigitalOut Engine(D9); //Autoflash LED represents Engine running
+ DigitalOut Red(PTC3); //RED LED (RGB) D7
+ DigitalOut Green(PTC2); //GREEN LED (RGB) D6
+ DigitalOut Blue(PTA2); //BLUE LED (RGB) D5
+ DigitalOut Heat(LED1); //Red on-board LED
+ DigitalOut AC(LED3); //Blue on-board LED
+ DigitalOut led2(LED2); //Green on-board LED
+ DHT sensor(D4, DHT11); //Temperature and humidity sensor
+ PwmOut PWM1(A4); //pin A4 == pin A5
+ Serial pc(USBTX, USBRX);
+ MQ2 mq2(A1); // Analog Port to read from MQ2_gas sensor
+ Servo myservo(A5); //Servo signal to simulate a window opening or closing
+ InterruptIn sw2(SW2); //Switch used to manually switch between AC/Heater setting(led color)
+ InterruptIn sw3(SW3); //Switch used to manually open or close the window
+ float p = 0;
+ float h = 0.0f, c = 0.0f, f = 0.0f, k = 0.0f, dp = 0.0f, dpf = 0.0f;
+ int x = 1;
+ int win = 0;
+ int fan = 0; /*DC motor signal*/
+
+
+int main() {
+ myservo = p;
+ pc.baud(115200);
+ mq2.begin(); // 'Calibrate' sensor
+ MQ2_data_t MQ2_data; // Structure to hold data.
+ sensor.readData();
+ Engine = 0;
+ Heat = 1;
+ AC = 1;
+ led2 = 1;
+ int on = 1, off = 0;
+ int open = 1, closed = 0;
+ Buzz = !off;
+ win = closed;
+ PWM1.period_ms(500);
+ PWM1.pulsewidth_ms(fan);
+
+while (true)
+ { mq2.read(&MQ2_data);
+ PWM1.period_ms(500);
+ PWM1.pulsewidth_ms(fan);
+ int error = 0; //Thread::wait(250);
+ error = sensor.readData();
+ if (0 == error) {
+ c = sensor.ReadTemperature(CELCIUS);
+ f = sensor.ReadTemperature(FARENHEIT);
+ k = sensor.ReadTemperature(KELVIN);
+ h = sensor.ReadHumidity();
+ dp = sensor.CalcdewPoint(c, h);
+ dpf = sensor.CalcdewPointFast(c, h);
+ pc.printf("Temperature in Celcius: %4.2f\r\nTemperature in Farenheit: %4.2f\r\n", c, f);
+ //printf("Temperature in Kelvin: %4.2f,\r\nCelcius: %4.2f,\r\n Farenheit %4.2f\r\n", k, c, f);
+ //printf("Humidity is %4.2f, Dewpoint: %4.2f, Dewpoint fast: %4.2f\n", h, dp, dpf);
+ }
+ else {
+ pc.printf("Temperature in Celcius: %4.2f\r\nTemperature in Farenheit: %4.2f\r\n", c, f); //pc.printf("Error: %d\n", error);
+ }
+ //pc.printf("................................\r\n");
+ //mq2.read(&MQ2_data); // Alt reading method, reading to structure
+ pc.printf("CO PPM: %.0f\r\n",MQ2_data.co); // Return data from structure
+ //pc.printf("Smoke PPM: %.0f\r\n",MQ2_data.smoke); // Return data from structure
+ //pc.printf("LPG PPM: %.0f\r\n",MQ2_data.lpg); // Return data from structure
+ pc.printf("................................\r\n");
+ // wait(.1);
+ if(EngSw == 0) {
+ if(Engine == off){
+ Engine = on;}
+ else{
+ Engine = off;
+ AC = !off;
+ Heat = !off;
+ }
+ }
+ if((sw2 == 0) && (win == closed)){
+ for(; p<1.0 && sw2 == 0; p += 0.05) { //**Servo simulates opening a window if CarbonMonoxide level inside becomes too high while occupant is present
+ myservo = p;
+ wait(0.05);
+ }
+ win = open;
+ }
+ else if((win == open) && (sw2 == 0)){
+ for(; p>0 && sw2 ==0; p -= 0.05) {
+ myservo = p;
+ wait(0.05);
+ }
+ win = closed;
+ }
+ if(sw3 == 0 && Engine == on){ //***If switch3 is pressed
+ if(AC == !on)
+ { Heat = !on;AC = !off;}
+ else if(Heat == !on)
+ {Heat=!off;AC=!off;
+ fan=off; }
+ else
+ AC = !on;
+ }
+ if(Heat == !on || AC == !on) {
+ fan = 4;}
+ else if(Heat == !off && AC == !off){
+ fan = off;}
+ if(Occupant == 1){
+ Red = 0; //
+ Blue = 0; //(r,g,b) = (0,0,0) = white
+ Green = 0;
+ Buzz = !off; } //
+ else if(Occupant == 0)
+ {
+ if(MQ2_data.co>=300)
+ { // wait(.5); //
+ Red = 0; //
+ Blue = 1; //(r,g,b) = (0,1,1) = red
+ Green = 1; //
+ Buzz = !on;
+ if(win == closed){
+ for(; p<1.0; p += 0.05) { //**Servo simulates opening a window if CarbonMonoxide level inside becomes too high while occupant is present
+ myservo = p;
+ wait(0.05);
+ }
+ win = open;
+ }
+ if(win==open && Engine == on){
+ Engine = off;}
+ } //
+ else if(MQ2_data.co >=50 && MQ2_data.co <= 300)
+ { //wait(.5); //
+ Buzz = !off;
+ Blue = 1; //(r,g,b) = (0,0,1) = yellow
+ Green = 0; //
+ Red = 0; //
+ }//wait(.5); //**RGB end**
+ else{
+ Red = 1; //
+ Blue = 1; //(r,g,b) = (1,1,0) = green
+ Green = 0;
+ Buzz = !off;
+ }
+ if(f >= 80 || f <= 70) //Temperature from DHT
+ { Engine = on; //x = 10;
+ fan = 4;
+ if(f>=80){
+ AC = !on;Heat=!off;
+ if(win == closed){ //**Servo simulates opening a window if Temperature inside becomes too high while occupant is present
+ for(; p<1.0; p += 0.05) {
+ myservo = p;
+ wait(0.05);
+ }
+ win = open;
+ }
+ else if(f<=70)
+ { Heat = !on;AC=!off;
+ if(win == open){
+ for(; p>0; p -= 0.05) {
+ myservo = p;
+ wait(0.05);
+ }
+ win = closed;
+ }
+ }
+ }
+ }
+ else if(Occupant == 0 && AC == !on){
+ Engine = on; //x = 10;
+ fan= 4;
+ }
+ else if(Occupant == 0 && Heat == !on){
+ Engine = on; //x = 10;
+ fan=4;
+ } //**DC motor sig end
+ }
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed-rtos.lib Tue Apr 23 15:14:58 2019 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/mbed_official/code/mbed-rtos/#34e80e862021
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed.bld Tue Apr 23 15:14:58 2019 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/mbed_official/code/mbed/builds/6213f644d804 \ No newline at end of file