Skip to content

Instantly share code, notes, and snippets.

@philpep
Created September 2, 2012 18:23
Show Gist options
  • Save philpep/3602603 to your computer and use it in GitHub Desktop.
Save philpep/3602603 to your computer and use it in GitHub Desktop.
#define LEN(x) (sizeof(x)/sizeof(x[0]))
/* connected leds (map temperature between 0°C and 64 °C) */
static int leds[] = {13, 12, 11, 10, 9, 8};
void setup(void)
{
int i;
Serial.begin(9600);
for (i = 0; i < LEN(leds); i++) {
pinMode(leds[i], OUTPUT);
digitalWrite(leds[i], 0);
}
}
void update_leds(int temp) {
int i;
static int old = 255;
if (temp != old) {
//Serial.println("UPDATE LEDS");
old = temp;
for (i = 0; i < LEN(leds); i++) {
if (temp & (1 << i))
digitalWrite(leds[i], 255);
else
digitalWrite(leds[i], 0);
}
}
}
int get_temp(void) {
static int temp = 0;
static unsigned long last_update = 0;
unsigned long now;
now = millis();
if (!last_update || now - last_update > 10000) { /* every 10 s */
//Serial.println("READ TEMP");
temp = 5.0 * analogRead(0) * 100.0 / 1024.0;
last_update = now;
}
return temp;
}
void loop(void) {
static char cmd = '\0';
char rbyte;
update_leds(get_temp());
if (Serial.available() > 0) {
if ((rbyte = Serial.read()) == '\r') {
if (cmd == 't') {
Serial.println(get_temp());
}
cmd = '\0';
} else {
cmd = rbyte;
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment