const int uvSensorPin = A0; // Analog pin connected to the sensor
const int uvPowerPin = 2; // Digital pin connected to power the sensor
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
void setup() {
lcd.init();
lcd.backlight();
Serial.begin(9600);
pinMode(uvPowerPin, OUTPUT);
digitalWrite(uvPowerPin, HIGH); // Power up the sensor
}
void loop() {
int uvValue = analogRead(uvSensorPin);
float uvIntensity = mapFloat(uvValue, 0, 1023, 0, 15); // Convert analog reading to UV intensity (mW/cm^2)
Serial.print("UV Intensity: ");
Serial.print(uvIntensity);
Serial.println(" mW/cm^2");
lcd.setCursor(0, 0);
lcd.print("UV Intensity:");
lcd.setCursor(0, 1);
lcd.print(uvIntensity);
lcd.print(" mw/cm^2");
delay(1000); // Delay for stability
lcd.clear();
}
// Function to map floats similar to the map function for integers
float mapFloat(float x, float in_min, float in_max, float out_min, float out_max) {
return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;
}