RX for Temperature Controlled Fan

Dependencies:   4DGL-uLCD-SE EthernetInterface HTTPClient Motor mbed-rtos mbed

Files at this revision

API Documentation at this revision

Comitter:
TimothyY
Date:
Fri Apr 29 01:07:58 2016 +0000
Commit message:
FinalRx

Changed in this revision

4DGL-uLCD-SE.lib Show annotated file Show diff for this revision Revisions of this file
EthernetInterface.lib Show annotated file Show diff for this revision Revisions of this file
HTTPClient.lib Show annotated file Show diff for this revision Revisions of this file
Motor.lib Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
mbed-rtos.lib Show annotated file Show diff for this revision Revisions of this file
mbed.bld Show annotated file Show diff for this revision Revisions of this file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/4DGL-uLCD-SE.lib	Fri Apr 29 01:07:58 2016 +0000
@@ -0,0 +1,1 @@
+https://mbed.org/users/4180_1/code/4DGL-uLCD-SE/#e39a44de229a
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/EthernetInterface.lib	Fri Apr 29 01:07:58 2016 +0000
@@ -0,0 +1,1 @@
+http://developer.mbed.org/users/mbed_official/code/EthernetInterface/#4d7bff17a592
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/HTTPClient.lib	Fri Apr 29 01:07:58 2016 +0000
@@ -0,0 +1,1 @@
+http://developer.mbed.org/users/donatien/code/HTTPClient/#277279a1891e
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Motor.lib	Fri Apr 29 01:07:58 2016 +0000
@@ -0,0 +1,1 @@
+http://developer.mbed.org/users/simon/code/Motor/#f265e441bcd9
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Fri Apr 29 01:07:58 2016 +0000
@@ -0,0 +1,173 @@
+#include "mbed.h"
+#include "rtos.h"
+#include "Motor.h"
+#include "uLCD_4DGL.h"
+#include "EthernetInterface.h"
+#include "HTTPClient.h"
+ 
+#define Room_TempC 23.0
+#define Room_TempF 78.0
+//#define Normal_BTempC 30.0
+#define Normal_BTempF ((9.0/5.0)*Normal_BTempC) + 32
+ 
+Motor m(p21, p19, p20); // pwm, fwd, rev 
+  
+DigitalOut myled(LED1);
+DigitalOut myLED2(LED2);
+DigitalOut myLED3(LED3);
+DigitalOut myLED4(LED4);
+
+InterruptIn pb1(p30);
+InterruptIn pb2(p29);
+
+uLCD_4DGL uLCD(p13,p14,p11);
+ 
+Serial pc(USBTX, USBRX);
+Serial xbee1(p9, p10); 
+DigitalOut rst1(p8);
+
+EthernetInterface ethif;
+HTTPClient http;
+ 
+enum Statetype { ac_off = 0, ac_on };
+volatile int sensor_data; 
+volatile int Normal_BTempC = 30;
+ 
+void receiver_thread(void const * argument){
+    
+    rst1 = 0;   //Set reset pin to 0
+    myled = 0;
+    Thread::wait(1);
+    rst1 = 1;   //Set reset pin to 1
+    Thread::wait(1);
+    
+    uLCD.printf("Set Temp:");
+    uLCD.locate(0,7);
+    uLCD.printf("Your Temp:");            
+   
+    while (1) { 
+        Thread::wait(500);
+        myled = 1;        
+        if(xbee1.readable()){            
+            xbee1.scanf("%d\n", &sensor_data);            
+            //pc.printf("data received %d\n\r", sensor_data);
+            uLCD.text_height(2);
+            uLCD.text_width(2);
+            uLCD.locate(2,2);
+            uLCD.printf("%d C", Normal_BTempC);
+            uLCD.locate(2,6);
+            uLCD.printf("%d C", sensor_data);
+            Thread::wait(300);                         
+            myled = 0; 
+            Thread::wait(1000);                     
+        }
+    }
+}
+
+void changeBTemp_thread(void const *argument) {
+    while (1) {
+        pb1.mode(PullUp);
+        pb2.mode(PullUp);
+        if (pb1 == 0) {Normal_BTempC++;};
+        if (pb2 == 0) {Normal_BTempC--;};
+        Thread::wait(500);
+    }
+}
+
+void network_thread(void const *argument) {
+    
+    char urlBuffer[256];
+    char str[512];
+    
+    ethif.init(); //Use DHCP
+    ethif.connect(60000);
+    pc.printf("connected ethernet\n");
+   
+    while (1)
+    {
+       // initialize ethernet hardware
+       pc.printf("Begin While loop");
+       
+    
+        urlBuffer[0] = 0;
+        str[0]=0;
+        sprintf(urlBuffer, "http://api.thingspeak.com/update?key=LRZ7ZLXUI7LKC470&field1=%d", sensor_data);
+        
+        http.get(urlBuffer, str,128);
+        //HTTPResult res = http.get(urlBuffer, str,128);
+        //if(res==0) {
+        //pc.printf("sent get to thingspeak\n");
+        //}
+        //else {
+         //   pc.printf("get failed to send");
+          //  }
+       // wait(16); // 1 minute
+       // led=!led;
+        Thread::wait(10000);
+    
+    }
+}
+int main() {
+    
+    Thread thread1(receiver_thread);
+    Thread::wait(5000);
+    Thread thread2(changeBTemp_thread);
+    Thread::wait(5000);
+    Thread thread3(network_thread);
+    Statetype state = ac_off;
+    
+    while(1){
+    myLED3 = !myLED3;
+    //uLCD.printf("Set Temp: %d\n\r", Normal_BTempC);
+        switch (state) {
+            case ac_off:
+                
+                m.speed(0.0); 
+                myled = 1;
+                myLED2 =0;
+                myLED3 =1;
+                myLED4 =0;
+                
+                Thread::wait(3000);
+                
+                (sensor_data >= Normal_BTempC)? state = ac_on : state = ac_off;
+                //pc.printf("This is off \n\r");
+                break;
+
+            case ac_on:
+                   
+                myled = 1;
+                myLED2 =1;
+                myLED3 =1;
+                myLED4 =1;
+                   
+                while (sensor_data >= 1.3*Normal_BTempC) {
+                    m.speed(1.0);
+                }
+                while ((sensor_data >= 1.2*Normal_BTempC)&&(sensor_data < 1.3*Normal_BTempC)) {
+                    m.speed(0.5);
+                    Thread::wait(500);
+                    m.speed(0.0);
+                    Thread::wait(2000);
+                }
+                while ((sensor_data >= 1.1*Normal_BTempC)&&(sensor_data < 1.2*Normal_BTempC)) {
+                    m.speed(0.5);
+                    Thread::wait(500);
+                    m.speed(0.0);
+                    Thread::wait(3000);
+                }
+                while ((sensor_data >= Normal_BTempC)&&(sensor_data < 1.1*Normal_BTempC)) {
+                    m.speed(0.5);
+                    Thread::wait(500);
+                    m.speed(0.0);
+                    Thread::wait(3500);
+                }                    
+                                     
+                //m.speed(1.0);
+                (sensor_data < Normal_BTempC)? state = ac_off : state = ac_on;
+                //pc.printf("This is on \n\r");
+                break;
+        }
+        Thread::wait(1000);
+    }
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mbed-rtos.lib	Fri Apr 29 01:07:58 2016 +0000
@@ -0,0 +1,1 @@
+http://developer.mbed.org/users/mbed_official/code/mbed-rtos/#02f5cf381388
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mbed.bld	Fri Apr 29 01:07:58 2016 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/mbed_official/code/mbed/builds/082adc85693f
\ No newline at end of file