LM335Z thermosensor with 16×2 LCD display

The sketch below was adopted from the Adafruit tutorial for 16×2 LCD displays. Since the LM335Z provides the absolute temperature in degrees Kelvin, temperature values are first converted to Fahrenheit or Celsius before printing them on the display.

#include <LiquidCrystal.h> 
float tempC = 0; 
float tempf = 0; 
int tempPin = 0;
float samples[8];  
float maxi = 0,mini = 100;  
int i;                                          
LiquidCrystal lcd(12, 11, 5, 4, 3, 2); 
void setup()   {
   Serial.begin(9600); 
   lcd.begin(16, 2); 
   lcd.setCursor(2, 0); 
   lcd.print("LM335Z"); 
   lcd.setCursor(3, 1);
   lcd.print("Thermometer");
   delay(5000);
   lcd.clear();
   lcd.setCursor(2, 0);
   lcd.print("LCD displays"); 
   lcd.setCursor(1, 1); 
   lcd.print(" averaged temp ");    
delay(5000);
lcd.clear();
}

void loop() {
 Serial.println(""); 
 Serial.print("LM335Z Raw data: "); 
 Serial.println(analogRead(tempPin)); 
  for(i = 0;i<=7;i++) {
   samples[i] = (( 5.0 * analogRead(tempPin) * 100.0) / 1024.0) - 273.15;S
Serial.println(samples[i]);
  lcd.setCursor(0, 0);                                           
  lcd.print("Current temp is: ");                              
  lcd.setCursor(1, 1);                                          
  lcd.print("  Celsius   ");                                  
  lcd.setCursor(12, 1);                                       
  lcd.print(samples[i]);                                      
  tempC = tempC + samples[i]; 
  delay(800); 
  } 
 Serial.println("");   
 Serial.println(""); 
 tempC = tempC/8.0;   
 tempf = (tempC * 9)/ 5 + 32; 
 if(tempC > maxi) {
     maxi = tempC; }
 if(tempC < mini) {
    mini = tempC; } 
 Serial.println("New measurement:");
 Serial.print(" Average Temperature in Celsius is " ); 
 Serial.println(tempC);
 Serial.print(" Average Temperature in Fahrenheit is " ); 
 Serial.println(tempf);
 Serial.print(" MAX Temperature in Celsius is " ); 
 Serial.println(maxi);
 Serial.print(" MIN Temperature in Celsius is " ); 
 Serial.println(mini);
 lcd.setCursor(0, 1); 
 lcd.print(" Fahrenheit "); 
 lcd.setCursor(12, 1);
 lcd.print(tempf); 
 delay(5000); 
tempC = 0;
}

If you’re done, the display should show the average temperature of 8 measurements, alternating between Celsius and Fahrenheit.

IMG_6228_640x480