forked from codehouseindia/Everything
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathfireRobotArduino
More file actions
179 lines (171 loc) · 3.97 KB
/
fireRobotArduino
File metadata and controls
179 lines (171 loc) · 3.97 KB
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
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
#include <Servo.h>
#define m1 4
#define m2 5
#define m3 6
#define m4 7
int setpoin =7; // NILAI TOLERANSI JARAK HINDAR (7-15);
int lintasan =200; // NILAI TOLERANSI WARNA LINTASAN (0-1024)
int api =500; // NILAI TOLERANSI CAHAYA API (0-1024)
//inisialisasi sensor 1 sebelah kiri
#include <NewPing.h>
#define echo1 8
#define trigger1 9
NewPing sonar1(trigger1,echo1,100);
//inisialisasi sensor 2 sebelah depan
#define echo2 12
#define trigger2 13
NewPing sonar2(trigger2,echo2,100);
//inisialisasi sensor 2 sebelah kanan
#define echo3 10
#define trigger3 11
NewPing sonar3(trigger3,echo3,100);
//definisi pin kipas dan pin buzzer
#define kipas 2
#define buzzer 3
bool keadaan;
void setup() {
Serial.begin(9600);
pinMode(m1, OUTPUT);
pinMode(m2, OUTPUT);
pinMode(m3, OUTPUT);
pinMode(m4, OUTPUT);
diam(3000);
pinMode(kipas,INPUT);
pinMode(buzzer,OUTPUT);
keadaan = 0;
}
void loop() {
// sensor mengukur dan membaca
int jarak1 =sonar1.ping_cm(); // sensor kiri
int jarak2 =sonar2.ping_cm(); // sensor depan
int jarak3 =sonar3.ping_cm(); // sensor kanan
int base = analogRead(A0); // pin sensor tcr5000
int api1 = analogRead(A1); // pin sensor Api A1-A5
int api2 = analogRead(A2);
int api3 = analogRead(A3);
int api4 = analogRead(A4);
int api5 = analogRead(A5);
//sensor menampilkan data yang dibaca
Serial.print(jarak1);
Serial.print(" || ");
Serial.print(jarak2);
Serial.print(" || ");
Serial.print(jarak3);
Serial.print(" || ");
Serial.print(api3);
Serial.print(" || ");
Serial.println(base);
//case utama jika api terdeteksi maka exsekusi
if ((api2>api||api3>api||api4>api) && (jarak2<1&&jarak2<15)){
digitalWrite(buzzer,HIGH); //buzzer bunyi
pinMode(kipas, OUTPUT); digitalWrite(kipas,LOW);//kipas bergerak
diam(2000); // panggil diam "lihat inisialisasi progam pangillan"
tiup(500); //panggil tiup
diam(1000); //panggil diam
keadaan = 1;
}
//case terakhir jika api tidak terdeteksi maka exsekusi
else{
digitalWrite(buzzer,LOW); // buzzer mati
pinMode(kipas, INPUT); digitalWrite(kipas,HIGH); // kipas berhenti
if (base>lintasan && keadaan > 0){
maju();
delay(500);
diam(100000);
}
//jika sensor kiri terdeteksi maka belok kanan
else if (jarak1<setpoin&&jarak1>1){
kanan(); //panggil kanan
delay(50);
}
//jika sensor kanan terdeteksi maka belok kiri
else if (jarak3<setpoin&&jarak3>1){
kiri();
delay(50);
}
//jika sensor depan terdeteksi maka balik (balik belum ditentukan)
else if (jarak2<setpoin&&jarak2>1){
//jika sensor kiri < sensor kanan maka ditentukan "balik kanan"
if (jarak1<jarak3){
balik_kanan();
delay(500);
}
//jika sensor kanan > sensor kanan maka ditentukan "balik kiri"
else if (jarak1>jarak3){
balik_kiri();
delay(500);
}
}
//jika semua sensor (sensor api dan sensor ultrasonik tidak terdeteksi) maka maju
else{
maju();
delay(100);
}
}
}
// inisialisasi progam pangillan
void maju(){
digitalWrite(m1,HIGH);
digitalWrite(m2,LOW);
digitalWrite(m3,LOW);
digitalWrite(m4,HIGH);
}
void mundur(){
digitalWrite(m1,LOW);
digitalWrite(m2,HIGH);
digitalWrite(m3,HIGH);
digitalWrite(m4,LOW);
}
void balik_kiri(){
digitalWrite(m1,HIGH);
digitalWrite(m2,LOW);
digitalWrite(m3,HIGH);
digitalWrite(m4,LOW);
}
void balik_kanan(){
digitalWrite(m1,LOW);
digitalWrite(m2,HIGH);
digitalWrite(m3,LOW);
digitalWrite(m4,HIGH);
}
void kanan(){
digitalWrite(m1,LOW);
digitalWrite(m2,HIGH);
digitalWrite(m3,LOW);
digitalWrite(m4,LOW);
}
void kiri(){
digitalWrite(m1,LOW);
digitalWrite(m2,LOW);
digitalWrite(m3,HIGH);
digitalWrite(m4,LOW);
}
void diam(int x){
pinMode(m1, INPUT);
pinMode(m2, INPUT);
pinMode(m3, INPUT);
pinMode(m4, INPUT);
digitalWrite(m1,LOW);
digitalWrite(m2,LOW);
digitalWrite(m3,LOW);
digitalWrite(m4,LOW);
delay(x);
pinMode(m1, OUTPUT);
pinMode(m2, OUTPUT);
pinMode(m3, OUTPUT);
pinMode(m4, OUTPUT);
}
void tiup(int x){
balik_kanan();
delay(x/4);
diam(x);
balik_kiri();
delay(x/2);
diam(x);
balik_kanan();
delay(x/2);
diam(x);
balik_kiri();
delay(x/4);
diam(x);
}