#include <LiquidCrystal.h>
// Pin Assignments
#define LDR_PIN PA0 // LDR sensor analog pin
#define NTC_PIN PA1 // NTC sensor analog pin
#define LED_PIN PA5 // LED control pin
#define FAN_THRESHOLD 25 // Temperature threshold in °C
#define LDR_THRESHOLD 500 // Light threshold for LED ON
// LCD Pin Configuration: RS, EN, D4, D5, D6, D7
LiquidCrystal lcd(PB0, PB1, PB2, PB3, PB4, PB5);
void setup() {
pinMode(LED_PIN, OUTPUT);
lcd.begin(16, 2);
lcd.print("System Ready");
delay(1000);
lcd.clear();
}
void loop() {
int ldrValue = analogRead(LDR_PIN);
int ntcValue = analogRead(NTC_PIN);
// Convert NTC analog value to temperature (approximate formula)
float voltage = ntcValue * (3.3 / 4095.0); // STM32 ADC 12-bit (0-4095)
float resistance = (10000 * voltage) / (3.3 - voltage);
float temperature = 1 / ((log(resistance / 10000) / 3950) + (1.0 / 298.15)) - 330.1;
// LED control based on LDR threshold
if (ldrValue > LDR_THRESHOLD) {
digitalWrite(LED_PIN, HIGH);
} else {
digitalWrite(LED_PIN, LOW);
}
// LCD display for FAN ON/OFF based on temperature threshold
lcd.setCursor(0, 0);
lcd.print("Temp: ");
lcd.print(temperature, 1);
lcd.print(" C ");
lcd.setCursor(0, 1);
if (temperature >= FAN_THRESHOLD) {
lcd.print("FAN: ON ");
} else {
lcd.print("FAN: OFF");
}
delay(1000); // Update every second
}
Loading
st-nucleo-c031c6
st-nucleo-c031c6