1
15
16#include <LiquidCrystal_I2C.h>
17
18#include <Wire.h>
19
20LiquidCrystal_I2C lcd(0x27,20,4);
21
22const int ledPin = 12;
23byte irPinA = 4;
24byte irPinB = 5;
25byte irValA;
26byte irValB;
27float diff;
28float vel;
29unsigned long timeFirst;
30unsigned long timeScnd;
31float speedConst = 453.6;
32
33
34
35byte customChar0[8] = {
36B01000,
37B01100,
38B01110,
39B01111,
40B01110,
41B01100,
42B01000,
43B00000
44};
45
46void configLCD(){
47
48lcd.createChar(0, customChar0);
49lcd.setCursor(0,0);
50lcd.write(0);
51lcd.write(0);
52lcd.write(0);
53lcd.write(0);
54lcd.write(0);
55lcd.setCursor(5,0);
56lcd.print("SPEED TEST");
57lcd.setCursor(15,0);
58lcd.write(0);
59lcd.write(0);
60lcd.write(0);
61lcd.write(0);
62lcd.write(0);
63lcd.setCursor(0,1);
64lcd.print("P1:");
65lcd.setCursor(0,2);
66lcd.print("P2:");
67lcd.setCursor(0,3);
68lcd.print("Speed:");
69
70}
71
72void setup()
73{
74pinMode(irPinA, INPUT);
75pinMode(irPinB, INPUT);
76pinMode(ledPin, OUTPUT);
77
78lcd.init();
79lcd.backlight();
80configLCD();
81digitalWrite(ledPin, HIGH);
82
83}
84
85
86void loop()
87{
88 irValA = digitalRead(irPinA);
89 irValB = digitalRead(irPinB);
90
91 if (irValA == LOW){
92 timeFirst = millis();
93 digitalWrite(ledPin, LOW);
94 delay(30);
95 }
96
97 if (irValB == LOW){
98 timeScnd = millis();
99 diff = timeScnd - timeFirst;
100 vel = speedConst / diff;
101
112
113 lcd.setCursor(6, 1);
114 lcd.print(timeFirst);
115 lcd.setCursor(6, 2);
116 lcd.print(timeScnd);
117 lcd.setCursor(6,3);
118 lcd.print(vel);
119 lcd.print("km/h");
120 delay(5000);
121 lcd.clear();
122 configLCD();
123 digitalWrite(ledPin, HIGH);
124 }
125
126}