Percobaan 4
Kontrol Motor Servo dengan PWM1. Foto Hardware dan Diagram Blok [Kembali]
Foto Hardware:
Diagram Blok:
2. PROSEDUR PERCOBAAN [Kembali]
- Rangkai semua komponen
- Buat program di aplikasi arduino IDE
- Setelah selesai masukkan program ke arduino
- Jalankan program pada simulasi dan cobakan dengan modul
3. RANGKAIAN SIMULASI DAN PRINSIP KERJA[Kembali]
Rangkaian Simulasi:
Input dari rangkaian ini adalah keypad, sementara outputnya adalah motor servo. Agar input dapat memengaruhi output, maka terdapat instruksi atau perintah berupa program yang
berjalan pada mikrokontroler yang digunakan, yaitu arduino uno.
Dalam
program, motor servo ditempatkan pada posisi awal 90 derajat, pin
data-nya dihubungkan pada pin PWM pada arduino uno sebagai pengatur
posisi dan kecepatannya. Setiap tombol pada keypad memiliki nilai yang
berbeda. Ketika tombol ditekan, maka program akan menggerakkan motor
servo sesuai dengan nilai yang ditetapkan pada setiap kasus. Nilai yang
diberikan pada keypad adalah sebagai berikut.
- Tombol "1" menyebabkan pergerakan motor servo ke posisi 0 derajat.
- Tombol "2" menyebabkan pergerakan motor servo ke posisi 45 derajat.
- Tombol "3" menyebabkan pergerakan motor servo ke posisi 90 derajat.
- Tombol "4" menyebabkan pergerakan motor servo ke posisi 135 derajat.
- Tombol "5" menyebabkan pergerakan motor servo ke posisi 180 derajat.
- Tombol "6" menyebabkan pergerakan motor servo ke posisi 135 derajat.
- Tombol "7" menyebabkan pergerakan motor servo ke posisi 90 derajat.
- Tombol "8" menyebabkan pergerakan motor servo ke posisi 45 derajat.
- Tombol "9" menyebabkan pergerakan motor servo ke posisi 0 derajat.
Program tertera pada bagian 4 (FLOWCHART DAN LISTING PROGRAM).
4. FLOWCHART DAN LISTING PROGRAM [Kembali]
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;
}
}
}
#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 [Kembali]
Input dari rangkaian adalah keypad dengan output motor servo. Motor
servo ditempatkan pada posisi awal 90 derajat, pin data-nya dihubungkan
pada pin PWM pada arduino uno sebagai pengatur posisi dan kecepatannya.
Setiap tombol pada keypad memiliki nilai yang berbeda. Ketika tombol
ditekan, maka program akan menggerakkan motor servo sesuai dengan nilai
yang ditetapkan pada setiap kasus.
6. VIDEO RANGKAIAN [Kembali]
7. ANALISA [Kembali]
8. LINK DOWNLOAD [Kembali]
HTML klik disini
Gambar Hardware klik disini
Gambar Simulasi klik disini
Video Demo klik disini
Listring Program klik disini
Tidak ada komentar:
Posting Komentar