25 Mei 2023

ROBOT BERODA KENDALI BLUETOOTH HC 05 MODUL DRIVER L298N

 TOPOLOGI  ROBOT 2WD PENGENDALI BT HC 05

 


 
















Gambar 5.7. Topologi Robot Beroda 2WD kendali BT HC 05

 

A.     SETTING BLUETOOTH HC-05

1.      Memberikan Nama Bluetooth dan Password dengan AT COMMAND

2.      Penjelasan akan diuraikan di lampiran 2

 

B.      MENDOWNLOAD APLIKASI DI HP ANDROID

1.      Buka Google Play Store

2.      Ketik pada tab search “Arduino BT(HC-05)” lalu Install

3.      Password robot “1234”

 

C.      SKETCH ROBOT 2WD PENGENDALI BT HC 05

 

//CODER M.FIRDAUS,S.PD

//SEBELUM UPLOAD PROGRAM,CABUT DULU BT HC05 DAN SERVO

//HC05 RXD>pin 1

//HC05 TXD>pin 0

//HC05 GND>pin GND

//HC05 VCC>pin 5V

//menggunakan modul motor driver L298N

//PIN BLUETOOTH 1234

 

 

#include <SoftwareSerial.h>

char val;

 

// Penetapan Nama Variabel motor dan pin yang ditentukan

int ENA = 10; // pengatur kecepatan motor kiri di pin 10 pwm

int IN1 = 9; //IN1 motor kiri

int IN2 = 8; //IN2 motor kiri

int IN3 = 5; //IN3 motor kanan

int IN4 = 4; //IN4 motor kanan

int ENB = 3; // pengatur kecepatan motor kanan di pin 3 pwm

 

void setup()

{

  pinMode(IN1, OUTPUT); // in1 kiri

  pinMode(IN2, OUTPUT); // in2 kiri

  pinMode(IN3, OUTPUT); // in3 kanan

  pinMode(IN4, OUTPUT); // in4 kanan

  pinMode(ENA, OUTPUT); // nilai kecepatan motor kiri

  pinMode(ENB, OUTPUT); // nilai kecepatan motor kanan

 

  Serial.begin(9600); //Kecepatan komunikasi serial

 }

 

void loop(){

 

if( Serial.available() >0 )     

  {

    //Variable val untuk menyimpan sementara hasil dari bluetooth

    val = Serial.read();

    Serial.println(val);

  }

  

    if( val == 'F' ) {     //Motor Maju

        forward();

        }

    if( val == 'B') {      //Motor Mundur

        reverse();

        }

   if( val == 'R' ) {     //Motor Berbelok kanan

        right();

        }

   if( val == 'L' ) {     //Motor Berbelok kiri

        left();

        }

    if( val == 'S' ) {     //Motor Berhenti

        stop_bot();

        }

        delay(100);

 

    if( val == '1' ) {     //Motor Serong Kiri depan

        left();

        }

    if( val == '2' ) {     //Motor Serong Kanan depan

        right();

        }

    if( val == '3' ) {     //Motor Serong Kiri belakang

        sharpLeftTurn();

        }

    if( val == '4' ) {     //Motor Serong Kanan belakang

        sharpRightTurn();

        }

}

 

void forward(){

  analogWrite(ENA, 250); //Left Motor Speed

  analogWrite(ENB, 250); //Right Motor Speed

  digitalWrite(IN1, HIGH);

  digitalWrite(IN2, LOW);

  digitalWrite(IN3, HIGH);

  digitalWrite(IN4, LOW);

}

void reverse(){

  analogWrite(ENA, 250); //Left Motor Speed

  analogWrite(ENB, 250); //Right Motor Speed

  digitalWrite(IN1, LOW);

  digitalWrite(IN2, HIGH);

  digitalWrite(IN3, LOW);

  digitalWrite(IN4, HIGH);

}

void right(){

  analogWrite(ENA, 250); //Left Motor Speed

  analogWrite(ENB, 250); //Right Motor Speed

  digitalWrite(IN1, HIGH);

  digitalWrite(IN2, LOW);

  digitalWrite(IN3, LOW);

  digitalWrite(IN4, LOW);

}

void left(){

  analogWrite(ENA, 250); //Left Motor Speed

  analogWrite(ENB, 250); //Right Motor Speed

  digitalWrite(IN1, LOW);

  digitalWrite(IN2, LOW);

  digitalWrite(IN3, HIGH);

  digitalWrite(IN4, LOW);

}

void sharpRightTurn(){

  analogWrite(ENA, 250); //Left Motor Speed

  analogWrite(ENB, 250); //Right Motor Speed

  digitalWrite(IN1, HIGH);

  digitalWrite(IN2, LOW);

  digitalWrite(IN3, LOW);

  digitalWrite(IN4, HIGH);

}

void sharpLeftTurn() {

  analogWrite(ENA, 250); //Left Motor Speed

  analogWrite(ENB, 250); //Right Motor Speed

  digitalWrite(IN1, LOW);

  digitalWrite(IN2, HIGH);

  digitalWrite(IN3, HIGH);

  digitalWrite(IN4, LOW);

  

}

