DAFTAR ISI
1. Prosedur
2. Hardware dan Diagram Blok
3. Rangkaian Simulasi dan Prinsip Kerja
4. Flowchart dan Listing Program
5. Kondisi
6. Video Demo
7. Download File

MODUL 2: PWM, ADC, dan Interrupt
Selasa, 19 Maret 2024
Laporan Akhir 2

1. Prosedur
a. Susunlah seperti rangkaian yang ada,
b. Buka Arduino IDE dan masukkan listing program, 
c. Unggah program ke Arduino, dan
d. Variasikan kondisi pada keypad untuk melihat perubahan pada sudut motor servo

2. Hardware dan Diagram Blok
Keypad
Motor Servo

Arduino UNO

3. Rangkaian Simulasi dan Prinsip Kerja

Pada awalnya, program melakukan inisialisasi library Servo dan Keypad, serta menetapkan pin untuk servo dan konfigurasi keypad, termasuk jumlah baris dan kolom serta tombol yang terdapat pada keypad. Pada bagian setup, servo motor dihubungkan ke pin PWM yang telah ditentukan dan diatur ke posisi awal yaitu 90 derajat sebagai 0 derajat. Jika tombol tertentu ditekan (key != NO_KEY), program akan mengeksekusi aksi sesuai dengan tombol yang ditekan. Setiap tombol pada keypad memiliki aksi yang berbeda terhadap servo motor:
Tombol 1: Memindahkan servo ke posisi 0 derajat.
Tombol 2: Memindahkan servo ke posisi 45 derajat.
Tombol 3: Memindahkan servo ke posisi 90 derajat.
Tombol 4: Memindahkan servo ke posisi 135 derajat.
Tombol 5: Memindahkan servo ke posisi 180 derajat.
Tombol 6: Memindahkan servo ke posisi 135 derajat.
Tombol 7: Memindahkan servo ke posisi 90 derajat.
Tombol 8: Memindahkan servo ke posisi 45 derajat.
Tombol 9: Memindahkan servo ke posisi 0 derajat.

4. Flowchart dan 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);
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
servoMotor.write(0);
break;
case '2':
// Move servo to position 45 degrees
servoMotor.write(45);
break;
case '3':
// Move servo to position 90 degrees
servoMotor.write(90);
break;
case '4':
// Move servo to position 135 degrees
servoMotor.write(135);
break;
case '5':
// Move servo to position 180 degrees
servoMotor.write(180);
break;
case '6':
// Move servo to position 135 degrees
servoMotor.write(135);
break;
case '7':
// Move servo to position 90 degrees
servoMotor.write(90);
break;
case '8':
// Move servo to position 45 degrees
servoMotor.write(45);
break;
case '9':
// Move servo to position 0 degrees
servoMotor.write(0);
break;
default:
break;
}
}
}

5. Kondisi
Pada percobaan kali ini, kami melakukan percobaan ke-4 dengan menggunakan motor servo dengan PWM.

6. Video Demo



7. Download File
Unduh HTML di sini
Unduh Datasheet Arduino UNO  di sini
Unduh Datasheet LCD 2x16  di sini
Unduh Datasheet Motor Servo  di sini
Unduh Datasheet Motor DC  di sini
Unduh Datasheet L293D  di sini
Unduh Datasheet Dipswitch  di sini
Unduh Datasheet Keypad di sini