-
Notifications
You must be signed in to change notification settings - Fork 1
/
detectorscript.ino
67 lines (62 loc) · 1.57 KB
/
detectorscript.ino
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
// Initialize pins
int laserPin = 2;
int sensorPin = 3;
// Initialize sensor value, threshold, and polling delay
int value = 0;
int threshold = 300;
int dt = 100;
// Initialize period and time varibles
int t = 0;
int t1 = 0;
int t2 = 0;
int t3 = 0;
int t4 = 0;
// Initiallize count and blocked trackers
int count = 0;
boolean blocked = false;
void setup() {
Serial.begin(9600);
Serial.println("Starting...");
pinMode(laserPin, OUTPUT);
digitalWrite(laserPin, HIGH);
}
void loop() {
delay(1000);
Serial.println("Ready!");
while (t1==0 || t2==0 || t3==0 || t4==0) {
Serial.print("Sensor: ");
// Poll sensor and record corrisponding time variable
value = analogRead(sensorPin);
Serial.println(value);
if (value > threshold && !blocked && t1==0) {
t1 = millis();
Serial.print("t1: ");
Serial.println(t1);
blocked = true;
}
if (value < threshold && blocked && t2==0) {
t2 = millis();
Serial.print("t2: ");
Serial.println(t2);
blocked = false;
}
if (value > threshold && !blocked && t3==0) {
t3 = millis();
Serial.print("t3: ");
Serial.println(t3);
blocked = true;
}
if (value < threshold && blocked && t4==0) {
t4 = millis();
Serial.print("t4: ");
Serial.println(t4);
blocked = false;
}
delayMicroseconds(dt);
}
// Add calcualted period to sum of periods.
t = (t3 + t4) - (t1 + t2);
Serial.println("Period:");
// Print average of 5 periods to serial
Serial.println(t);
}