#define sensor  A0 // LM35 sensor connected to analog pin A0
#define led  13     // LED connected to digital pin 13 (PWM capable)

void setup() {
  Serial.begin(9600); // Initialize serial communication
  pinMode(led, OUTPUT); // Set LED pin as output
  pinMode(sensor, INPUT); // Set sensor pin as input

}

void loop() {
  int sensorValue = analogRead(sensor); // Read analog value from LM35
  float voltage = sensorValue * (5.0 / 1023.0); // Convert analog value to voltage (0-5V)
  float temperature = voltage * 100.0; // Convert voltage to temperature in °C
  
  // Map temperature range (0-100°C) to PWM range (0-255)
  int brightness = ConvertTemperatureToPWM(temperature);
  analogWrite(led, brightness); // Set LED brightness using PWM

  Serial.print("Analog Reading: ");
  Serial.print(sensorValue);
  Serial.print(", Output Voltage (V): ");
  Serial.print(voltage); 
  Serial.print(", Temperature (°C): ");
  Serial.println(temperature);
  
  delay(1000); // Delay for readability
}

int ConvertTemperatureToPWM(float temperature) {
  if (temperature <= 0) {
    return 0; // If temperature is below 0°C, set PWM to 0 (LED off)
  } else if (temperature >= 100) {
    return 255; // If temperature is above 100°C, set PWM to 255 (full brightness)
  } else {
    return int(temperature * 2.55); // Scale temperature linearly to PWM range (0-255)
  }
}
LM35Breakout