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
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





0 Komentar