blob: 6e6a5d587e729037751aabb72a42b8d530cca7dd (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
|
#define SENSOR_PIN 35 // pino de sinal (DO)
unsigned long lastTime = 0;
unsigned int pulsos = 0;
int estadoAnterior = HIGH; // começa em HIGH (sem interrupção)
// Configurações do sensor
const int PULSOS_POR_VOLTA = 10; // 10 furos = 10 pulsos por volta
const float FATOR_KMH = 2.4; // km/h por rotação por segundo (ajuste conforme calibração)
void setup() {
Serial.begin(115200);
pinMode(SENSOR_PIN, INPUT);
Serial.println("Anemômetro LM393 - Velocidade do vento");
}
void loop() {
int estadoAtual = digitalRead(SENSOR_PIN);
// Detecta borda de descida: HIGH → LOW
if (estadoAnterior == HIGH && estadoAtual == LOW) {
pulsos++;
}
estadoAnterior = estadoAtual; // atualiza para próxima leitura
// A cada 1 segundo calcula RPM e velocidade
if (millis() - lastTime >= 1000) {
float rps = (float)pulsos / PULSOS_POR_VOLTA;
float rpm = rps * 60.0;
float velocidade = rps * FATOR_KMH;
Serial.print("RPM: ");
Serial.print(rpm);
Serial.print(" | Velocidade: ");
Serial.print(velocidade);
Serial.println(" km/h");
pulsos = 0;
lastTime = millis();
}
}
|