-
Notifications
You must be signed in to change notification settings - Fork 0
/
Capstone_Project_Code.ino
103 lines (86 loc) · 2.58 KB
/
Capstone_Project_Code.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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
//motor pin setup on I/O pins 2-7
int motor1pin1 = 2;
int motor1pin2 = 4;
int motor1pin3 = 3;
int motor2pin1 = 6;
int motor2pin2 = 7;
int motor2pin3 = 5;
// sensor pin setup
int trigPin = 8; // I/O pin 8
int echoPin = A5; // Analog pin 5
// LEDs on I/O pin 11-13
int LED1 = 11;
int LED2 = 12;
int LED3 = 13;
// distance variables defined
long duration, distance;
// Potentiometer variables defined
int disPin = A0;
int dis;
int setdis;
void setup() {
// pinmode setup for all pins previously defined
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(motor1pin1, OUTPUT);
pinMode(motor1pin2, OUTPUT);
pinMode(motor1pin3, OUTPUT);
pinMode(motor2pin1, OUTPUT);
pinMode(motor2pin2, OUTPUT);
pinMode(motor2pin3, OUTPUT);
pinMode(LED1, OUTPUT);
pinMode(LED2, OUTPUT);
pinMode(LED3, OUTPUT);
pinMode(disPin,INPUT);
// Serial port useful for debugging
Serial.begin(9600);
}
void loop() {
// redefine potentiometer values into distance variables
dis = analogRead(disPin);
setdis = map(dis, 0, 1023, 5, 90); //actually 5-83 for some reason
// Send potentiometer values through serial port for distance testing
Serial.println(setdis);
// LED indicators programmed to shine once a certain threshhold is reached by the potentiometer
if(setdis >= 65){
digitalWrite(LED1, HIGH);
digitalWrite(LED2, HIGH);
digitalWrite(LED3, HIGH);
}
else if(setdis >= 30 && setdis <= 64){
digitalWrite(LED1, HIGH);
digitalWrite(LED2, HIGH);
digitalWrite(LED3, LOW);
}
else if(setdis <= 29){
digitalWrite(LED1, HIGH);
digitalWrite(LED2, LOW);
digitalWrite(LED3, LOW);
}
// Sensor translation into inches
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = (duration/2) / 74;
// Once the Followbot senses an object in range, it stops until the object is no longer in range
if (distance <= setdis) {
analogWrite(motor1pin3, 0);
digitalWrite(motor1pin1, LOW);
digitalWrite(motor1pin2, LOW);
analogWrite(motor2pin3, 0);
digitalWrite(motor2pin1, LOW);
digitalWrite(motor2pin2, LOW);
}
// While no object is in range, the Followbot will continue moving forward until an object is in range
else{
analogWrite(motor1pin3, 255);
digitalWrite(motor1pin1, HIGH);
digitalWrite(motor1pin2, LOW);
analogWrite(motor2pin3, 255);
digitalWrite(motor2pin1, HIGH);
digitalWrite(motor2pin2, LOW);
}
}