Waktu itu dapat pesanan project robot sederhana dari guru salah satu sekolah smk untuk bahan pembelajaran katanya, nah robot tersebut akan yang akan di bahas kali ini, jadi robot itu adalah light follower robot atau robot pengikut cahaya, robot ini merupakan robot yang berjenis mobile robot atau robot dengan menggunakan roda.
Light follower robot ini tidak jauh beda dengan robot line follower hanya saja perbedaannya jika line follower mengikuti track garis lain halnya dengan robot light follower ini mengkuti cahaya, artinya robot akan berjalan jika diberi cahaya pada sensor, dimana robot akan berjalan ke arah sesuai dengan sensor mana yang terkena cahaya.
Sensor yang digunakan yaitu sensor LDR (light dependent resistor) pada robot ini menggunakan 3 sensor LDR yang dipasang di depan robot dengan menghadap depan robot, samping kanan robot dan samping kiri robot, sebagai pengendali pergerakan robot dan pemeroses siyal sensor digunakan arduino sebagai mikrokontroler robot ini.
Komponen yang dibutuhkan
- 1x Arduino Uno
- 2x Motor DC
- 1x Driver Motor H-Bridge L298N
- 3x LDR (light dependent resistor)
- 3x Resistor 10k
- 1x Switch ON/OFF
- 1x Baterai 9V (di video menggunakan 4x baterai AA)
- Kabel secukupnya
- Chasis robot (robot ini menggunakan acrylic)
- Spacer
Jika arah putaran motor tidak sesuai, balik kabel motor yang terhubung dengan output driver motor, untuk baterai bisa menggunakan baterai 9V atau 12V.
Program/coding arduino langsung copy ke software arduino dan upload ke arduino
/**************************
light follower robot v2
www.muhilham.com
08/01/2020
***********************/
#define pin_MOTOR_DIRL 2
#define pin_MOTOR_PWML 3
#define pin_MOTOR_DIRR 4
#define pin_MOTOR_PWMR 5
#define Kec_Min -170
#define Kec_Max 220 // Max = 255
const int8_t pinSensor[3] = {A0, A1, A2}; // array pin sensor
int16_t limitSensor[3]; // array limit sensor
int16_t correction = 100; // nilai koreksi kalibrasi sensor
void setup() {
Serial.begin(9600);
pinMode(pin_MOTOR_DIRL, OUTPUT);
pinMode(pin_MOTOR_PWML, OUTPUT);
pinMode(pin_MOTOR_DIRR, OUTPUT);
pinMode(pin_MOTOR_PWMR, OUTPUT);
for (byte i = 0; i < 3; i++) { // kalibrasi sensor
pinMode(pinSensor[i], INPUT);
limitSensor[i] = analogRead(pinSensor[i]) + correction;
if (limitSensor[i] > 1023) limitSensor[i] = 1023;
delay(50);
}
}
void loop() {
Serial.print("|");
Serial.print(limitSensor[0]);
Serial.print("|");
Serial.print(limitSensor[1]);
Serial.print("|");
Serial.print(limitSensor[2]);
Serial.print("| |");
Serial.print(analogRead(pinSensor[0]));
Serial.print("|");
Serial.print(analogRead(pinSensor[1]));
Serial.print("|");
Serial.print(analogRead(pinSensor[2]));
Serial.print("| |");
followLight();
}
void followLight() {
int16_t sensor = BacaSensor();
switch (sensor) {
case 0b000 : driveMotor(0, 0); Serial.println("| Stop"); break; // Belok kiri
case 0b001 : driveMotor(Kec_Max, Kec_Max / 2); Serial.println("| Belok Kanan"); break; // Belok kanan
case 0b011 : driveMotor(Kec_Max / 2, Kec_Max / 3); Serial.println("| Serong Kanan"); break; // Serong kanan
case 0b010 : driveMotor(Kec_Max, Kec_Max); Serial.println("| Lurus"); break; // Lurus
case 0b111 : driveMotor(Kec_Max, Kec_Max); Serial.println("| Lurus"); break; // Lurus
case 0b110 : driveMotor(Kec_Max / 3, Kec_Max / 2); Serial.println("| Serong Kiri"); break; // Serong kiri
case 0b100 : driveMotor(Kec_Max / 2, Kec_Max); Serial.println("| Belok Kiri"); break; // Belok kiri
case 0b101 : driveMotor(Kec_Max, Kec_Max); Serial.println("| Lurus"); break; // Belok kiri
}
}
int16_t BacaSensor() {
int16_t bitSensor = 0;
for (byte i = 0; i < 3; i++) {
if (analogRead(pinSensor[i]) > limitSensor[i]) {
bitSensor = bitSensor | (0b100 >> i);
Serial.print("1");
} else Serial.print("0");
}
return bitSensor;
}
void driveMotor(int16_t Left, int16_t Right) {
if (Left > 0) {
digitalWrite(pin_MOTOR_DIRL, LOW);
} else {
digitalWrite(pin_MOTOR_DIRL, HIGH);
Left = 255 + Left;
}
analogWrite(pin_MOTOR_PWML, Left);
if (Right > 0) {
digitalWrite(pin_MOTOR_DIRR, LOW);
} else {
digitalWrite(pin_MOTOR_DIRR, HIGH);
Right = 255 + Right;
}
analogWrite(pin_MOTOR_PWMR, Right);
}
Kalau pakai 2 ldr bisa gak mas,dan sketch mana yang harus di rubah
ReplyDeleteSWITCH ON OFFNYA DIPASANG DIMANA
ReplyDeletekabel + setelah baterai
Deletemas, untuk kodingnya udah bisa tapi boleh ga minta sedikit penjelasannya ??
ReplyDeleteHarus download librari apa aja bang klo mau upload program nya??
ReplyDelete