Mudanças entre as edições de "Medidor de Velocidade"

De Garoa Hacker Clube
Ir para navegação Ir para pesquisar
Linha 7: Linha 7:
   
 
== Código==
 
== Código==
  +
<code>unsigned long Time = 0;
 
  +
<pre>
  +
 
unsigned long Time = 0;
 
unsigned long delta_time = 0;
 
unsigned long delta_time = 0;
   
Linha 70: Linha 73:
 
delay(5000);
 
delay(5000);
 
}
 
}
  +
}
}</code>
 
  +
</pre>

Edição das 09h04min de 5 de julho de 2024

Circuito

Bem simples, apenas um Arduino com o GND ligado a um dos trilhos e deois sensores que são lâminas de papel aluminio por cima deste trilho, quando o trem passa ele fecha contato e detecta que o momento, quando passa pelo segundo o Arduino calcula a velocidade e manda via serial.

TODO

  • colocar um display para exibir a velocidade
  • melhorar o código com uma função para fazer o Seria.print

Código


unsigned long Time = 0;
unsigned long delta_time = 0;

#define sensor_1    22  // Pino do sensor
#define sensor_2    53  // Pino do sensor
#define Esperando   13  // Pino do LED de leitura

float dist = 74;  // Distância entre os sensores em mm
/*

Escala H0 1:87

Velocidade = Espaço / Tempo
v = dist [mm] / Time [micro_sec]
v = dist/Time*3600 [km/h]
v = dist/Time*3600*87[km/h em escala real]



*/


void setup() {
  pinMode(sensor_1, INPUT_PULLUP);
  pinMode(sensor_2, INPUT_PULLUP);
  pinMode(Esperando, OUTPUT);
  Serial.begin(9600);
  digitalWrite(Esperando,LOW);
}

void loop() {
  if (!digitalRead(sensor_1)) {
    Time = micros();
    while (digitalRead(sensor_2)) {
      digitalWrite(Esperando,HIGH);
    }
    digitalWrite(Esperando,LOW);
    delta_time = micros() - Time;
    Serial.println(delta_time);
    Serial.println(115*313.2/delta_time/1000);
    Serial.println();
    delay(5000);
  }
  if (!digitalRead(sensor_2)) {
    Time = micros();
    while (digitalRead(sensor_1)) {
      digitalWrite(Esperando,HIGH);
    }
    digitalWrite(Esperando,LOW);
    delta_time = micros() - Time;
    Serial.print("Time: ");
    Serial.println(Time);
    Serial.print("Delta: ");
    Serial.println(delta_time);
    Serial.print("Velocidade: ");
    Serial.print(dist/delta_time);
    Serial.println("mm/us");
    Serial.print("Velocidade: ");
    Serial.print(dist*3600*87/delta_time);
    Serial.println("Km/h");
    Serial.println();
    delay(5000);
  }
}