硬件准备
主控板:Arduino Uno
紫外线传感器:GYML8511
硬件接线图
GYML8511 | Arduino |
---|---|
3.3V | 3.3V |
GND | GND |
OUT | A0 |
代码部分
int ReadUVintensityPin = A0; //Output引脚
void setup()
{
pinMode(ReadUVintensityPin, INPUT); //输出模式
Serial.begin(9600);
Serial.println("Starting up...");
}
void loop()
{
int uvLevel = averageAnalogRead(ReadUVintensityPin);
float outputVoltage = 5.0 * uvLevel/1024;
float uvIntensity = mapfloat(outputVoltage, 0.99, 2.9, 0.0, 15.0);
/*UV*/
Serial.print("UVAnalogOutput: ");
Serial.print(uvLevel);
/*传感器电压*/
Serial.print(" OutputVoltage: ");
Serial.print(outputVoltage);
/*紫外线*/
Serial.print(" UV Intensity: ");
Serial.print(uvIntensity);
Serial.print(" mW/cm^2");
delay(600);
}
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);
}
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;
}
最终效果图
在串口监视器可以看到测试的紫外线数据