#include <Arduino.h>
const int analogPin = 28; // ADC0 on Raspberry Pi Pico
const int ledPin1 = 2; // GPIO for LED 1
const int ledPin2 = 3; // GPIO for LED 2
const int ledPin3 = 4; // GPIO for LED 3
float baselineTemp = 20.0; // Baseline temperature in Celsius
float celsius = 0.0;
float fahrenheit = 0.0;
void setup()
{
pinMode(analogPin, INPUT);
pinMode(ledPin1, OUTPUT);
pinMode(ledPin2, OUTPUT);
pinMode(ledPin3, OUTPUT);
Serial1.begin(115200);
}
void loop()
{
// Read analog value (0 to 4095)
int analogValue = analogRead(analogPin);
// Convert to voltage (millivolts)
float voltage = (analogValue / 4095.0) * 3300.0; // Pico uses 3.3V as reference
// Convert voltage to temperature
// For LM35: 10mV per degree Celsius
celsius = voltage / 10.0;
// Convert Celsius to Fahrenheit
fahrenheit = (celsius * 9 / 5) + 32;
// Print temperature readings
Serial1.print("Temperature: ");
Serial1.print(celsius);
Serial1.print("°C, ");
Serial1.print(fahrenheit);
Serial1.println("°F.");
// Control LEDs based on temperature
if (celsius < baselineTemp) {
digitalWrite(ledPin1, LOW);
digitalWrite(ledPin2, LOW);
digitalWrite(ledPin3, LOW);
}
else if (celsius >= baselineTemp && celsius < baselineTemp + 10) {
digitalWrite(ledPin1, HIGH);
digitalWrite(ledPin2, LOW);
digitalWrite(ledPin3, LOW);
}
else if (celsius >= baselineTemp + 10 && celsius < baselineTemp + 20) {
digitalWrite(ledPin1, HIGH);
digitalWrite(ledPin2, HIGH);
digitalWrite(ledPin3, LOW);
}
else if (celsius >= baselineTemp + 20 && celsius < baselineTemp + 30) {
digitalWrite(ledPin1, HIGH);
digitalWrite(ledPin2, HIGH);
digitalWrite(ledPin3, HIGH);
}
else if (celsius >= baselineTemp + 30) {
digitalWrite(ledPin1, HIGH);
digitalWrite(ledPin2, HIGH);
digitalWrite(ledPin3, HIGH);
}
delay(1000); // Wait for 1 second
}