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: Chainable_RGB_LED mbed
Fork of Seeed_Grove_Chainable_RGB_LED_Example by
Revision 1:b18ce9f622ff, committed 2014-08-22
- Comitter:
- yihui
- Date:
- Fri Aug 22 08:59:43 2014 +0000
- Parent:
- 0:74eac9e7f286
- Commit message:
- Color changes with temperature changing
Changed in this revision
| main.cpp | Show annotated file Show diff for this revision Revisions of this file | 
diff -r 74eac9e7f286 -r b18ce9f622ff main.cpp
--- a/main.cpp	Fri Aug 22 08:00:42 2014 +0000
+++ b/main.cpp	Fri Aug 22 08:59:43 2014 +0000
@@ -1,16 +1,72 @@
 #include "mbed.h"
 #include "ChainableLED.h"
  
+//#define DEBUG
+ 
+#ifdef DEBUG
+ 
+#include "USBSerial.h"
+#define LOG(args...)        pc.printf(args)
+USBSerial pc;
+ 
+#else
+ 
+#define LOG(args...)
+ 
+#endif  // DEBUG
+ 
+ 
 // ChainableLED(clk, data, number_of_leds)
 ChainableLED color_led(P1_14, P1_13, 1);
+AnalogIn thermistor(P0_12);
+ 
+float get_temperature()
+{
+    unsigned int a, beta = 3975;
+    float temperature, resistance;
+    
+    a = thermistor.read_u16();
+    
+    /* Calculate the resistance of the thermistor from analog votage read. */
+    resistance = (float) 10000.0 * ((65536.0 / a) - 1);
+    
+    /* Convert the resistance to temperature using Steinhart's Hart equation */
+    temperature=(1/((log(resistance/10000.0)/beta) + (1.0/298.15)))-273.15; 
+    
+    return temperature;
+}
+ 
+int temperature2color(float t)
+{
+    float low  = 26;
+    float high = 30;
+    int   min = 0;
+    int   max = 255;
+    int   color;
+    
+    if (t < low) {
+        color = min;
+    } else if (t > high) {
+        color = max;
+    } else {
+        color = min + (max - min) * ((t - min) / (max - min));
+    }
+    
+    return color;
+}
+    
  
 int main() {
-    uint8_t value = 0;
-    
+  
     while(1) {
-        value++;
+        float t = get_temperature();
+        uint8_t color = temperature2color(t);
+        
+        LOG("Temperature: %f\r\n", t);
+        LOG("Color: %d\r\n", color);
+        
         // ChainableLED.setColorRGB(index_of_led, red, green, blue)
-        color_led.setColorRGB(0, value, 255 - value, value + 80);
-        wait_ms(10);
+        color_led.setColorRGB(0, color, 0xFF - color, 0);
+        wait(0.05);
     }
 }
\ No newline at end of file
    