Tugas Pendahuluan 1


Percobaan IV

Kontrol Motor Servo dengan PWM dan Keypad 4x4

1. Prosedur [Kembali]

  • Rangkailah seperti rangkaian berikut
  • Buka Arduino IDE dan masukan listing program
  • Upload program ke arduino
  • Jalankan dan amati keluarannya

2. Hardware dan Diagram Blok [Kembali]

    1. Arduino Uno

    2. Keypad 4x4





    3. Motor Servo


    4. Power supply

    5. Ground


Diagram Blok:










Gambar 1. Rangkaian Simulasi.

Prinsip Kerja:

    Pada saat keypad ditekan keypad A-D, maka output yang didapatkan adalah PWM dengan duty cycle 0%, 25%, 50%, dan 100% berurutan. Pada saat Angka 1 hingga 9, maka output yang akan dikeluarkan ada pada motor servo yang berputar sesuai PWM yang diberikan, dimana PWM yang diberikan adalah 25 dikali angka keypad, yang berarti angka 1 memberikan 25, 2 memberikan 50, dan seterusnya.

4. Flowchart dan Listing Program [Kembali]

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 = 4; // Number of columns in keypad
char keys[numRows][numCols] = {
  {'1', '2', '3', 'A'},
  {'4', '5', '6', 'B'},
  {'7', '8', '9', 'C'},
  {'*', '0', '#', 'D'}
};
byte rowPins[numRows] = {9, 8, 7, 6}; // Rows 0 to 3
byte colPins[numCols] = {5, 4, 3, 2}; // Columns 0 to 2
Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, numRows, numCols);

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':
        // Move servo to position 0 degrees (25% duty cycle)
        servoMotor.write(map(25, 0, 100, 0, 180));
        break;
      case '2':
        // Move servo to position 45 degrees (50% duty cycle)
        servoMotor.write(map(50, 0, 100, 0, 180));
        break;
      case '3':
        // Move servo to position 90 degrees (100% duty cycle)
        servoMotor.write(map(100, 0, 100, 0, 180));
        break;
      case '4':
      case '5':
      case '6':
      case '7':
      case '8':
      case '9':
        // Move servo to position 90 degrees (100% duty cycle)
        int dutyCycle = (key - '0') * 25; // Convert char to int and calculate duty cycle
        servoMotor.write(map(dutyCycle, 0, 100, 0, 180));
        break;
      case 'A':
       servoMotor.write(map(25, 0, 100, 0, 180));
        break;
      case 'B':
       servoMotor.write(map(50, 0, 100, 0, 180));
        break;
      case 'C':
       servoMotor.write(map(75, 0, 100, 0, 180));
        break;
      case 'D':
       servoMotor.write(map(100, 0, 100, 0, 180));
        break;
      default:
        break;
    }
  }
}

5. Kondisi [Kembali]

    Keypad A hingga D memberikan PWM 0% ,25% ,50% ,dan 100% duty cycle secara berurutan, sementara key 1 hingga 9 memberikan PWM dengan nilai (25 dikali angka keypad)

᭒ HTML↠ klik disini
Rangkaian Simulasi ↠ klik disini
᭒ Gambar Simulasi ↠ klik disini
᭒ Video Simulasi ↠ klik disini
᭒ Listing Program ↠ klik disini

















Tidak ada komentar:

Posting Komentar

Unggulan

Aplikasi Encoder Decoder

APLIKASI ROLLING TOKO OTOMATIS [KEMBALI KE MENU SEBELUMNYA] DAFTAR ISI 1. Tujuan 2. Alat dan Bahan 3. Dasar Teori 4. Percobaan ...