Seeed


A hardware innovation platform for makers to grow inspirations into differentiating products.

Temperature Color

Hardware

  • Arch Board
  • Grove - Temperature Sensor
  • Grove - Chainable RGB LED

http://xiongyihui.github.io/archcookbook/figures/temperature_color.png

Software

Import the following code to mbed online compiler

#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() {
  
    while(1) {
        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, color, 0xFF - color, 0);
        wait(0.05);
    }
}


All wikipages