Temperature Color
Hardware¶
- Arch Board
- Grove - Temperature Sensor
- Grove - Chainable RGB LED

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);
}
}