MODUL II PWM, ADC, dan Interrupt
- Rangkailah seperti rangkaian berikut
- Buka Arduino IDE dan masukan listing program Upload program ke arduino
- Variasikan tombol yang ditekan dan amati keluarannya pada LCD
Hardware |
Flowchart |
Program mengimpor dua library yaitu Servo.h untuk mengontrol motor servo dan Keypad.h untuk mengontrol keypad.
Mendefinisikan Variabel: Program mendefinisikan beberapa variabel seperti servoPin untuk menentukan pin PWM untuk motor servo, numRows dan numCols untuk menentukan jumlah baris dan kolom pada keypad, keys sebagai array karakter untuk menyimpan layout keypad, rowPins dan colPins untuk menentukan pin pada Arduino yang terhubung dengan baris dan kolom keypad, dan keypad untuk menginisialisasi keypad.
Pada bagian setup, program menginisialisasi motor servo, menentukan posisi awal motor servo (90 derajat), dan mengatur komunikasi serial dengan kecepatan 9600 baud.
Loop: Program masuk ke dalam loop utama. Pada setiap iterasi loop, program memeriksa apakah ada tombol keypad yang ditekan dengan menggunakan fungsi keypad.getKey().
Pemrosesan Input: Jika ada tombol yang ditekan (key != NO_KEY), program akan mencetak tombol yang ditekan ke Serial Monitor dan melakukan aksi sesuai dengan tombol yang ditekan menggunakan struktur switch-case.
Aksi Motor Servo: Setiap case dalam switch-case mengatur posisi motor servo sesuai dengan tombol yang ditekan pada keypad. Misalnya, jika tombol '1' ditekan, motor servo akan diposisikan pada 0 derajat, jika tombol '2' ditekan, motor servo akan diposisikan pada 45 derajat, dan seterusnya.
Loop Continues: Setelah menjalankan aksi yang sesuai dengan tombol yang ditekan, program kembali ke awal loop untuk terus memonitor input dari keypad dan mengontrol motor servo.
Prinsip kerja utama dari program ini adalah membaca input dari keypad dan mengubahnya menjadi perintah untuk mengatur posisi motor servo.
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 = 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;
}
}
}
Percobaan 4 Kontrol Motor Servo dengan PWM
File HTML klik disini
Rangkaian Simulasi Proteus klik disini
File Video Rangkaian klik disini
File Arduino klik disini
Datasheet klik disini
Rangkaian Simulasi Proteus klik disini
File Video Rangkaian klik disini
File Arduino klik disini
Datasheet klik disini
Tidak ada komentar:
Posting Komentar