const int MOTOR_1A = 5; /*motor 1*/
const int MOTOR_1B = 3;
const int MOTOR_2A = 6; /*motor 2*/
const int MOTOR_2B = 9;
const int SENSOR1 = 13; /*sensor1*/
const int SENSOR2 = 12; /*sensor2*/
const int SENSOR3 = 11; /*sensor3*/
const int SENSOR4 = 10; /*sensor4*/
const int SENSOR5 = 8; /*sensor5*/
const int SENSOR6 = 7; /*sensor6*/
void setup()
{
pinMode(MOTOR_1A, OUTPUT);
pinMode(MOTOR_1B, OUTPUT);
pinMode(MOTOR_2A, OUTPUT);
pinMode(MOTOR_2B, OUTPUT);
pinMode(SENSOR1, INPUT);
pinMode(SENSOR2, INPUT);
pinMode(SENSOR3, INPUT);
pinMode(SENSOR4, INPUT);
pinMode(SENSOR5, INPUT);
pinMode(SENSOR6, INPUT);
}
void loop()
{
/* untuk mendeteksi 1 dan 0 sensor garis ini maka lakukan pengujian pada garis sirkuit. Catatlah data penyalaan lampu LED pada 6 buah sensor garis pada saat menyentuh garis lurus, berbelok kanan atau kiri, berbelok tajam dan lain-lain.
Logika yang digunakan adalah AND */
//deteksi sensor maju
if ((digitalRead(SENSOR1) == 0)&&
(digitalRead(SENSOR2) == 0)&&
(digitalRead(SENSOR3) == 1)&&
(digitalRead(SENSOR4) == 1)&&
(digitalRead(SENSOR5) == 0)&&
(digitalRead(SENSOR6) == 0))
{MAJU();}
if ((digitalRead(SENSOR1) == 0)&&
(digitalRead(SENSOR2) == 1)&&
(digitalRead(SENSOR3) == 1)&&
(digitalRead(SENSOR4) == 0)&&
(digitalRead(SENSOR5) == 0)&&
(digitalRead(SENSOR6) == 0))
{MAJU();}
if ((digitalRead(SENSOR1) == 0)&&
(digitalRead(SENSOR2) == 1)&&
(digitalRead(SENSOR3) == 0)&&
(digitalRead(SENSOR4) == 0)&&
(digitalRead(SENSOR5) == 0)&&
(digitalRead(SENSOR6) == 0))
{MAJU();}
//deteksi sensor belok kanan
if ((digitalRead(SENSOR1) == 0)&&
(digitalRead(SENSOR2) == 0)&&
(digitalRead(SENSOR3) == 1)&&
(digitalRead(SENSOR4) == 1)&&
(digitalRead(SENSOR5) == 1)&&
(digitalRead(SENSOR6) == 1))
{BELOK_KANAN();}
if ((digitalRead(SENSOR1) == 0)&&
(digitalRead(SENSOR2) == 0)&&
(digitalRead(SENSOR3) == 0)&&
(digitalRead(SENSOR4) == 0)&&
(digitalRead(SENSOR5) == 1)&&
(digitalRead(SENSOR6) == 1))
{BELOK_KANAN();}
if ((digitalRead(SENSOR1) == 0)&&
(digitalRead(SENSOR2) == 0)&&
(digitalRead(SENSOR3) == 0)&&
(digitalRead(SENSOR4) == 1)&&
(digitalRead(SENSOR5) == 0)&&
(digitalRead(SENSOR6) == 0))
(BELOK_KANAN();}
if ((digitalRead(SENSOR1) == 0)&&
(digitalRead(SENSOR2) == 0)&&
(digitalRead(SENSOR3) == 0)&&
(digitalRead(SENSOR4) == 0)&&
(digitalRead(SENSOR5) == 1)&&
(digitalRead(SENSOR6) == 1))
{BELOK_KANAN();}
//deteksi sensor belok kiri
if ((digitalRead(SENSOR1) == 0)&&
(digitalRead(SENSOR2) == 0)&&
(digitalRead(SENSOR3) == 1)&&
(digitalRead(SENSOR4) == 0)&&
(digitalRead(SENSOR5) == 0)&&
(digitalRead(SENSOR6) == 0))
{BELOK_KIRI();}
//deteksi sensor belok kiri sedikit
if ((digitalRead(SENSOR1) == 0)&&
(digitalRead(SENSOR2) == 1)&&
(digitalRead(SENSOR3) == 1)&&
(digitalRead(SENSOR4) == 0)&&
(digitalRead(SENSOR5) == 0)&&
(digitalRead(SENSOR6) == 0))
(BELOK_KIRI_SEDIKIT();}
if ((digitalRead(SENSOR1) == 0)&&
(digitalRead(SENSOR2) == 1)&&
(digitalRead(SENSOR3) == 0)&&
(digitalRead(SENSOR4) == 0)&&
(digitalRead(SENSOR5) == 0)&&
(digitalRead(SENSOR6) == 0))
(BELOK_KIRI_SEDIKIT();}
//deteksi sensor belok kiri
if ((digitalRead(SENSOR1) == 1)&&
(digitalRead(SENSOR2) == 1)&&
(digitalRead(SENSOR3) == 1)&&
(digitalRead(SENSOR4) == 1)&&
(digitalRead(SENSOR5) == 0)&&
(digitalRead(SENSOR6) == 0))
{BELOK_KIRI();}
if ((digitalRead(SENSOR1) == 1)&&
(digitalRead(SENSOR2) == 1)&&
(digitalRead(SENSOR3) == 0)&&
(digitalRead(SENSOR4) == 0)&&
(digitalRead(SENSOR5) == 0)&&
(digitalRead(SENSOR6) == 0))
{BELOK_KIRI();}
//deteksi sensor untuk stop
if ((digitalRead(SENSOR1) == 1)&&
(digitalRead(SENSOR2) == 1)&&
(digitalRead(SENSOR3) == 1)&&
(digitalRead(SENSOR4) == 1)&&
(digitalRead(SENSOR5) == 1)&&
(digitalRead(SENSOR6) == 1))
{STOP();}
}
//----------------------------- HARUS SESUAI DENGAN Jalur
void MAJU()
{
analogWrite(MOTOR_1A,200);
analogWrite(MOTOR_1B,0);
analogWrite(MOTOR_2A,200);
analogWrite(MOTOR_2B,0);
}
//-----------------------------
void BELOK_KANAN()
{
analogWrite(MOTOR_1A,200);
analogWrite(MOTOR_1B,0);
analogWrite(MOTOR_2A,0);
analogWrite(MOTOR_2B,0);
}
//-----------------------------
void BELOK_KIRI_SEDIKIT()
{
analogWrite(MOTOR_1A,0);
analogWrite(MOTOR_1B,100);
analogWrite(MOTOR_2A,100);
analogWrite(MOTOR_2B,0);
}
//-----------------------------
void BELOK_KIRI()
{
analogWrite(MOTOR_1A,0);
analogWrite(MOTOR_1B,0);
analogWrite(MOTOR_2A,200);
analogWrite(MOTOR_2B,0);
}
//-----------------------------
void STOP()
{
analogWrite(MOTOR_1A,0);
analogWrite(MOTOR_1B,0);
analogWrite(MOTOR_2A,0);
analogWrite(MOTOR_2B,0);
}