Medidor de Velocidade Papel Alumínio
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
/* 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] */ #include <LiquidCrystal.h> #define sensor_1 7 // Pino do sensor #define sensor_2 8 // Pino do sensor #define Esperando 13 // Pino do LED de leitura float dist = 74; //em mm unsigned long Time = 0; //micro sec unsigned long delta_time = 0; //micro sec float vel = 0; //em mm/s LiquidCrystal lcd_1(12, 11, 5, 4, 3, 2); void setup(){ lcd_1.begin(16, 2); // Set up the number of columns and rows on the LCD. pinMode(sensor_1, INPUT_PULLUP); pinMode(sensor_2, INPUT_PULLUP); // Print a message to the LCD. lcd_1.print("hello world!"); delay(500); lcd_1.setCursor(0, 0); lcd_1.print("vel(cm/s)maquete"); lcd_1.setCursor(0, 1); lcd_1.print("Vel(Km/h): real"); delay(2000); lcd_1.clear(); lcd_1.print("Esperando"); } void loop(){ if (!digitalRead(sensor_1)) { Time = micros(); lcd_1.clear(); lcd_1.print("Fazendo leitura"); digitalWrite(Esperando,HIGH); while (digitalRead(sensor_2)) { } delta_time = micros() - Time; //APARTIR DAQUI DEVERIA SER UMA FUNÇÂO// //// Eu não sei tipagem ._. //// ////// Vai dar merda ... ////// vel = dist/delta_time; //em mm/us lcd_1.clear(); lcd_1.print("vel(cm/s): "); lcd_1.print(vel*pow(10, 5)); lcd_1.setCursor(0, 1); lcd_1.print("Vel(Km/h): "); lcd_1.print(vel*3600*87); delay(5000); lcd_1.clear(); lcd_1.print("Esperando"); digitalWrite(Esperando,LOW); } //IGNORAR DAQUI PARA BAIXO 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); } }