Mudanças entre as edições de "Medidor de Velocidade Papel Alumínio"

De Garoa Hacker Clube
Ir para navegação Ir para pesquisar
(Uma revisão intermediária pelo mesmo usuário não está sendo mostrada)
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 72:
 
delay(5000);
 
delay(5000);
 
}
 
}
  +
}
}</code>
 
  +
</pre>

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);
  }
}