Jumat, 22 Maret 2024

Tugas Pendahuluan 1 Modul 2






1. Prosedur
[Kembali]

    1. Rangkai semua komponen sesuai kondisi yang dipilih.

    2. Buat program di aplikasi arduino IDE.

    3. Setelah selesai masukkan program ke arduino di proteus.

    4. Jalankan program pada simulasi dan cobakan sesuai dengan modul dan kondisi.

    5. Selesai.

2. Hardware dan diagram blok [Kembali]

Hardware

1. Arduino Uno


2. Infrared Sensor


3. Driver Motor L293D


4. Max7219

5. Dot Matrix
6. Motor DC

Diagram Blok

3. Rangkaian simulasi dan prinsip kerja [Kembali]

Rangkaian percobaan sebelum disimulasi


Rangkaian percobaan setelah disimulasi


Prinsip Kerja

Prinsip kerja rangkaian yaitu, ketika diberi logika high pada sensor infrared maka ia akan memberi daya ke driver motor L293D sehingga akan ada input yang dihasilkan pada driver motor tersebut. kemudian karena inputan pada motor driver ada maka akan ada pula output yang dihasilkan yaitu berupa motor. pada dot matrix dihubungkan ke arduino sesuai pin-pin nya agar dot matrixnya dapat hidup. Jika dipswitch 1 dan 3 dihidupkan maka motor akan bergerak ke kiri dan pada dot matriks akan menampilkan panah sebelah kiri juga . Jika dipswitch 2 dan 4 dihidupkan maka motor akan bergerak ke kanan dan dot matrix akan menampilkan panah ke kanan. Apabila tidak ada kondisi diantara 2 kondisi diatas maka motor akan diam dan dot matrix akan menampilkan tanda silang.


4. Flowchart dan listing program [Kembali]

Flowchart



Listing Program

#include <LedControl.h> // Mengimpor pustaka LedControl untuk mengontrol modul MAX7219 yang terhubung dengan dot matrix LED.

// Inisialisasi objek LedControl dengan pin DIN, CLK, LOAD (CS) yang terhubung ke Arduino.
LedControl lc = LedControl(5,6,7,1);

// Array untuk menyimpan pola LED yang akan ditampilkan.
byte patterns[8] = {0, 0, 0, 0, 0, 0, 0, 0};

// 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() {
  // Konfigurasi modul dot matrix.
  lc.shutdown(0, false); // Mengaktifkan modul
  lc.setIntensity(0, 8); // Mengatur kecerahan (0-15)
  lc.clearDisplay(0); // Membersihkan tampilan
  
  // Mengatur pin-pin sebagai input atau output.
  pinMode(enable, OUTPUT);
  pinMode(in1, INPUT);
  pinMode(in2, INPUT);
  pinMode(in3, INPUT);
  pinMode(in4, INPUT);
  pinMode(infrared, INPUT);
  pinMode(motor1Pin1, OUTPUT);
  pinMode(motor1Pin2, OUTPUT);

  // Memulai komunikasi serial.
  Serial.begin(9600);
}

void loop() {
  // Membaca nilai dari sensor infrared.
  int infrarednya = digitalRead(infrared);
  
  // Mengendalikan arah motor berdasarkan nilai dipswitch.
  if(infrarednya == HIGH) {
    digitalWrite(enable, HIGH); // Mengaktifkan motor jika sensor infrared aktif.
    
    // Mengecek kondisi dipswitch dan mengatur arah motor serta menampilkan pola pada dot matrix sesuai kondisi.
    if (digitalRead(in1) == HIGH && digitalRead(in2) == LOW && digitalRead(in3) == HIGH  && digitalRead(in4) == LOW) {
      // Jika dipswitch menunjuk ke kiri.
      digitalWrite(motor1Pin1, LOW); // Mengatur output motor untuk bergerak ke kiri.
      digitalWrite(motor1Pin2, HIGH);
      displayArrowLeft(); // Menampilkan panah ke kiri di dot matrix.
    } 
    else if (digitalRead(in1) == LOW && digitalRead(in2) == HIGH && digitalRead(in3) == LOW  && digitalRead(in4) == HIGH) {
      // Jika dipswitch menunjuk ke kanan.
      digitalWrite(motor1Pin1, HIGH); // Mengatur output motor untuk bergerak ke kanan.
      digitalWrite(motor1Pin2, LOW);
      displayArrowRight(); // Menampilkan panah ke kanan di dot matrix.
    } 
    else {
      // Jika tidak ada pergerakan dipswitch, motor berhenti.
      digitalWrite(motor1Pin1, LOW);
      digitalWrite(motor1Pin2, LOW);
      displayLetterX(); // Menampilkan huruf "X" di dot matrix.
    }
  } 
  else {
    digitalWrite(enable, LOW); // Menonaktifkan motor jika sensor infrared tidak aktif.
  }
}

// Fungsi untuk menampilkan pola pada dot matrix.
void displayArrow(byte pattern) {
  // Menetapkan pola pada setiap baris dot matrix.
  for (int row = 0; row < 8; row++) {
    lc.setRow(0, row, pattern);
  }
  delay(500); // Mengatur kecepatan animasi
  lc.clearDisplay(0); // Membersihkan tampilan setelah menampilkan pola.
  delay(500); // Jeda sebelum membaca input lagi.
}

// Menampilkan panah ke kanan di dot matrix.
void displayArrowRight() {
  byte arrowRight[8] = {
    B00011000,
    B00001100,
    B00000110,
    B11111111,
    B11111111,
    B00000110,
    B00001100,
    B00011000
  };
  // Menetapkan pola panah ke kanan pada setiap baris dot matrix.
  for (int row = 0; row < 8; row++) {
    lc.setRow(0, row, arrowRight[row]);
  }
}

// Menampilkan panah ke kiri di dot matrix.
void displayArrowLeft() {
  byte arrowLeft[8] = {
    B00011000,
    B00110000,
    B01100000,
    B11111111,
    B01100000,
    B00110000,
    B00011000,
    B00000000
  };
  // Menetapkan pola panah ke kiri pada setiap baris dot matrix.
  for (int row = 0; row < 8; row++) {
    lc.setRow(0, row, arrowLeft[row]);
  }
}

// Menampilkan huruf "X" di dot matrix.
void displayLetterX() {
  byte letterX[8] = {
    B10000001,
    B01000010,
    B00100100,
    B00011000,
    B00011000,
    B00100100,
    B01000010,
    B10000001
  };
  // Menetapkan pola huruf "X" pada setiap baris dot matrix.
  for (int row = 0; row < 8; row++) {
    lc.setRow(0, row, letterX[row]);
  }
}

5. Kondisi [Kembali]

Percobaan 5 kondisi 3 : Semua Switch pull-down, switch 1 dan 3 motor ke kiri, switch 2 dan 4 panah ke kanan dan motor  ke kanan

6. Video simulasi [Kembali]


7. Link Download [Kembali]
Download HTML klik disini
Download Simulasi Rangkaian klik disini
Download Video Praktikum klik disini
Download Listing Program klik disini
Download Library Arduino Uno klik disini
Download Library Infrared Sensor klik disini
Donwload Datasheet Arduino Uno klik disini
Donwload Datasheet L293D klik disini
Donwload Datasheet Max7219 klik disini
Donwload Datasheet Dot Matrix klik disini
Donwload Datasheet Infrared Sensor klik disini


0 komentar:

Posting Komentar