LAPORAN AKHIR MODUL 2 PERCOBAAN 5
Modul 2 PWM, ADC, dan Interrupt
- Buatlah rangkaian sesuai dengan kondisi yang telah dipilih
- Buat Program pada software Arduino IDE
- Masukkan program yang telah dibuat pada software Arduino IDE sebagai library Arduino
- Jalankan rangkaian, sesuai dengan kondisi yang diinginkan
- Lihat output pada motor DC dan Dot Matrix
a. Hardware
b. Diagram Blok
a. Rangkaian Simulasi
Pada rangkaian kali ini kita menggunakan potensio sebagai inputan dan lcd dot matrix serta motor dc sebagai outputannya. pada lcd dot matrix kita menggunakan motor driver MAX7219 dan motor driver L293D pada motor DC.
Ketika nilai adc yang terbaca pada potensio <=256 maka motor dc akan maju dan akan menampilkan panah ke kanan pada lcd dot matrix, dan ketika nilai adc yang terbaca pada potensio >=768 maka motor dc akan mundur dan menampilkan panah ke kiri pada lcd dot matrix, dan ketika selain kondisi yang disebutkan diatas maka motor dc akan berhentu dan menampilkan kondisi silang pada lcd dot matrix.
a. Flowchart
b. 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 potensio = 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 adc = analogRead(potensio);
Serial.println(adc);
// Membaca nilai dari infrared
int infrarednya = digitalRead(infrared);
// Mengendalikan arah motor berdasarkan nilai dipswitch
if(infrarednya == HIGH){
digitalWrite(enable, HIGH);
if (adc <= 256) {
// Maju
digitalWrite(motor1Pin1, HIGH);
digitalWrite(motor1Pin2, LOW);
displayArrowRight();
}
else if (adc >= 768) {
// 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]);
}
}
Semua switch pull down, ketika nilai adc yang terbaca pada potensio <=256 maka motor dc akan maju dan ketika nilai adc yang terbaca pada potensio >=768 maka motor dc akan mundur.
Download HTML klik disini
Download Program Arduino klik disini
Download Video Demo klik disini
Download Gambar Hardware klik disini
Download Gambar Simulasi klik disini
Download Datasheet Motor DC klik disini
Komentar
Posting Komentar