summaryrefslogtreecommitdiff
path: root/esp/LM393.ino
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();
  }
}