https://techboystoys.com/152-2/
Sabtu, 19 Desember 2020
Rabu, 08 Januari 2020
program robot 3 sensor untrasonik
#include <NewPing.h>
#define kirimaju A1 //Mendeklarasikan pin A0 sebagai pin untuk motor dc
#define kirimundur A2 //Mendeklarasikan pin A1 sebagai pin untuk motor dc
#define kananmaju A3 //Mendeklarasikan pin A2 sebagai pin untuk motor dc
#define kananmundur A4 //Mendeklarasikan pin A3 sebagai pin untuk motor dc
#define trigPin1 9 //mendeklarasikan pin 7 sebagai pin untuk trigger ultrasonik 1
#define echoPin1 8 //mendeklarasikan pin 6 sebagai pin untuk echo ultrasonik 1
#define trigPin2 11 //mendeklarasikan pin 5 sebagai pin untuk trigger ultrasonik 2
#define echoPin2 10 //mendeklarasikan pin 4 sebagai pin untuk echo ultrasonik 1
#define trigPin3 13 //mendeklarasikan pin 3 sebagai pin untuk trigger ultrasonik 3
#define echoPin3 12 //mendeklarasikan pin 2 sebagai pin untuk echo ultrasonik 1
void setup() { //fungsi wajib untuk program arduino
Serial.begin(9600);
pinMode(trigPin1, OUTPUT); //mendeklarasikan trigPin1 sebagai pin output
pinMode(trigPin2, OUTPUT); //mendeklarasikan trigPin2 sebagai pin output
pinMode(trigPin3, OUTPUT); //mendeklarasikan trigPin3 sebagai pin output
pinMode(echoPin1, INPUT); //mendeklarasikan echoPin1 sebagai pin input
pinMode(echoPin2, INPUT); //mendeklarasikan echoPin2 sebagai pin input
pinMode(echoPin3, INPUT); //mendeklarasikan echoPin3 sebagai pin input
pinMode(kirimaju, OUTPUT); //mendeklarasikan pin kirimaju sebagai pin output
pinMode(kirimundur, OUTPUT); //mendeklarasikan pin kirimundur sebagai pin output
pinMode(kananmaju, OUTPUT); //mendeklarasikan pin kananmaju sebagai pin output
pinMode(kananmundur, OUTPUT); //mendeklarasikan pin kananmndur sebagai pin output
}
void loop() {
long duration1, distance1; //memberi tipe data pada variabel
digitalWrite(trigPin1, LOW); //memberi logika 0 atau low pada keluaran trigPin1
delayMicroseconds(2); //memberi waktu delay
digitalWrite(trigPin1, HIGH); //memberi logika 1 atau low pada keluaran trigPin1
delayMicroseconds(10); //memberi waktu delay
digitalWrite(trigPin1, LOW); //memberi logika 0 atau low pada keluaran trigPin1
duration1 = pulseIn(echoPin1, HIGH); //memproses nilai duration1 yang terbaca
distance1 = (duration1/2) / 29.1; //menghitung nilai distance1
Serial.print(distance1);
Serial.print(" || ");
long duration2, distance2; //memberi tipe data pada variabel
digitalWrite(trigPin2, LOW); //memberi logika 0 atau low pada keluaran trigPin2
delayMicroseconds(2); //memberi waktu delay
digitalWrite(trigPin2, HIGH); //memberi logika 1 atau HIGH pada keluaran trigPin2
delayMicroseconds(10); //memberi waktu delay
digitalWrite(trigPin2, LOW); //memberi logika 0 atau low pada keluaran trigPin2
duration2 = pulseIn(echoPin2, HIGH); //memproses nilai duration2 yang terbaca
distance2 = (duration2/2) / 29.1; //menghitung nilai distance2
Serial.print(distance2);
Serial.print(" || ");
long duration3, distance3; //memberi tipe data pada variabel
digitalWrite(trigPin3, LOW); //memberi logika 0 atau low pada keluaran trigPin3
delayMicroseconds(2); //memberi waktu delay
digitalWrite(trigPin3, HIGH); //memberi logika 1 atau HIGH pada keluaran trigPin3
delayMicroseconds(10); //memberi waktu delay
digitalWrite(trigPin3, LOW); //memberi logika 0 atau low pada keluaran trigPin3
duration3 = pulseIn(echoPin3, HIGH); //memproses nilai duration3 yang terbaca
distance3 = (duration3/2) / 29.1; //menghitung nilai distance3
Serial.print(distance3);
Serial.print(" || ");
if (distance1>10 && distance2>10 && distance3>10) //Memberi kondisi
{ //robot bergerak maju
digitalWrite(kirimaju, HIGH); //Memberi logika 1 atau HIGH pada pin kirimaju
digitalWrite(kirimundur, LOW); //Memberi logika 0 atau LOW pada pin kirimundur
digitalWrite(kananmaju, HIGH); //Memberi logika 1 atau HIGH pada pin kanan maju
digitalWrite(kananmundur, LOW); //Memberi logika 0 atau LOW pada pin kananmundur
}
else if (distance1<10 && distance2>10 && distance3>10) //Memberi kondisi
{ //robot bergerak mundur
digitalWrite(kirimaju, LOW); //Memberi logika 0 atau LOW pada pin kirimaju
digitalWrite(kirimundur, HIGH); //Memberi logika 1 atau HIGH pada pin kirimundur
digitalWrite(kananmaju, LOW); //Memberi logika 0 atau LOW pada pin kananmaju
digitalWrite(kananmundur, HIGH); //Memberi logika 1 atau HIGH pada pin kanan mundur
}
else if (distance1>10 && distance2<10 && distance3>10) //Memberi kondisi
{ //robot belok ke kanan
digitalWrite(kirimaju, HIGH); //Memberi logika 1 atau HIGH pada pin kirimaju
digitalWrite(kirimundur, LOW); //Memberi logika 0 atau LOW pada pin kirimundur
digitalWrite(kananmaju, LOW); //Memberi logika 0 atau LOW pada pin kananmaju
digitalWrite(kananmundur, HIGH); //Memberi logika 1 atau HIGH pada pin kananmundur
}
else if (distance1<10 && distance2<10 && distance3>10) //Memberi kondisi
{ //robot belok ke kanan
digitalWrite(kirimaju, HIGH); //Memberi logika 1 atau HIGH pada pin kirimaju
digitalWrite(kirimundur, LOW); //Memberi logika 0 atau LOW pada pin kirimundur
digitalWrite(kananmaju, LOW); //Memberi logika 0 atau LOW pada pin kananmaju
digitalWrite(kananmundur, HIGH); //Memberi logika 1 atau HIGH pada pin kananmundur
}
else if (distance1>10 && distance2>10 && distance3<10) //Memberi kondisi
{ //robot belok ke kiri
digitalWrite(kirimaju, LOW); //Memberi logika 0 atau LOW pada pin kirimaju
digitalWrite(kirimundur, HIGH); //Memberi logika 1 atau HIGH pada pin kirimundur
digitalWrite(kananmaju, HIGH); //Memberi logika 1 atau HIGH pada pin kananmaju
digitalWrite(kananmundur, LOW); //Memberi logika 0 atau LOW pada pin kananmundur
}
else if (distance1<10 && distance2>10 && distance3<10) //Memberi kondisi
{ //robot belok ke kiri
digitalWrite(kirimaju, LOW); //Memberi logika 0 atau LOW pada pin kirimaju
digitalWrite(kirimundur, HIGH); //Memberi logika 1 atau HIGH pada pin kirimundur
digitalWrite(kananmaju, HIGH); //Memberi logika 1 atau HIGH pada pin kananmaju
digitalWrite(kananmundur, LOW); //Memberi logika 0 atau LOW pada pin kananmundur
}
else if (distance1<10 && distance2<10 && distance3<10) //Memberi kondisi
{ //robot bergerak mundur
digitalWrite(kirimaju, LOW); //Memberi logika 0 atau LOW pada pin kirimaju
digitalWrite(kirimundur, HIGH); //Memberi logika 1 atau HIGH pada pin kirimundur
digitalWrite(kananmaju, LOW); //Memberi logika 0 atau LOW pada pin kananmaju
digitalWrite(kananmundur, HIGH); //Memberi logika 1 atau HIGH pada pin kananmundur
}
else //pilihan terakhir jika tidak ada kondisi yang terpenuhi
{ //robot bergerak maju
digitalWrite(kirimaju, HIGH); //Memberi logika 1 atau HIGH pada pin kirimaju
digitalWrite(kirimundur, LOW); //Memberi logika 0 atau LOW pada pin kirimundur
digitalWrite(kananmaju, HIGH); //Memberi logika 1 atau HIGH pada pin kananmaju
digitalWrite(kananmundur, LOW); //Memberi logika 0 atau LOW pada pin kananmundur
}
} //kurung penutup dari program fungsi void loop
#define kirimaju A1 //Mendeklarasikan pin A0 sebagai pin untuk motor dc
#define kirimundur A2 //Mendeklarasikan pin A1 sebagai pin untuk motor dc
#define kananmaju A3 //Mendeklarasikan pin A2 sebagai pin untuk motor dc
#define kananmundur A4 //Mendeklarasikan pin A3 sebagai pin untuk motor dc
#define trigPin1 9 //mendeklarasikan pin 7 sebagai pin untuk trigger ultrasonik 1
#define echoPin1 8 //mendeklarasikan pin 6 sebagai pin untuk echo ultrasonik 1
#define trigPin2 11 //mendeklarasikan pin 5 sebagai pin untuk trigger ultrasonik 2
#define echoPin2 10 //mendeklarasikan pin 4 sebagai pin untuk echo ultrasonik 1
#define trigPin3 13 //mendeklarasikan pin 3 sebagai pin untuk trigger ultrasonik 3
#define echoPin3 12 //mendeklarasikan pin 2 sebagai pin untuk echo ultrasonik 1
void setup() { //fungsi wajib untuk program arduino
Serial.begin(9600);
pinMode(trigPin1, OUTPUT); //mendeklarasikan trigPin1 sebagai pin output
pinMode(trigPin2, OUTPUT); //mendeklarasikan trigPin2 sebagai pin output
pinMode(trigPin3, OUTPUT); //mendeklarasikan trigPin3 sebagai pin output
pinMode(echoPin1, INPUT); //mendeklarasikan echoPin1 sebagai pin input
pinMode(echoPin2, INPUT); //mendeklarasikan echoPin2 sebagai pin input
pinMode(echoPin3, INPUT); //mendeklarasikan echoPin3 sebagai pin input
pinMode(kirimaju, OUTPUT); //mendeklarasikan pin kirimaju sebagai pin output
pinMode(kirimundur, OUTPUT); //mendeklarasikan pin kirimundur sebagai pin output
pinMode(kananmaju, OUTPUT); //mendeklarasikan pin kananmaju sebagai pin output
pinMode(kananmundur, OUTPUT); //mendeklarasikan pin kananmndur sebagai pin output
}
void loop() {
long duration1, distance1; //memberi tipe data pada variabel
digitalWrite(trigPin1, LOW); //memberi logika 0 atau low pada keluaran trigPin1
delayMicroseconds(2); //memberi waktu delay
digitalWrite(trigPin1, HIGH); //memberi logika 1 atau low pada keluaran trigPin1
delayMicroseconds(10); //memberi waktu delay
digitalWrite(trigPin1, LOW); //memberi logika 0 atau low pada keluaran trigPin1
duration1 = pulseIn(echoPin1, HIGH); //memproses nilai duration1 yang terbaca
distance1 = (duration1/2) / 29.1; //menghitung nilai distance1
Serial.print(distance1);
Serial.print(" || ");
long duration2, distance2; //memberi tipe data pada variabel
digitalWrite(trigPin2, LOW); //memberi logika 0 atau low pada keluaran trigPin2
delayMicroseconds(2); //memberi waktu delay
digitalWrite(trigPin2, HIGH); //memberi logika 1 atau HIGH pada keluaran trigPin2
delayMicroseconds(10); //memberi waktu delay
digitalWrite(trigPin2, LOW); //memberi logika 0 atau low pada keluaran trigPin2
duration2 = pulseIn(echoPin2, HIGH); //memproses nilai duration2 yang terbaca
distance2 = (duration2/2) / 29.1; //menghitung nilai distance2
Serial.print(distance2);
Serial.print(" || ");
long duration3, distance3; //memberi tipe data pada variabel
digitalWrite(trigPin3, LOW); //memberi logika 0 atau low pada keluaran trigPin3
delayMicroseconds(2); //memberi waktu delay
digitalWrite(trigPin3, HIGH); //memberi logika 1 atau HIGH pada keluaran trigPin3
delayMicroseconds(10); //memberi waktu delay
digitalWrite(trigPin3, LOW); //memberi logika 0 atau low pada keluaran trigPin3
duration3 = pulseIn(echoPin3, HIGH); //memproses nilai duration3 yang terbaca
distance3 = (duration3/2) / 29.1; //menghitung nilai distance3
Serial.print(distance3);
Serial.print(" || ");
if (distance1>10 && distance2>10 && distance3>10) //Memberi kondisi
{ //robot bergerak maju
digitalWrite(kirimaju, HIGH); //Memberi logika 1 atau HIGH pada pin kirimaju
digitalWrite(kirimundur, LOW); //Memberi logika 0 atau LOW pada pin kirimundur
digitalWrite(kananmaju, HIGH); //Memberi logika 1 atau HIGH pada pin kanan maju
digitalWrite(kananmundur, LOW); //Memberi logika 0 atau LOW pada pin kananmundur
}
else if (distance1<10 && distance2>10 && distance3>10) //Memberi kondisi
{ //robot bergerak mundur
digitalWrite(kirimaju, LOW); //Memberi logika 0 atau LOW pada pin kirimaju
digitalWrite(kirimundur, HIGH); //Memberi logika 1 atau HIGH pada pin kirimundur
digitalWrite(kananmaju, LOW); //Memberi logika 0 atau LOW pada pin kananmaju
digitalWrite(kananmundur, HIGH); //Memberi logika 1 atau HIGH pada pin kanan mundur
}
else if (distance1>10 && distance2<10 && distance3>10) //Memberi kondisi
{ //robot belok ke kanan
digitalWrite(kirimaju, HIGH); //Memberi logika 1 atau HIGH pada pin kirimaju
digitalWrite(kirimundur, LOW); //Memberi logika 0 atau LOW pada pin kirimundur
digitalWrite(kananmaju, LOW); //Memberi logika 0 atau LOW pada pin kananmaju
digitalWrite(kananmundur, HIGH); //Memberi logika 1 atau HIGH pada pin kananmundur
}
else if (distance1<10 && distance2<10 && distance3>10) //Memberi kondisi
{ //robot belok ke kanan
digitalWrite(kirimaju, HIGH); //Memberi logika 1 atau HIGH pada pin kirimaju
digitalWrite(kirimundur, LOW); //Memberi logika 0 atau LOW pada pin kirimundur
digitalWrite(kananmaju, LOW); //Memberi logika 0 atau LOW pada pin kananmaju
digitalWrite(kananmundur, HIGH); //Memberi logika 1 atau HIGH pada pin kananmundur
}
else if (distance1>10 && distance2>10 && distance3<10) //Memberi kondisi
{ //robot belok ke kiri
digitalWrite(kirimaju, LOW); //Memberi logika 0 atau LOW pada pin kirimaju
digitalWrite(kirimundur, HIGH); //Memberi logika 1 atau HIGH pada pin kirimundur
digitalWrite(kananmaju, HIGH); //Memberi logika 1 atau HIGH pada pin kananmaju
digitalWrite(kananmundur, LOW); //Memberi logika 0 atau LOW pada pin kananmundur
}
else if (distance1<10 && distance2>10 && distance3<10) //Memberi kondisi
{ //robot belok ke kiri
digitalWrite(kirimaju, LOW); //Memberi logika 0 atau LOW pada pin kirimaju
digitalWrite(kirimundur, HIGH); //Memberi logika 1 atau HIGH pada pin kirimundur
digitalWrite(kananmaju, HIGH); //Memberi logika 1 atau HIGH pada pin kananmaju
digitalWrite(kananmundur, LOW); //Memberi logika 0 atau LOW pada pin kananmundur
}
else if (distance1<10 && distance2<10 && distance3<10) //Memberi kondisi
{ //robot bergerak mundur
digitalWrite(kirimaju, LOW); //Memberi logika 0 atau LOW pada pin kirimaju
digitalWrite(kirimundur, HIGH); //Memberi logika 1 atau HIGH pada pin kirimundur
digitalWrite(kananmaju, LOW); //Memberi logika 0 atau LOW pada pin kananmaju
digitalWrite(kananmundur, HIGH); //Memberi logika 1 atau HIGH pada pin kananmundur
}
else //pilihan terakhir jika tidak ada kondisi yang terpenuhi
{ //robot bergerak maju
digitalWrite(kirimaju, HIGH); //Memberi logika 1 atau HIGH pada pin kirimaju
digitalWrite(kirimundur, LOW); //Memberi logika 0 atau LOW pada pin kirimundur
digitalWrite(kananmaju, HIGH); //Memberi logika 1 atau HIGH pada pin kananmaju
digitalWrite(kananmundur, LOW); //Memberi logika 0 atau LOW pada pin kananmundur
}
} //kurung penutup dari program fungsi void loop
program robot kipra pemadam api
//==========================================================================================
// Progam ini di buat oleh Misbah najh (FB)
// Program dikendalikan menguanakan sensor jarak Ultrasonic
// mengunakan motor servo MG995,sensor hc-sr04,flame sensor 5channel, fan L9110, arduino uno,dan chassis
// Chassis+servo modif didapatkan https://www.tokopedia.com/microbot/frame-chassis-robot-pemadam-api-servo-roda
// Tutorial dan video klik https://www.sinauduino.blogspot.co.id
// full tutorial video https://www.youtube.com/watch?v=BL8ZB5-ql9Q
//==========================================================================================
//inisialisai motor servo
#include <Servo.h>
#define RODA1 4
#define RODA2 5
Servo Roda1; Servo Roda2;
//definisi pin kipas dan pin buzzer
#define kipas 6
#define buzzer 3
bool keadaan;
//KALIBRASI KECEPATAN DAN SETPOIN SENSOR
int kecepataan =600; // NILAI GERAK BELOK 90* (500-1000);
int rodakanan =93; // NILAI BERHENTI RODA KANAN (+-90);
int rodakiri =95; // NILAI BERHENTI RODA KIRI (+-90);
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 10
#define trigger1 9
NewPing sonar1(trigger1,echo1,100);
//inisialisasi sensor 2 sebelah depan
#define echo2 12
#define trigger2 11
NewPing sonar2(trigger2,echo2,100);
//inisialisasi sensor 2 sebelah kanan
#define echo3 8
#define trigger3 7
NewPing sonar3(trigger3,echo3,100);
void setup() {
Serial.begin(9600); // serial monitor "menampilkan data sensor"
diam(3000);
Roda1.attach(RODA1); //pin motor servo
Roda2.attach(RODA2);
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);
//PEMIS 1 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 void diam(x);"
tiup(kecepataan); //panggil tiup
diam(1000); //panggil diam
keadaan = 1;
}
//PREMIS 2 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(kecepataan);
diam (100000);//berhenti total
}
//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(kecepataan);
}
//jika sensor kanan > sensor kanan maka ditentukan "balik kiri"
else if (jarak1>jarak3){
balik_kiri();
delay(kecepataan);
}
}
//JIKA NIALI SET POIN SEMUA SENSOR TIDAK TERLAMPAUI MAKA "ROBOT MAJU"
else{
maju();
delay(100);
}
}
}
// inisialisasi progam pangillan
void maju(){ //SEMUA RODA MAJU
Roda1.write(380);
Roda2.write(-380);
}
void mundur(){ //SEMUA RODA MUNDUR
Roda1.write(-380);
Roda2.write(380);
}
void balik_kiri(){
Roda1.write(-380); //RODA1 MUNDUR
Roda2.write(-380); //RODA2 MAJU
}
void balik_kanan(){
Roda1.write(380); //RODA1 MAJU
Roda2.write(380); //RODA2 MUNDUR
}
void kanan(){
Roda1.write(380); //RODA1 MAJU
Roda2.write(rodakanan); //RODA2 BERHENTI
}
void kiri(){
Roda1.write(rodakiri); //RODA1 BERHENTI
Roda2.write(-380); //RODA2 MAJU
}
void diam(int x){
Roda1.write(93); //RODA KANAN BERHENTI
Roda2.write(95); //RODA KIRI BERHENTI
delay(x); //SEMUA RODA BERHENTI
}
void tiup(int x){ // ROBOT BERHENTI DAN MENIUP KEKANAN DAN KRKIRI
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);
}
// Progam ini di buat oleh Misbah najh (FB)
// Program dikendalikan menguanakan sensor jarak Ultrasonic
// mengunakan motor servo MG995,sensor hc-sr04,flame sensor 5channel, fan L9110, arduino uno,dan chassis
// Chassis+servo modif didapatkan https://www.tokopedia.com/microbot/frame-chassis-robot-pemadam-api-servo-roda
// Tutorial dan video klik https://www.sinauduino.blogspot.co.id
// full tutorial video https://www.youtube.com/watch?v=BL8ZB5-ql9Q
//==========================================================================================
//inisialisai motor servo
#include <Servo.h>
#define RODA1 4
#define RODA2 5
Servo Roda1; Servo Roda2;
//definisi pin kipas dan pin buzzer
#define kipas 6
#define buzzer 3
bool keadaan;
//KALIBRASI KECEPATAN DAN SETPOIN SENSOR
int kecepataan =600; // NILAI GERAK BELOK 90* (500-1000);
int rodakanan =93; // NILAI BERHENTI RODA KANAN (+-90);
int rodakiri =95; // NILAI BERHENTI RODA KIRI (+-90);
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 10
#define trigger1 9
NewPing sonar1(trigger1,echo1,100);
//inisialisasi sensor 2 sebelah depan
#define echo2 12
#define trigger2 11
NewPing sonar2(trigger2,echo2,100);
//inisialisasi sensor 2 sebelah kanan
#define echo3 8
#define trigger3 7
NewPing sonar3(trigger3,echo3,100);
void setup() {
Serial.begin(9600); // serial monitor "menampilkan data sensor"
diam(3000);
Roda1.attach(RODA1); //pin motor servo
Roda2.attach(RODA2);
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);
//PEMIS 1 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 void diam(x);"
tiup(kecepataan); //panggil tiup
diam(1000); //panggil diam
keadaan = 1;
}
//PREMIS 2 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(kecepataan);
diam (100000);//berhenti total
}
//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(kecepataan);
}
//jika sensor kanan > sensor kanan maka ditentukan "balik kiri"
else if (jarak1>jarak3){
balik_kiri();
delay(kecepataan);
}
}
//JIKA NIALI SET POIN SEMUA SENSOR TIDAK TERLAMPAUI MAKA "ROBOT MAJU"
else{
maju();
delay(100);
}
}
}
// inisialisasi progam pangillan
void maju(){ //SEMUA RODA MAJU
Roda1.write(380);
Roda2.write(-380);
}
void mundur(){ //SEMUA RODA MUNDUR
Roda1.write(-380);
Roda2.write(380);
}
void balik_kiri(){
Roda1.write(-380); //RODA1 MUNDUR
Roda2.write(-380); //RODA2 MAJU
}
void balik_kanan(){
Roda1.write(380); //RODA1 MAJU
Roda2.write(380); //RODA2 MUNDUR
}
void kanan(){
Roda1.write(380); //RODA1 MAJU
Roda2.write(rodakanan); //RODA2 BERHENTI
}
void kiri(){
Roda1.write(rodakiri); //RODA1 BERHENTI
Roda2.write(-380); //RODA2 MAJU
}
void diam(int x){
Roda1.write(93); //RODA KANAN BERHENTI
Roda2.write(95); //RODA KIRI BERHENTI
delay(x); //SEMUA RODA BERHENTI
}
void tiup(int x){ // ROBOT BERHENTI DAN MENIUP KEKANAN DAN KRKIRI
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);
}
Langganan:
Postingan (Atom)