Stap 1: Code...
Programmering:
Typ of kopieer de volgende code in uw Edison-Arduino IDE, en schakel de programma uploaden naar je board Edison.
#include #include
#include
rgb_lcd lcd;
int tempSense = 0;
int B=3975; //This is a constant used to convert between the thermistor resistance in the temperature sensor and the actual temperature in Celcius.
double minTemp = 10;
double ideal = 20;
double maxTemp = 25;
void setup() {
lcd.begin(16, 2);
lcd.setRGB(255, 255, 255);
pinMode(tempSense, INPUT);
}
void loop() {
lcd.setCursor(0,0);
lcd.print(" ");//32 spaces clears screen of all text - deals with text offset glitches
lcd.setCursor(0,0);
double read = analogRead(tempSense);
double resistance=(float)(1023-read)*10000/read;
double temperature=1/(log(resistance/10000)/B+1/298.15)-273.15;
lcd.print(temperature);
//Set the color gradient
temperature = min(temperature, maxTemp);
temperature = max(temperature, minTemp);
double fraction;
if(temperature < ideal){
fraction = (ideal - temperature) / (ideal - minTemp) * .5 + .5;
} else {
fraction = (maxTemp - temperature)/(maxTemp-ideal) * .5;
}
int r = 0;
int g = 0;
int b = 0;
double quarter = 1.0/4.0;
if(fraction < quarter){
r = 255;
g = (int)((fraction)/quarter * 255);
} else if(fraction < 2 * quarter){
r = (int)((2 * quarter - fraction)/quarter * 255);
g = 255;
} else if(fraction < 3 * quarter){
g = 255;
b = (int)((fraction-2*quarter)/quarter * 255);
} else{
g = (int)((4 * quarter - fraction)/quarter * 255);
b = 255;
}
//Set LCD Colors
lcd.setRGB(r,g,b);
delay(500);//Wait half a second.
}