Tugas Pendahuluan 1 modul 2




1. Prosedur
[Kembali]
  • Rangkailah seperti rangkaian berikut
  • Buka Arduino IDE dan masukan listing program
  • Upload program ke arduino
  • Tekan tombol pada keypad dan amati hasil
2. Hardware dan Diagram Blok [Kembali]
  1. Arduino Uno

    2. Keypad 4x4






    3. Servo Motor




    4. Power supply

    5. Ground


Diagram Blok:


3. Rangkaian Simulasi dan Prinsip Kerja [Kembali]




Gambar 1. Rangkaian Simulasi.

Prinsip Kerja:

    Ketika tombol pada keypad ditekan, mulai dari angka 1 hingga 9, responsnya akan terlihat pada motor servo yang akan berputar sesuai dengan nilai PWM yang diatur. PWM yang diberikan dihitung dengan mengalikan angka pada keypad dengan 25. Dengan kata lain, misalnya angka 1 akan memberikan sinyal PWM sebesar 25, angka 2 akan memberikan 50, dan seterusnya. Ketika tombol yang ditekan adalah A-D pada keypad, output yang dihasilkan adalah sinyal PWM dengan duty cycle berturut-turut adalah 0%, 25%, 50%, dan 100%.
 
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
6. Video Simulasi [Kembali]


7. Download File [Kembali]
᭒ HTML↠ klik disini
᭒ Rangkaian Simulasi ↠ klik disini
᭒ Gambar Simulasi ↠ klik disini
᭒ Video Simulasi ↠ klik disini
᭒ Listing Program ↠ klik disini