int UVOUT = A0 ; // Salida del sensor
int REF_3V3 = A1 ; //3,3 V de potencia en la placa Arduino
void setup ( )
{
Serial . comenzar ( 9600 ) ;
pinMode ( UVOUT , INPUT ) ;
pinMode ( REF_3V3 , ENTRADA ) ;
Serial . println ( "ejemplo de MP8511" ) ;
}
bucle vacío ( )
{
int uvLevel = averageAnalogRead ( UVOUT ) ;
int refLevel = averageAnalogRead ( REF_3V3 ) ;
// Utilice el pin de alimentación de
3,3 V como referencia para obtener un valor de salida muy preciso del flotador
del sensor outputVoltage = 3.3 / refLevel * uvLevel ;
flotar uvIntensity = mapfloat ( outputVoltage , 0.99 , 2.9 , 0.0 ,
15.0 ) ;
Serial . print ( "Salida MP8511:" ) ;
Serial . imprimir ( uvLevel ) ;
Serial . print ( "voltaje MP8511:" ) ;
Serial . print ( outputVoltage ) ;
Serial . print ( "Intensidad UV (mW / cm ^ 2):" ) ;
Serial . imprimir ( uvIntensity ) ;
Serial . println ( ) ;
retraso ( 100 ) ;
}
// Toma un promedio de lecturas en un pin dado
// Devuelve el promedio
int averageAnalogRead ( int pinToRead )
{
byte numberOfReadings = 8 ;
unsigned int runningValue = 0 ;
for ( int x = 0 ; x < numberOfReadings ; x ++ )
runningValue + = analogRead ( pinToRead ) ;
runningValue / = numberOfReadings ;
return ( runningValue ) ;
}
// La función Arduino Map pero para flotadores
// From: [Link]
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 ;
}