Percobaan V
Kontrol Putaran
Motor
DC
1. Prosedur [Kembali]
- Rangkailah seperti rangkaian berikut
- Buka Arduino IDE dan masukan listing program
- Upload program ke arduino
- Jalankan dan amati keluarannya
2. Hardware dan Diagram Blok [Kembali]
1. Arduino Uno
2. DipSwitch
3. Motor DC
6. Power supply
7. Ground
Gambar 1. Rangkaian Simulasi. Prinsip Kerja: Pada saat sensor infrared aktif, maka arduino uno akan menerima input dari dip switch. Saat input dipswitch bernilai pull up di switch 1, 2, dan 4 maka output yang didapat adalah motor DC berputar ke arah kanan, sedangkan dot matriks akan aktif dan menyalakan led pada tiap dot yang membentuk panah ke arah kiri. Sedangkan saat input dipswitch pull up di switch ke 1, 2, dan 3 maka output yang akan dikeluarkan adalah motor DC berputar ke arah kiri dan dot matriks menunjukkan tanda panah ke kanan. |
4. Flowchart dan Listing Program [Kembali]
Flowchart:
Listing Program:
#include <LedControl.h>
// Inisialisasi modul MAX7219
LedControl lc = LedControl(9, 10, 11); // Pin DIN, CLK, LOAD (CS) dihubungkan ke Arduino
// Inisialisasi servo motor
Servo servoMotor;
// Pengaturan pin untuk dipswitch dan motor
const int switch1 = A0;
const int switch2 = A1;
const int switch3 = A2;
const int switch4 = A3;
const int infrared = 8;
const int enable = 4;
const int motor1Pin1 = 2;
const int motor1Pin2 = 3;
void setup() {
// Set up dot matrix module
lc.shutdown(0, false); // Mengaktifkan modul
lc.setIntensity(0, 8); // Mengatur kecerahan (0-15)
lc.clearDisplay(0); // Membersihkan tampilan
// Mengatur pin-pin sebagai output untuk motor
pinMode(enable, OUTPUT);
pinMode(infrared, INPUT);
pinMode(motor1Pin1, OUTPUT);
pinMode(motor1Pin2, OUTPUT);
// Mengatur pin-pin sebagai input dengan pull-up untuk dipswitch
pinMode(switch1, INPUT_PULLUP);
pinMode(switch2, INPUT_PULLUP);
pinMode(switch3, INPUT_PULLUP);
pinMode(switch4, INPUT_PULLUP);
// Attach servo motor ke pin 5
servoMotor.attach(5);
Serial.begin(9600);
}
void loop() {
// Membaca nilai dari infrared
int infrarednya = digitalRead(infrared);
// Mengendalikan arah motor berdasarkan nilai dipswitch
if (infrarednya == HIGH) {
digitalWrite(enable, HIGH);
if (digitalRead(switch1) == LOW && digitalRead(switch2) == LOW && digitalRead(switch4) == LOW) {
// Motor ke kanan
digitalWrite(motor1Pin1, HIGH);
digitalWrite(motor1Pin2, LOW);
displayArrowLeft(); // Panah ke kiri
}
else if (digitalRead(switch1) == LOW && digitalRead(switch2) == LOW && digitalRead(switch3) == LOW) {
// Motor ke kiri
digitalWrite(motor1Pin1, LOW);
digitalWrite(motor1Pin2, HIGH);
displayArrowRight(); // Panah ke kanan
}
else {
// Berhenti
digitalWrite(motor1Pin1, LOW);
digitalWrite(motor1Pin2, LOW);
displayLetterX(); // Tidak ada panah
}
}
else {
digitalWrite(enable, LOW);
}
}
// Fungsi untuk menampilkan panah pada dot matrix
void displayArrow(byte pattern) {
for (int row = 0; row < 8; row++) {
lc.setRow(0, row, pattern);
}
}
// Menampilkan panah ke kiri
void displayArrowLeft() {
byte arrowLeft[8] = {
B00011000,
B00110000,
B01100000,
B11111111,
B01100000,
B00110000,
B00011000,
B00000000
};
for (int row = 0; row < 8; row++) {
lc.setRow(0, row, arrowLeft[row]);
}
}
// Menampilkan panah ke kanan
void displayArrowRight() {
byte arrowRight[8] = {
B00011000,
B00001100,
B00000110,
B11111111,
B00000110,
B00001100,
B00011000,
B00000000
};
for (int row = 0; row < 8; row++) {
lc.setRow(0, row, arrowRight[row]);
}
}
// Menampilkan huruf "X"
void displayLetterX() {
byte letterX[8] = {
B10000001,
B01000010,
B00100100,
B00011000,
B00011000,
B00100100,
B01000010,
B10000001
};
for (int row = 0; row < 8; row++) {
lc.setRow(0, row, letterX[row]);
}
}
Semua switch pull up, switch 1, 2, 4 motor ke kanan dan panah ke kiri, switch 1, 2, 3 motor kekiri dan panah ke kanan
᭒ HTML↠ klik disini
᭒ Rangkaian Simulasi ↠ klik disini
᭒ Rangkaian Simulasi ↠ klik disini
᭒ Gambar Simulasi ↠ klik disini
᭒ Video Simulasi ↠ klik disini
᭒ Listing Program ↠ klik disini
᭒ Video Simulasi ↠ klik disini
᭒ Listing Program ↠ klik disini
Tidak ada komentar:
Posting Komentar