Modul 2
PWM, ADC, INTERUP
Percobaan 4
1. Prosedur [Kembali]
3. Rangkaian Simulasi dan Prinsip Kerja [Kembali]
- Rangkai komponen sesuai percobaan dan kondisi yang dipilih.
- Buat program menggunakan Arduino IDE.
- Compile program yang telah dibuat lalu Upload ke dalam Arduino Uno.
- Uji coba program pada rangkaian percobaan sesuai dengan kondisi yang diinginkan.
- Selesai
2. Hardware dan Diagram Blok [Kembali]
3. Rangkaian Simulasi dan Prinsip Kerja [Kembali]
Simulasi Rangkaian
Prinsip Kerja
Pada rangkaian tersebut, membutuhkan servo motor untuk mengontrol alat yang kami gunakan. Kami menggunakan Arduino untuk mengontrol servo motor melalui keypad. Mikrokontroller Arduino akan terus menerus melakukan skanning keypad. Ketika salah satu tombol pada keypad ditekan, mikrokontroller akan mendeteksi tombol mana yang ditekan. Data yang masuk ke Arduino akan dikoloskan oleh program yang telah diupload. Keluaran nanti yaitu putaran sudut dari motor servo yang besar di tentukan berdasarkan program
4. Flowchart dan Listing Program [Kembali]
Flowchart
Listing Program
#include <Servo.h>
#include <Keypad.h>
Baris ini mengimpor dua library yang dibutuhkan, yaitu Servo.h untuk mengontrol servo motor dan Keypad.h untuk menggunakan keypad.
Servo servoMotor;
Baris ini membuat objek servoMotor dari kelas Servo yang akan digunakan untuk mengontrol servo motor.
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
Baris ini mendefinisikan pin PWM yang akan digunakan untuk mengontrol servo motor, yaitu pin 11. dan mendefinisikan jumlah baris dan kolom pada keypad yang digunakan.
char keys[numRows][numCols] = {
{'1', '2', '3'},
{'4', '5', '6'},
{'7', '8', '9'},
{'*', '0', '#'}
};
Baris ini mendefinisikan pemetaan tombol pada keypad dalam bentuk array dua dimensi.
byte rowPins[numRows] = {9, 8, 7, 6}; // Rows 0 to 3
byte colPins[numCols] = {5, 4, 3}; // Columns 0 to 2
Baris ini mendefinisikan pin-pin yang terhubung dengan baris dan kolom pada keypad.
Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, numRows, numCols);
Baris ini membuat objek keypad dari kelas Keypad dengan menggunakan pemetaan tombol, pin-pin baris, pin-pin kolom, dan jumlah baris dan kolom yang telah didefinisikan sebelumnya.
void setup() {
servoMotor.attach(servoPin); tu
servoMotor.write(90); // Initial position
Serial.begin(9600);
}
Fungsi setup() dijalankan sekali pada saat awal program dijalankan. Baris pertama menghubungkan objek servoMotor dengan pin PWM yang telah didefinisikan sebelumnya. Baris kedua mengatur posisi awal servo motor ke 90 derajat. Baris ketiga memulai komunikasi serial dengan baud rate 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;
}
}
}
Fungsi loop() dijalankan berulang-ulang selama program berjalan. Baris pertama membaca tombol yang ditekan pada keypad dan menyimpannya dalam variabel key. Jika tombol ditekan (key != NO_KEY), program akan mencetak tombol yang ditekan ke serial monitor dan mengeksekusi kode di dalam blok switch untuk menggerakkan servo motor sesuai dengan tombol yang ditekan.
Kode di dalam blok switch menggunakan pernyataan case untuk memeriksa nilai key dan mengeksekusi kode yang sesuai. Misalnya, jika tombol '1' ditekan, servo motor akan digerakkan ke posisi 0 derajat dengan perintah servoMotor.write(0). Setiap case lainnya menggerakkan servo motor ke posisi yang berbeda sesuai dengan tombol yang ditekan.
Modul 2 Percobaan 4
6. Video Simulasi [Kembali]
7. Download File [Kembali]
HTML klik disini
File Rangkaian klik disini
Video Percobaan klik disini
Video Percobaan klik disini
Listing Program klik disini
Datasheet Arduino klik disini
Datasheet Keypad klik disini
Datasheet Motor servo klik disini
Tidak ada komentar:
Posting Komentar