int trig1 = 2;int trig2 = 7;int trig3 = 10;
int echo1 = 4;int echo2 = 8;int echo3 = 11;
const int trigPin[] = {2, 7, 10};
const int echoPin[] = {4, 8, 11};
//m1 & m3 = maju
//m2 & m4 = mundur
int m1 = 3;int m2 = 5;
int m3 = 6;int m4 = 9;
const int motorPin[] = {3, 5, 6, 9};
const int cv = 20;
// ms = 0 - 255
int ms = 200;
void setup() {
// put your setup code here, to run once:
Serial.begin(10000);
for(int i = 0;i < 3;i++){
pinMode(trigPin[i], OUTPUT);
pinMode(echoPin[i], INPUT);
}
for(int i = 0;i < 4;i++){
pinMode(motorPin[i], OUTPUT);
}
}
int readSensor(int trig, int echo){
digitalWrite(trig, HIGH);
delayMicroseconds(10);
digitalWrite(trig, LOW);
int durasi = pulseIn(echo, HIGH) / 58.475;
return (durasi != 0 && durasi < cv) ? 1 : 0;
}
void loop() {
// put your main code here, to run repeatedly:
//(nilai (kondisi) pembanding) ? true : false;
int s1 = readSensor(trig1, echo1);
int s2 = readSensor(trig2, echo2);
int s3 = readSensor(trig3, echo3);
if(s1 == 0 && s2 == 0 && s3 == 0){
moveForward();
}else if(s2 == 1){
int kondisi = random(0, 2);
if(kondisi == 1){
turnLeft();
}else if(kondisi == 2){
turnRight();
}
}else if(s1 == 1){
turnLeft();
}else if(s3 == 1){
turnRight();
}
//loop()/;
}
//LogicMotor
//m1 m2 = motor kiri
//m3 m4 = motor kanan
//m1 m3 = maju
void moveForward(){
analogWrite(m1, ms);analogWrite(m2, LOW);
analogWrite(m3, ms);analogWrite(m4, LOW);
}
//m2 m4 = mundur
void moveBackward(){
analogWrite(m1, LOW);analogWrite(m2, ms);
analogWrite(m3, LOW);analogWrite(m4, ms);
}
//m1 nyala, m4 nyala || m2 , m3 mati
void turnRight(){
analogWrite(m1, ms);analogWrite(m2, LOW);
analogWrite(m3, LOW);analogWrite(m4, ms);
}
//m2 m3 nyala || m1 m4 mati
void turnLeft(){
analogWrite(m1, LOW);analogWrite(m2, ms);
analogWrite(m3, ms);analogWrite(m4, LOW);
}
//m1 , m3 / 2
void forwardRight(){
analogWrite(m1, ms);analogWrite(m2, LOW);
analogWrite(m3, ms / 2);analogWrite(m4, LOW);
}
void forwardLeft(){
analogWrite(m1, ms / 2);analogWrite(m2, LOW);
analogWrite(m3, ms);analogWrite(m4, LOW);
}
void moveBackwardRight(){
analogWrite(m1, LOW);analogWrite(m2, ms);
analogWrite(m3, LOW);analogWrite(m4, ms / 2);
}
void moveBackwardLeft(){
analogWrite(m1, LOW);analogWrite(m2, ms / 2);
analogWrite(m3, LOW);analogWrite(m4, ms);
}