Adds

24 June 2015

Arduino with a thermistor and RGB LED

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