idk what a fork is

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

Fork of 2036lab7_template by jim hamblen

Files at this revision

API Documentation at this revision

Comitter:
Alexw2011
Date:
Thu Apr 28 18:53:22 2016 +0000
Parent:
0:df4d7c0a1594
Commit message:
RXprogram;

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
NTPClient.lib Show diff for this revision Revisions of this file
SDFileSystem.lib Show diff for this revision Revisions of this file
TMP36.h Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
wave_player.lib Show diff for this revision Revisions of this file
diff -r df4d7c0a1594 -r 739ba18153a4 4DGL-uLCD-SE.lib
--- a/4DGL-uLCD-SE.lib	Mon Apr 06 12:28:01 2015 +0000
+++ b/4DGL-uLCD-SE.lib	Thu Apr 28 18:53:22 2016 +0000
@@ -1,1 +1,1 @@
-http://developer.mbed.org/users/4180_1/code/4DGL-uLCD-SE/#e39a44de229a
+https://mbed.org/users/4180_1/code/4DGL-uLCD-SE/#e39a44de229a
diff -r df4d7c0a1594 -r 739ba18153a4 EthernetInterface.lib
--- a/EthernetInterface.lib	Mon Apr 06 12:28:01 2015 +0000
+++ b/EthernetInterface.lib	Thu Apr 28 18:53:22 2016 +0000
@@ -1,1 +1,1 @@
-http://mbed.org/users/mbed_official/code/EthernetInterface/#2fc406e2553f
+http://developer.mbed.org/users/mbed_official/code/EthernetInterface/#4d7bff17a592
diff -r df4d7c0a1594 -r 739ba18153a4 HTTPClient.lib
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/HTTPClient.lib	Thu Apr 28 18:53:22 2016 +0000
@@ -0,0 +1,1 @@
+http://developer.mbed.org/users/donatien/code/HTTPClient/#277279a1891e
diff -r df4d7c0a1594 -r 739ba18153a4 Motor.lib
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Motor.lib	Thu Apr 28 18:53:22 2016 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/simon/code/Motor/#f265e441bcd9
diff -r df4d7c0a1594 -r 739ba18153a4 NTPClient.lib
--- a/NTPClient.lib	Mon Apr 06 12:28:01 2015 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-http://mbed.org/users/donatien/code/NTPClient/#881559865a93
diff -r df4d7c0a1594 -r 739ba18153a4 SDFileSystem.lib
--- a/SDFileSystem.lib	Mon Apr 06 12:28:01 2015 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-http://developer.mbed.org/users/neilt6/code/SDFileSystem/#c2c1f0b16380
diff -r df4d7c0a1594 -r 739ba18153a4 TMP36.h
--- a/TMP36.h	Mon Apr 06 12:28:01 2015 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,31 +0,0 @@
-#include "mbed.h"
-
-//Setup a new class for TMP36 sensor
-class TMP36
-{
-public:
-    TMP36(PinName pin);
-    TMP36();
-    operator float ();
-    float read();
-private:
-//class sets up the AnalogIn pin
-    AnalogIn _pin;
-};
-
-TMP36::TMP36(PinName pin) : _pin(pin)
-{
-// _pin(pin) means pass pin to the AnalogIn constructor
-}
-
-float TMP36::read()
-{
-//convert sensor reading to temperature in degrees C
-    return ((_pin.read()*3.3)-0.500)*100.0;
-}
-//overload of float conversion (avoids needing to type .read() in equations)
-TMP36::operator float ()
-{
-//convert sensor reading to temperature in degrees C
-    return ((_pin.read()*3.3)-0.500)*100.0;
-}
\ No newline at end of file
diff -r df4d7c0a1594 -r 739ba18153a4 main.cpp
--- a/main.cpp	Mon Apr 06 12:28:01 2015 +0000
+++ b/main.cpp	Thu Apr 28 18:53:22 2016 +0000
@@ -1,93 +1,165 @@
-#include "mbed.h"
-// Need include below to add the RTOS
-#include "rtos.h"
-//#include "EthernetInterface.h" //needed for Extra Credit
-//#include "NTPClient.h"
-#include "SDFileSystem.h"
+ #include "mbed.h"
+ #include "rtos.h"
+ #include "Motor.h"
 #include "uLCD_4DGL.h"
-#include "TMP36.h"
-#include "wave_player.h"
-// Setup four builtin leds for use by threads
-DigitalOut led1(LED1);
-DigitalOut led2(LED2);
-DigitalOut led3(LED3);
-DigitalOut led4(LED4);
+#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);
 
-AnalogOut DACout(p18); // used to play sound on speaker
-
-//wave player plays a *.wav file to D/A and a PWM
-wave_player waver(&DACout);
-
-uLCD_4DGL uLCD(p28,p27,p29); // serial tx, serial rx, reset pin;
-
-SDFileSystem sd(p5, p6, p7, p8, "sd"); //SD card setup
-
+uLCD_4DGL uLCD(p13,p14,p11);
+ 
+Serial pc(USBTX, USBRX);
+Serial xbee1(p9, p10); 
+DigitalOut rst1(p8);
 
