Percobaan 4 Kondisi 2
Kontrol Motor Servo dengan PWM
1. Foto Hardware dan Diagram Blok [Kembali]
Arduino Uno
DipSwitch
Motor Servo
Diagram Blok:
2. Prosedur Percobaan [Kembali]
1. Susun semua komponen.
2. Buat program menggunakan aplikasi Arduino IDE.
3. Unggah program ke Arduino setelah selesai.
4. Jalankan program pada simulasi dan uji dengan modul.
2. Buat program menggunakan aplikasi Arduino IDE.
3. Unggah program ke Arduino setelah selesai.
4. Jalankan program pada simulasi dan uji dengan modul.
Rangkaian Simulasi
Prinsip Kerja
Program ini mengontrol pergerakan motor servo menggunakan keypad pada Arduino. Saat tombol keypad ditekan, program membaca karakter yang sesuai dan menggerakkan motor servo ke posisi tertentu berdasarkan karakter tersebut. Langkah awal program adalah menginisialisasi motor servo dan keypad. Motor servo terhubung ke pin PWM pada Arduino (misalnya pin 11) dan diatur ke posisi awal 90 derajat menggunakan perintah servoMotor.write(90). Kemudian, keypad disiapkan untuk digunakan.
Selama program berjalan, Arduino terus memantau apakah ada tombol yang ditekan pada keypad. Saat tombol ditekan, program menggunakan struktur switch-case untuk menentukan tindakan selanjutnya berdasarkan karakter tombol yang ditekan. Setiap karakter tombol langsung dihubungkan ke posisi sudut tertentu untuk motor servo. Perintah servoMotor.write() digunakan untuk menggerakkan motor servo ke sudut yang sesuai dengan karakter yang ditekan. Keypad 1 hingga 9, misalnya, memberikan PWM dari 180 hingga 0 dengan jarak PWM antar tombolnya sebesar 20. Jika tombol yang ditekan tidak cocok dengan yang diprogram, tidak ada aksi yang diambil pada motor servo.
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(280);
break;
case '2':
// Move servo to position 45 degrees
servoMotor.write(160);
break;
case '3':
// Move servo to position 90 degrees
servoMotor.write(140);
break;
case '4':
// Move servo to position 135 degrees
servoMotor.write(120);
break;
case '5':
// Move servo to position 180 degrees
servoMotor.write(100);
break;
case '6':
// Move servo to position 135 degrees
servoMotor.write(80);
break;
case '7':
// Move servo to position 90 degrees
servoMotor.write(60);
break;
case '8':
// Move servo to position 45 degrees
servoMotor.write(40);
break;
case '9':
// Move servo to position 0 degrees
servoMotor.write(20);
break;
default:
break;
}
}
}
Keypad 1 hingga 9 memberikan PWM 180-0 dengan jarak PWM antar key 20
Download HTML
Download Rangkaian
Download Program
Download Video Simulasi
Download Datasheet 7-Segment
Download Datasheet Arduino Uno
Tidak ada komentar:
Posting Komentar