Pentru a putea citi valoarea radiatiei UV vom folosi un senzor dedicat numit VEML6070.
Senzorul se alimenteaza cu o tensiune cuprinsa intre 3.3 si 5.5V.
Comunicarea cu Arduino se face prin intermediul magistralei I2C.
Pentru a realiza acest lucru vom avea nevoie de o librarie dedicata, aceasta putand fi descarcata de aici.
Senzorul folosit in acest exemplu este cel din poza de mai jos:

Pentru a testa daca senzorul functoneaza vom folosi char codul exemplu (vemltest) al librariei instalate. Acesta este urmatorul:
#include <Wire.h>
#include "Adafruit_VEML6070.h"
Adafruit_VEML6070 uv = Adafruit_VEML6070();
void setup() {
Serial.begin(9600);
Serial.println("VEML6070 Test");
uv.begin(VEML6070_1_T);
}
void loop() {
Serial.print("UV light level: "); Serial.println(uv.readUV());
delay(1000);
}
Acest cod returneaza doar valoarea citita de catre senzor. Atentie, aceasta valoare nu reprezinta indexul UV!
Pentru a afisa indexul UV in terminalul serial vom folosi acest cod:
#include <Wire.h>
#include "Adafruit_VEML6070.h"
Adafruit_VEML6070 uv = Adafruit_VEML6070();
void setup() {
Serial.begin(9600);
Serial.println("Testare index UV");
uv.begin(VEML6070_1_T);
}
void loop() {
if (uv.readUV()>=0 && uv.readUV()<700) {
Serial.println("Nivel UV scazut");
}
if (uv.readUV()>=701 && uv.readUV()<1400) {
Serial.println("Nivel UV moderat");
}
if (uv.readUV()>= 1401 && uv.readUV()<1850) {
Serial.println("Nivel UV ridicat");
}
if (uv.readUV()>=1851 && uv.readUV()<2500) {
Serial.println("Nivel UV foarte ridicat");
}
if (uv.readUV()>=2501 && uv.readUV()<2800) {
Serial.println("Nivel UV extrem de ridiat");
}
delay(1000);
}