Собрал второй вариант измерялки скорости ПС , про первый вариант можно посмотреть тут:
http://forum.modelldepo.ru/showthrea...031#post278031
Во втором варианте использовал компактную PRO MINI и LCD дисплей, что позволило выдавать больше информации, также была доработана программка, питание через стабилизатор с рельс или от внешнего источника
Arduino код:
//спидометр
#include <LiquidCrystal.h> // Лобавляем библиотеку LCD
LiquidCrystal lcd(12, 11, 5, 6, 7, 8); // (RS, E, DB4, DB5, DB6, DB7)
unsigned long time;//время срабатывания первого датчика
unsigned long time1;//время срабатывания второго датчика
long T;// T=(time1-time)/1000 из милисекунд в секунды
float T1;
float S1;
float S;
void setup()
{
lcd.begin(16, 2);
pinMode(3, INPUT);//срабатывание датчика слева
pinMode(2, INPUT);//срабатывание датчика справа
}
void loop()
{
{ if ((digitalRead(2) == HIGH) && (digitalRead(3) == HIGH))
{ lcd.setCursor(0, 0); lcd.print(" READY ");
{
if (digitalRead(3) == LOW) // условие на опрос левого датчика 3-й порт
{ time = millis(); lcd.setCursor(1, 0); lcd.print(" GO LEFT ");
while (digitalRead(2) == HIGH)// счет времени пока не сработал левый датчик
{ } time1 = millis();
T=(time1-time); T1=T*0.001; S=31.32/T1;
lcd.clear();lcd.setCursor(1, 0);lcd.print(S);lcd.print(" KM/H");
lcd.setCursor(2, 1); lcd.print(T1);lcd.print(" sek"); delay(3000);lcd.clear();}
else if (digitalRead(2) == LOW) // условие на опрос правого датчика 2-й порт
{ time = millis(); lcd.setCursor(1, 0); lcd.print(" GO RIGHT ");
while (digitalRead(3) == HIGH)// счет времени пока не сработал правый датчик
{ } time1 = millis();
T=(time1-time); T1=T*0.001; S=31.32/T1;
lcd.clear();lcd.setCursor(1, 0);lcd.print(S);lcd.print(" KM/H");
lcd.setCursor(2, 1); lcd.print(T1);lcd.print(" sek"); delay(3000);lcd.clear();}
}
}
else { lcd.setCursor(0, 0); lcd.print(" xxxxx ");delay(1000); }}
}