- Rangkai komponen sesuai percobaan dan kondisi yang dipilih
- Buat program menggunakan Arduino IDE.
- Transfer program yang telah dibuat ke Arduino yang ada di Proteus.
- Uji coba program di simulasi sesuai dengan kondisi yang diinginkan.
- Proses selesai setelah uji coba berhasil dilakukan
Program ini mengendalikan motor servo menggunakan keypad pada Arduino. Ketika tombol ditekan, program membaca karakter yang sesuai dan menggerakkan motor servo ke posisi tertentu berdasarkan karakter tersebut.
Program dimulai dengan inisialisasi motor servo dan keypad. Motor servo dihubungkan ke pin PWM pada Arduino (dalam kasus ini, pin 11) dan diberikan posisi awal 90 derajat menggunakan perintah servoMotor.write(90). Kemudian, keypad diatur untuk digunakan.
Selama program berjalan, Arduino terus memeriksa apakah ada tombol yang ditekan pada keypad. Setelah tombol ditekan, program menggunakan struktur switch-case untuk menentukan tindakan selanjutnya berdasarkan karakter tombol yang ditekan.
Setiap karakter tombol dipetakan langsung ke posisi sudut tertentu untuk motor servo. Perintah servoMotor.write() digunakan untuk menggerakkan motor servo ke sudut yang sesuai dengan karakter yang ditekan, sesuai dengan kondisi yang ditentukan yaitu keypad 1 hingga 9 memberikan PWM 255-0 dengan jarak PWM antar keynya 28.
Jika tombol yang ditekan tidak sesuai dengan yang diprogram, tidak ada tindakan yang diambil pada motor servo.
- Flowchart
- Listing Program
#include <LedControl.h> //Library untuk LED Dot Matrix
const int DIP_Pins[] = {13, 12, A0, A1, A2, A3, A4, A5}; // Pin DIP switch terhubung ke Arduino
LedControl lc = LedControl(2, 3, 4, 1); // Pin DIN, CLK, LOAD (CS), dan jumlah Dot Matrix yang dihubungkan ke Arduino
byte patterns[8] = {0, 0, 0, 0, 0, 0, 0, 0}; // Pola LED untuk ditampilkan
void setup() {
for (int i = 0; i < 8; i++) {
pinMode(DIP_Pins[i], INPUT_PULLUP); // Mengatur pin DIP switch sebagai input dengan pull-up resistor
}
lc.shutdown(0, false); // Mengaktifkan display
lc.setIntensity(0, 8); // Mengatur kecerahan LED (nilai antara 0 dan 15)
lc.clearDisplay(0); // Membersihkan tampilan dot matrix
}
void loop() {
// Menghitung jumlah switch yang aktif
int activeSwitches = 0;
for (int i = 0; i < 8; i++) {
if (digitalRead(DIP_Pins[i]) == LOW) {
activeSwitches++;
}
}
// Menampilkan huruf "123" jika 2 switch aktif
if (activeSwitches == 2) {
patterns[0] = B00000000;
patterns[1] = B10111011;
patterns[2] = B10001001;
patterns[3] = B10001001;
patterns[4] = B10111011;
patterns[5] = B10100001;
patterns[6] = B10100001;
patterns[7] = B10111011;
}
else {
// Menampilkan pola default jika tidak ada 3, 5, atau 7 switch yang aktif
for (int i = 0; i < 8; i++) {
patterns[i] = 0;
}
}
// Menampilkan pola LED pada dot matrix
for (int row = 0; row < 8; row++) {
lc.setRow(0, row, patterns[row]);
}
delay(100); // Delay untuk tampilan LED stabil
}
Percobaan 7 tanpa kondisi
HTML klik disini
Simulasi klik disini
Gambar Simulasi klik disini
x Video Simulasi klik disini
Listring Program klik disini
x Video Simulasi klik disini
Listring Program klik disini