TP 2 M2 Percobaan 4 Kondisi 3


1. Prosedur [Kembali]

  • Rangkai semua komponen 
  • Buat program di aplikasi arduino IDE
  • Setelah selesai masukkan program ke arduino 
  • Jalankan program pada simulasi dan cobakan sesuai kondisi


a. Arduino Uno


b. Keypad


c. Motor Servo


Blok Diagram



  • Rangkaian Simulasi
  • Prinsip Kerja 

        Pada percobaan keempat, kita akan menjalankan Kondisi 3, dimana kita akan mengatur motor servo dengan menggunakan keypad sebagai input. Keypad ini akan menghasilkan nilai PWM antara 0 hingga 255, dengan selisih 28 antara setiap nilai PWM (Pulse Width Modulation). Motor servo bergerak dengan presisi sesuai dengan sudut yang diberikan melalui PWM (Pulse Width Modulation).

        Oleh karena itu, pada percobaan ini digunakan keypad untuk mengontrol sudut motor servo secara tepat sesuai dengan nilai PWM yang ditentukan. Misalnya, ketika kita memasukkan nilai PWM 56, maka motor servo akan bergerak ke posisi sudut sesuai dengan nilai diinputkan tadi. Hal yang sama juga berlaku dengan nilai-nilai PWM lainnya dari 0 hingga 255 dengan jarak antar PWM (Pulse Width Modulation) antar Key 28.

  • Flowchart 


  • Listing Program 
#include <Servo.h> 
#include <Keypad.h> 

Servo servoMotor; 
const int servoPin = 11; // PWM pin for servo 

const int numRows = 4;  // Number of rows in keypad 
const int numCols = 3;  // Number of columns in keypad 
char keys[numRows][numCols] = { 
  {'1', '2', '3'}, 
  {'4', '5', '6'}, 
  {'7', '8', '9'}, 
  {'*', '0', '#'} 
}; 

byte rowPins[numRows] = {9, 8, 7, 6}; // Rows 0 to 3 
byte colPins[numCols] = {5, 4, 3};     // Columns 0 to 2

Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, numRows, numCols); 

// Calculate PWM step size
const int pwmStep = 255 / 8; // Jumlah tombol keypad minus 1

void setup() { 
  servoMotor.attach(servoPin); 
  servoMotor.write(90); // Initial position 
  Serial.begin(9600); 
} 

void loop() { 
  char key = keypad.getKey(); 
   
  if (key != NO_KEY) { 
    Serial.println(key); 
     
    // Perform actions based on the key pressed 
    switch (key) { 
      case '1': 
        servoMotor.write(0); // PWM 0
        break; 
      case '2': 
        servoMotor.write(pwmStep * 1); // PWM 28
        break; 
      case '3': 
        servoMotor.write(pwmStep * 2); // PWM 56
        break; 
      case '4': 
        servoMotor.write(pwmStep * 3); // PWM 84
        break; 
      case '5': 
        servoMotor.write(pwmStep * 4); // PWM 112
        break; 
      case '6': 
        servoMotor.write(pwmStep * 5); // PWM 140
        break; 
      case '7': 
        servoMotor.write(pwmStep * 6); // PWM 168
        break; 
      case '8': 
        servoMotor.write(pwmStep * 7); // PWM 196
        break; 
      case '9': 
        servoMotor.write(pwmStep * 8); // PWM 224
        break; 
      default: 
        break; 
    } 
  } 
}

4. Kondisi [Kembali]

Keypad 1 hingga 9 memberikan PWM 0-255 dengan jarak PWM antar Key 28

- Rangkaian Proteus  klik disini
- Gambar Simulasi  klik disini
- Video Simulasi  klik disini
- Listing Program  klik disini
- Datasheet Komponen klik disini
- Library klik disini