I use a UVM30 sensor to measure UV measurements. The code on the internet is more for 5V and analog max 1023. However, I want to use it on ESP32, which goes to 3.3V and uses analog up to 4095. Does anyone have a code for the UVM30 sensor?
int uvAnalog=0;
float uvNapeti, uvIndex;
int uvIndexPole [12] = { 50, 227, 318, 408, 503, 606, 696, 795, 881, 976, 1079, 1170};
uvAnalog = analogRead(32);
uvNapeti = uvAnalog * (3300.0 / 4095.0);
if (uvNapeti > 1170) {
uvNapeti = 1170;
}
int p;
for (p = 0; p < 12; p++)
{
if (uvNapeti <= uvIndexPole[p])
{
uvIndex = p;
break;
}
}
if (p>0) {
float rozdilIndexu=uvIndexPole[p]-uvIndexPole[p-1];
float rozdilHodnot=uvNapeti-uvIndexPole[p-1];
uvIndex+=(1.0/rozdilIndexu)*rozdilHodnot-1.0;
}
if (uvIndex < 0) {
uvIndex = 0;
}
Serial.println("UV index: " + String(uvIndex));