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
- 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.
- 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;
}
}
}
- Video Simulasi klik disini
- Listing Program klik disini