Code gets:
- Temperature from a thermistor
and
RGB LED changes colour depending on the Temperature
Prints the data to the Serial Monitor
Please let me know if you experience any problems with this code. Be sure to check back for more Arduino code.
Schematic:
Code:
/*
Oliver Holden
Created 28/10/2014
Components:
* Arduino UNO
* Thermistor
* 10K resistor
* RGB LED
* 3x 220 ohm resistors
- Gets Temperature form a Thermistor
- RGB LED changes colour depending on the Temperature
Prints the data to the Serial Monitor
Schematic for this project is on
http://breadboarder.blogspot.co.uk/
*/
int redPin = 11; // Red Leg of LED, connected to digital pin 11
int grnPin = 10; // Green Leg of LED, connected to digital pin 10
int bluPin = 9; // Blue Leg of LED, connected to digital pin 9
int ThermistorPin = A0; // Thermistor Reading pin
void setup()
{
Serial.begin(9600); // Opening serial connection at 9600bps
Serial.println("Thermistor temperature measurement:"); // Printing Serial Monitor header
Serial.println("\n Vo Rt T (C)");
pinMode(redPin, OUTPUT); // Sets the LED pins as outputs
pinMode(grnPin, OUTPUT);
pinMode(bluPin, OUTPUT);
}
void loop() {
int Vo; // Integer value of voltage reading
float R = 9870.0; // Fixed resistance in the voltage divider
float logRt,Rt,T;
float c1 = 1.009249522e-03, c2 = 2.378405444e-04, c3 = 2.019202697e-07;
Vo = analogRead(ThermistorPin); // Reading voltage of Thermistor Reading pin
Rt = R*( 1023.0 / (float)Vo - 1.0 );
logRt = log(Rt);
T = ( 1.0 / (c1 + c2*logRt + c3*logRt*logRt*logRt ) ) - 273.15; // converting voltage to temperature
Serial.print(" "); Serial.print(Vo); // Printing data to Serial Monitor
Serial.print(" "); Serial.print(Rt);
Serial.print(" "); Serial.println(T);
// Setting the colours of the RGB LED based on temperature,
// Colour is shown for 0.1s before checking temperature again.
if(T >= 26.2)
{
digitalWrite(redPin, HIGH); // red
delay(100);
digitalWrite(grnPin, LOW);
digitalWrite(bluPin, LOW);
}
if((T < 26) && (T >= 23.2))
{
digitalWrite(redPin, HIGH); // yellow
digitalWrite(grnPin, HIGH);
delay(100);
digitalWrite(bluPin, LOW);
}
if((T < 23) && (T > 20.2))
{
digitalWrite(grnPin, HIGH); // green
delay(100);
digitalWrite(redPin, LOW);
digitalWrite(bluPin, LOW);
}
if((T < 20) && (T > 17.2))
{
digitalWrite(grnPin, HIGH); // aqua
digitalWrite(bluPin, HIGH);
delay(100);
digitalWrite(redPin, LOW);
}
if(T <= 17)
{
digitalWrite(bluPin, HIGH); // blue
delay(100);
digitalWrite(grnPin, LOW);
digitalWrite(redPin, LOW);
}
}
No comments:
Post a Comment