Percobaan V
Kontrol Putaran Motor DC
1. Foto Hardware dan Diagram Blok [Kembali]
5. L293D
6. Motor DC
7. Potensiometer
Diagram Blok:
2. Prosedur Percobaan [Kembali]
- Rangkailah seperti rangkaian berikut.
- Buka Arduino IDE dan masukan listing program.
- Upload program ke arduino.
- Variasikan suhu dan logika sensor infrared dan amati keluarannya pada motor dan dotmatriks.
Prinsip Kerja
Pada percobaan ini kita diberikan rangkaian alata yang telah dirangkai dimana disini menggunakan infrared sensor sebagai interupt dan adanya penggunaan potensio untuk mengatur arah dari gerak motor yang kita gunakan dan arah pada motor akan dilihatkan pada dot matriks lalu kita buat program pada arduino uno agar didapatkan hasil sesuai dengan kondisi kita inginkan.
4. Flowchart dan Listing Program [Kembali]
Listing Program:
#include <LedControl.h>
// Inisialisasi modul MAX7219
LedControl lc = LedControl(5,6,7,1); // Pin DIN, CLK, LOAD (CS) dihubungkan ke Arduino
byte patterns[8] = {0, 0, 0, 0, 0, 0, 0, 0}; // Pola LED untuk ditampilkan
// Pengaturan pin untuk dipswitch dan motor
const int LM35 = A0;
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);
Serial.begin(9600);
}
void loop() {
// Membaca nilai dari lm35
float suhu = analogRead(LM35);
Serial.println(suhu);
// Membaca nilai dari infrared
int infrarednya = digitalRead(infrared);
// Mengendalikan arah motor berdasarkan nilai dipswitch
if(infrarednya == HIGH){
digitalWrite(enable, HIGH);
if (suhu < 62) {
// Maju
digitalWrite(motor1Pin1, HIGH);
digitalWrite(motor1Pin2, LOW);
displayArrowRight();
}
else if (suhu > 82) {
// Mundur
digitalWrite(motor1Pin1, LOW);
digitalWrite(motor1Pin2, HIGH);
displayArrowLeft();
}
else {
// Berhenti
digitalWrite(motor1Pin1, LOW);
digitalWrite(motor1Pin2, LOW);
displayLetterX();
}
}
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);
}
delay(500); // Mengatur kecepatan animasi
lc.clearDisplay(0);
delay(500); // Jeda sebelum membaca input lagi
}
// 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 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 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]);
}
}
Ketika infrared mendeteksi sesuatu maka akan mengaktifkan driver motor yang membuat motor dapat diberikan logika pada driver, ketika potensio < 30 maka motor akan berputar kearah kanan dan ketika potensio > 40 maka motor akan berputar kearah kiri dan ketika suhunya diantara 30 - 40 maka akan mematikan motor.
- HTML↠ klik disini
- Video Percobaan↠ klik disini
Tidak ada komentar:
Posting Komentar