void stop_bot(){

  analogWrite(ENA, 0); //Left Motor Speed

  analogWrite(ENB, 0); //Right Motor Speed

  digitalWrite(IN1, LOW);

  digitalWrite(IN2, LOW);

  digitalWrite(IN3, LOW);

  digitalWrite(IN4, LOW);

}

A.  SKETCH ROBOT 2WD PENGENDALI Radio Frekuensi 4 Channel

 


 

const int val1 = A0; // pin terjemah untuk maju

const int val2 = A1; // pin terjemah untuk mundur

const int val3 = A2; // pin terjemah untuk kanan

const int val4 = A3; // pin terjemah untuk kiri

 

// Penetapan Nama Variabel motor dan pin yang ditentukan

int ENA = 10; // pengatur kecepatan motor kiri di pin 10 pwm

int IN1 = 9; //IN1 motor kiri

int IN2 = 8; //IN2 motor kiri

int IN3 = 5; //IN3 motor kanan

int IN4 = 4; //IN4 motor kanan

int ENB = 3; // pengatur kecepatan motor kanan di pin 3 pwm

 

int readState = 0;

 

void setup() {

  pinMode(val1, INPUT);

  pinMode(val2, INPUT);

  pinMode(val3, INPUT);

  pinMode(val4, INPUT);

 

  pinMode(IN1, OUTPUT); // in1 kiri

  pinMode(IN2, OUTPUT); // in2 kiri

  pinMode(IN3, OUTPUT); // in3 kanan

  pinMode(IN4, OUTPUT); // in4 kanan

  pinMode(ENA, OUTPUT); // nilai kecepatan motor kiri

  pinMode(ENB, OUTPUT); // nilai kecepatan motor kanan

}

 

void loop() {

  

  //untuk tombol pertama D2 ke A0

  readState = digitalRead(val1);

  if (readState == HIGH) {//Arah Maju

        forward();

        }

  else {//Motor Berhenti

        stop_bot();

    }

    delay(100);

    

  //untuk tombol kedua D0 ke A1

  readState = digitalRead(val2);

  if (readState == HIGH){//Arah Mundur

        reverse();

        }

  else {//Motor Berhenti

        stop_bot();

    }

    delay(100);

    

  //untuk tombol ketiga D3 ke A2

  readState = digitalRead(val3);

  if (readState == HIGH){//Arah Kanan

        right();

        }

  else {//Motor Berhenti

        stop_bot();

    }

    delay(100);

    

  //untuk tombol keempat D1 ke A3

  readState = digitalRead(val4);

   if (readState == HIGH){// Arah Kiri

        left();

        }

  else {//Motor Berhenti

        stop_bot();

    }

    delay(100);

}

 

void forward(){

  analogWrite(ENA, 250); //Left Motor Speed

  analogWrite(ENB, 250); //Right Motor Speed

  digitalWrite(IN1, HIGH);

  digitalWrite(IN2, LOW);

  digitalWrite(IN3, HIGH);

  digitalWrite(IN4, LOW);

}

void reverse(){

  analogWrite(ENA, 250); //Left Motor Speed

  analogWrite(ENB, 250); //Right Motor Speed

  digitalWrite(IN1, LOW);

  digitalWrite(IN2, HIGH);

  digitalWrite(IN3, LOW);

  digitalWrite(IN4, HIGH);

}

void right(){

  analogWrite(ENA, 250); //Left Motor Speed

  analogWrite(ENB, 250); //Right Motor Speed

  digitalWrite(IN1, HIGH);

  digitalWrite(IN2, LOW);

  digitalWrite(IN3, LOW);

  digitalWrite(IN4, LOW);

}

void left(){

  analogWrite(ENA, 250); //Left Motor Speed

  analogWrite(ENB, 250); //Right Motor Speed

  digitalWrite(IN1, LOW);

  digitalWrite(IN2, LOW);

  digitalWrite(IN3, HIGH);

  digitalWrite(IN4, LOW);

}

void sharpRightTurn(){

  analogWrite(ENA, 250); //Left Motor Speed

  analogWrite(ENB, 250); //Right Motor Speed

  digitalWrite(IN1, HIGH);

  digitalWrite(IN2, LOW);

  digitalWrite(IN3, LOW);

  digitalWrite(IN4, HIGH);

}

void sharpLeftTurn() {

  analogWrite(ENA, 250); //Left Motor Speed

  analogWrite(ENB, 250); //Right Motor Speed

  digitalWrite(IN1, LOW);

  digitalWrite(IN2, HIGH);

  digitalWrite(IN3, HIGH);

  digitalWrite(IN4, LOW);

  

}

void stop_bot(){

  analogWrite(ENA, 0); //Left Motor Speed

  analogWrite(ENB, 0); //Right Motor Speed

  digitalWrite(IN1, LOW);

  digitalWrite(IN2, LOW);

  digitalWrite(IN3, LOW);

  digitalWrite(IN4, LOW);

}