-// Setup function code for three new threads to run.
-// Put in a while loop so that threads run forever.
-// Thread::wait will force at least a "x" millisecond
-// wait before the thread runs again. During this delay
-// the other threads will run
-// DO NOT use wait() with the RTOS!!!!!
-// wait just burns processor time and no other threads run
-void led2_thread(void const *argument)
-{
-    led2 = 1;
-    while (true) {
-        led2 = !led2;
-        Thread::wait(2000);
-    }
-}
-void led3_thread(void const *argument)
-{
-    led3 = 1;
-    while (true) {
-        led3 = !led3;
-        Thread::wait(4000);
-    }
-}
-void led4_thread(void const *argument)
-{
-    TMP36 myTMP36(p20);
-    led4 = 1;
-    while (true) {
-        led4 = !led4;
-        Thread::wait(8000);
+EthernetInterface ethif;
+HTTPClient http;
+ 
+enum Statetype { ac_off = 0, ac_on };
+volatile int sensor_data; 
+ 
+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);
+    ethif.init(); //Use DHCP
+    ethif.connect(60000);
+    pc.printf("connected ethernet\n");
+    
+    char urlBuffer[256];
+    char str[512];
+                
+    while (1) {
+       Thread::wait(1000); 
+       myled = 1;        
+       if(xbee1.readable()){            
+           xbee1.scanf("%d\n", &sensor_data);            
+           pc.printf("data received %d \n\r ", sensor_data);
+           Thread::wait(300);                         
+           myled = 0; 
+           Thread::wait(2000);                     
+       }
+       // 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", 15);
+        sprintf(urlBuffer, "http://api.thingspeak.com/update?key=LRZ7ZLXUI7LKC470&field1=%d", sensor_data);
+        
+        HTTPResult res = http.get(urlBuffer, str,128);
+        if(res==0) {
+        pc.printf("sent get to thingspeak\n");
+        }
+        else {
+            pc.printf("get failed to send");
+            }
     }
 }
 
-int main()
-{
-    led1 = 1;
-// code to set time in extra credit option goes here
-//
-    uLCD.baudrate(3000000); //jack up baud rate to max for fast display
-    uLCD.text_width(2); //2x size text
-    uLCD.text_height(2);
-// Create 3 new thread objects thread1, thread2, and thread3
-// The RTOS will immediately start running them
-    Thread thread1(led2_thread);
-    Thread thread2(led3_thread);
-    Thread thread3(led4_thread);
-// Main continues to run and is actually the first thread.
-// So a total of four threads are running now.
-// Each thread blinks an LED, but at a different rate
-// because of the different values used in Thread::wait().
-//
-// Set time in seconds since Jan 1 1970 (Unix style)
-// must set time to start Real Time clock running
-    set_time(1286729737);
-    char buffer[12];
-    time_t seconds;
-    while (true) {
-// reads time structure
-        seconds = time(NULL);
-// converts time structure to a string
-        strftime(buffer, 12, "%T", localtime(&seconds));
-// print time HH:MM:SS
-        uLCD.locate(0,2);
-        uLCD.printf("%s\n\r", buffer);
-        led1 = !led1;
-        Thread::wait(1000);
+/*void network_thread(void const * argument) {
+    ethif.init(); //Use DHCP
+    ethif.connect(60000);
+    pc.printf("connected ethernet\n");
+    
+    char urlBuffer[256];
+    char str[512];
+   
+    while (1)
+    {
+       wait(30);
+       // 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", 15);
+        sprintf(urlBuffer, "http://api.thingspeak.com/update?key=LRZ7ZLXUI7LKC470&field1=%d", 26);
+        
+        HTTPResult res = http.get(urlBuffer, str,128);
+        if(res==0) {
+        pc.printf("sent get to thingspeak\n");
+        }
+        else {
+            pc.printf("get failed to send");
+            }
+        //led=!led;
+        Thread::wait(2000);
+    
     }
 }
+  */  
+
+int main() {
+    Thread thread1(receiver_thread);
+    //Thread thread2(network_thread);
+    Statetype state = ac_off;
+    
+     
+    while(1){
+    myLED3 = !myLED3;
+       switch (state) {
+               case ac_off:
+                
+                   m.speed(0.0); 
+                   myled = 1;
+                   myLED2 =0;
+                   myLED3 =1;
+                   myLED4 =0;
+
+                   (sensor_data >= Normal_BTempC)? state = ac_on : state = ac_off;
+                  // pc.printf("This is off %d: ",sensor_data);
+                   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 %d: ",sensor_data);
+                   break;
+           }
+           
+           Thread::wait(1000);
+        
+    }
+}     
diff -r df4d7c0a1594 -r 739ba18153a4 wave_player.lib
--- a/wave_player.lib	Mon Apr 06 12:28:01 2015 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-http://developer.mbed.org/users/sravet/code/wave_player/#acc3e18e77ad