const int sensorPin = A0; // LDR conectado na entrada analógica A0
int luminosidade;
const int numAmostras = 50; // Número de amostras para análise
int dados[numAmostras];
void setup() {
Serial.begin(9600);
}
void loop() {
for(int i = 0; i < numAmostras; i++) {
luminosidade = analogRead(sensorPin); // Leitura do sensor de luz
dados[i] = luminosidade;
delay(100); // Esperar 100 ms entre as leituras
}
// Após coletar as amostras, calcular estatísticas
int media = calcularMedia(dados, numAmostras);
int minimo = calcularMinimo(dados, numAmostras);
int maximo = calcularMaximo(dados, numAmostras);
float desvioPadrao = calcularDesvioPadrao(dados, numAmostras, media);
Serial.print("Media: "); Serial.println(media);
Serial.print("Minimo: "); Serial.println(minimo);
Serial.print("Maximo: "); Serial.println(maximo);
Serial.print("Desvio Padrao: "); Serial.println(desvioPadrao);
}
// Função para calcular a média
int calcularMedia(int arr[], int tamanho) {
int soma = 0;
for(int i = 0; i < tamanho; i++) {
soma += arr[i];
}
return soma / tamanho;
}
// Função para calcular o mínimo
int calcularMinimo(int arr[], int tamanho) {
int min = arr[0];
for(int i = 1; i < tamanho; i++) {
if(arr[i] < min) {
min = arr[i];
}
}
return min;
}
// Função para calcular o máximo
int calcularMaximo(int arr[], int tamanho) {
int max = arr[0];
for(int i = 1; i < tamanho; i++) {
if(arr[i] > max) {
max = arr[i];
}
}
return max;
}
// Função para calcular o desvio padrão
float calcularDesvioPadrao(int arr[], int tamanho, int media) {
float soma = 0;
for(int i = 0; i < tamanho; i++) {
soma += pow(arr[i] - media, 2);
}
return sqrt(soma / tamanho);
}