how to control a servo with temp & humidity

Dependencies:   DHT22 Servo mbed

Revision:
5:86adb825bfd2
Parent:
4:c778b9ed6508
Child:
6:14000499d474
diff -r c778b9ed6508 -r 86adb825bfd2 main.cpp
--- a/main.cpp	Sat May 28 06:45:17 2016 +0000
+++ b/main.cpp	Sat May 28 09:33:39 2016 +0000
@@ -1,13 +1,3 @@
-/* mbed Seeed Archlink Temperature Humidity and Servo starter code
- * 
- * This program take the temperature humidity reading and writes to the USB serial
- * The servo is actuated for each loop-iteration
- * Fow how to view the serial output, please refer to the mbed serial cookbook: https://developer.mbed.org/handbook/Serial
- * 
- * Neil Tan
- */
-
-
 #include "mbed.h"   // this tells us to load mbed related functions
 #include "Servo.h"  // library for the Servo
 #include "DHT22.h"  // library for the Temp&Humidity sensor
@@ -15,40 +5,46 @@
 DigitalOut myled(LED1);  // used as an output for the sensor
 Servo myservo(p10);       // p10 works, using other pins is possible too
 DHT22 sensor(p6);        // the pin of the connected grove port
-Serial pc(USBTX, USBRX); // serial TX & RX
- 
-// this code runs when the microcontroller starts up
-int main() {
+Ticker fan;
+
+void fanFunction()
+{
+    // YOUR CODE HERE: read the sensor, set temp and hum variables
+    myservo = !myservo;
+}
 
+// this code runs when the microcontroller starts up
+int main()
+{
     bool status;
-    pc.printf("\r\nDHT Test program");
-    pc.printf("\r\n******************\r\n");
-    
+    float temp = 0;
+    float hum = 0;
+
     // spin a main loop all the time
     while (1) {
-        // turn off the LED
-        myled = 1;
-        
-        // YOUR CODE HERE: get the status of the sensor checksum, successful or failed
-        
-        
+        // led hearbeat
+        myled = !myled;
+        status = sensor.sample();
+
         // sensor checksum successful
         if (status) {
             // printf the temperature and humidity from the sensor
-            pc.printf("Temperature is %f C \r\n", sensor.getTemperature()/10.0f);  //the readings need to be divided by 10
-            pc.printf("Humidity is %f \r\n", sensor.getHumidity()/10.0f);
-            
-            
+            temp = sensor.getTemperature()/10.0f;
+            hum = sensor.getHumidity()/10.0f;
+            printf("Temperature is %f C \r\n", temp); 
+            printf("Humidity is %f \r\n", hum);
+
+            // start fanning if temperature > 25C or humidity > 90%
+            if(temp > 25 && hum > 80) {
+                printf("Starting Fan! \r\n");
+                fan.attach(fanFunction,0.5);
+            } else {
+                printf("Stopping Fan! \r\n");
+                fan.detach();
+            }
         } else {  // sensor checksum failed
-            pc.printf("Error reading sample \r\n");
+            printf("Error reading sample \r\n");
         }
-        
-        myservo = 0.0f;
-        wait(5);
-        myservo = 1.0f;
-        wait(5);
-        
-        // turn on the LED
-        myled = 0;
+        wait(2.0f);
     }
 }
\ No newline at end of file