Mudanças entre as edições de "Medidor de Velocidade"
Ir para navegação
Ir para pesquisar
(→Código) |
(→Código) |
||
Linha 9: | Linha 9: | ||
<pre> |
<pre> |
||
− | |||
unsigned long Time = 0; |
unsigned long Time = 0; |
||
unsigned long delta_time = 0; |
unsigned long delta_time = 0; |
Edição das 09h05min 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); } }