const int RecordTime = 3; // Tiempo de registro en segundos
const int SensorPin = 3; // Pin al que está conectado el sensor
volatile int interruptCounter = 0; // Usamos "volatile" porque será modificado en una interrupción
float velocidadViento;
void setup() {
pinMode(SensorPin, INPUT_PULLUP); // Configura el pin del sensor con resistencia pull-up interna
Serial.begin(9600);
}
void loop() {
medicion(); // Realiza la medición de la velocidad del viento
Serial.print("Velocidad del Viento: ");
Serial.print(velocidadViento);
Serial.print(" Km/h - ");
Serial.print(velocidadViento / 3.6); // Conversión de Km/h a m/s
Serial.println(" m/s ");
delay(1000); // Pequeño retardo antes de la siguiente medición
}
void medicion() {
interruptCounter = 0; // Resetea el contador de interrupciones
attachInterrupt(digitalPinToInterrupt(SensorPin), countup, RISING); // Configura la interrupción
delay(1000 * RecordTime); // Espera el tiempo de registro
detachInterrupt(digitalPinToInterrupt(SensorPin)); // Detiene la interrupción
// Calcula la velocidad del viento basándose en el número de interrupciones
// 2.4 es un factor de conversión que depende del sensor (ajústalo según sea necesario)
velocidadViento = (float)interruptCounter / (float)RecordTime * 2.4;
}
void countup() {
interruptCounter++; // Incrementa el contador de interrupciones cada vez que se detecta un pulso
}