TUGAS PENDAHULUAN 1 (MODUL II PWM, ADC, dan Interrupt)



MODUL II 
PWM, ADC, dan Interrupt


    • Rangkailah seperti rangkaian berikut 
    • Buka Arduino IDE dan masukan listing program Upload program ke arduino 
    • Variasikan tombol yang ditekan dan amati keluarannya pada LCD











Prinsip Kerja
Rangkaian ini berfungsi sebagai berikut:
Inisialisasi Modul MAX7219:
Menggunakan library LedControl.h untuk mengontrol modul dot matrix LED berbasis MAX7219.
Membuat objek lc dari kelas LedControl dengan menghubungkan pin-pins (DIN, CLK, LOAD) ke Arduino.
Mendefinisikan pin-pins yang digunakan untuk switch, motor, sensor infrared, dan pin kontrol lainnya.
Variabel patterns digunakan untuk menyimpan pola LED yang akan ditampilkan.
Di dalam fungsi setup(), modul dot matrix diaktifkan (lc.shutdown(0, false)), kecerahan layar diatur (lc.setIntensity(0, 8)), dan layar dikosongkan (lc.clearDisplay(0)).
Pin-pin yang terhubung ke motor dan sensor diatur sebagai input atau output.

Di dalam fungsi loop(), nilai dari sensor infrared dibaca untuk menentukan tindakan selanjutnya.
Jika sensor infrared terdeteksi (HIGH), motor akan diaktifkan berdasarkan nilai dari switch.
Jika switch 1 dan 3 aktif maka menunjukkan mundur, motor akan berputar mundur.
Jika switch 2 dan 4 aktif maka menunjukkan maju, motor akan berputar maju dan menampilkan panah ke kanan di dot matrix.
Jika tidak ada input dari switch atau input tidak sesuai maka , motor berhenti dan layar dot matrix dikosongkan.
Jika sensor infrared tidak terdeteksi (LOW), motor dimatikan dan layar dot matrix dikosongkan.
    


Flowchart





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 in1 = A0;
const int in2 = A1;
const int in3 = A2;
const int in4 = A3;
const int infrared = A4;
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(in1, INPUT);
  pinMode(in2, INPUT);
  pinMode(in3, INPUT);
  pinMode(in4, INPUT);
  pinMode(infrared, INPUT);
  pinMode(motor1Pin1, OUTPUT);
  pinMode(motor1Pin2, OUTPUT);
  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(in1) == HIGH && digitalRead(in3) == HIGH && digitalRead(in2) == LOW && digitalRead(in4) == LOW) {
      // Mundur
      digitalWrite(motor1Pin1, LOW);
      digitalWrite(motor1Pin2, HIGH);
      //displayArrowLeft();
    } 
    else if (digitalRead(in2) == HIGH && digitalRead(in4) == HIGH && digitalRead(in1) == LOW && digitalRead(in3) == LOW) {
      // Maju
      digitalWrite(motor1Pin1, HIGH);
      digitalWrite(motor1Pin2, LOW);
      displayArrowRight();
    } 
    else {
      // Berhenti
      digitalWrite(motor1Pin1, LOW);
      digitalWrite(motor1Pin2, LOW);
      //displayLetterX();
      lc.clearDisplay(0); // Membersihkan tampilan
    }
  } 
  else {
    digitalWrite(enable, LOW);
    lc.clearDisplay(0); // Membersihkan tampilan 
  }
}

// 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,
    B11111111,
    B00000110,
    B00001100,
    B00011000};
  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]);
  }
}


Saat Praktikum

    P5K3 (Semua Switch pull-down, switch 1 dan 3 motor ke kiri, switch 2 dan 4 panah ke kanan dan motor  ke kanan)








File HTML klik disini
Rangkaian Simulasi Proteus klik disini
File Video Rangkaian klik disini
File Arduino klik disini
Datasheet Komponen klik disini
 






Tidak ada komentar:

Posting Komentar