TP 1

TUGAS PENDAHULUAN 1 (MODUL II PWM, ADC, DAN INTERRUPT)





1. Prosedur  [Kembali]

  • Rangkailah seperti rangkaian berikut 
  • Buka Arduino IDE dan masukan listing program Upload program ke arduino 
  • Variasikan tombol yang ditekan dan amati keluarannya pada Dotmatriks
2. Hardware dan Diagram Blok [Kembali]

a. Arduino

 


b. Motor DC


c. Driver Motor L293D
 d. Dot Matrix
f. Sensor Infrared




3. Rangkaian Simulasi dan Prinsip Kerja  [Kembali]





    Prinsip kerja dari rangkaian ini adalah, ketika Arduino menerima inputan sinyal digital dari     switch dan sesuai dengan program, maka Arduino akan menangkapnya sebagai sebuah     instruksi, yang mana akan meneruskan ke Dotmatriks. Lalu akan ditampilkan berupa tampilan panah yang sesuai dengan kode yang dibuat, juga motor bergerak.

Selanjutnya apabila switch 3 digeser maka motor dipaksa berhenti dan panah menghadap kanan.

4. Flowchart dan Listing Program [Kembali]

    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);
  lc.setIntensity(0, 8);
  lc.clearDisplay(0);

  // Mengatur pin-pin sebagai output untuk motor
  pinMode(enable, OUTPUT);
  pinMode(in1, INPUT_PULLUP); // Mengubah ke mode pull-up
  pinMode(in2, INPUT_PULLUP);
  pinMode(in3, INPUT_PULLUP);
  pinMode(in4, INPUT_PULLUP);
  pinMode(infrared, INPUT_PULLUP);
  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) == LOW && digitalRead(in2) == LOW && digitalRead(in4) == LOW) {
      // Kanan
      digitalWrite(motor1Pin1, HIGH);
      digitalWrite(motor1Pin2, LOW);
      displayArrowRight(); // Panggil fungsi displayArrowRight untuk menampilkan panah ke kanan
    } else if (digitalRead(in1) == LOW && digitalRead(in2) == LOW && digitalRead(in3) == LOW) {
      // Kiri
      digitalWrite(motor1Pin1, LOW);
      digitalWrite(motor1Pin2, HIGH);
      displayArrowLeft(); // Panggil fungsi displayArrowLeft untuk menampilkan panah ke kiri
    } else {
      // Berhenti
      digitalWrite(motor1Pin1, LOW);
      digitalWrite(motor1Pin2, LOW);
      displayLetterX(); // Panggil fungsi displayLetterX untuk menampilkan huruf "X"
    }
  } 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(300); // Mengatur kecepatan animasi
  lc.clearDisplay(0);
  delay(100); // Jeda sebelum membaca input lagi
}

// Menampilkan panah ke kanan
void displayArrowRight() {
  byte arrowRight[8] =
  {
    B00011000,
    B00011100,
    B00001110,
    B11111111,
    B11111111,
    B00001110,
    B00011100,
    B00011000
  };

  for (int row = 0; row < 8; row++) {
    lc.setRow(0, row, arrowRight[row]);
  }
}

// Menampilkan panah ke kiri
void displayArrowLeft() {
  byte arrowLeft[8] =
  {
    B00011000,
    B00111000,
    B01110000,
    B11111111,
    B11111111,
    B01110000,
    B00111000,
    B00011000
  };

  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]);
  }
}

5. Video Demo [Kembali]


Saat Praktikum

6. Kondisi [Kembali]


Semua swith pull-up, switch 1,2,4 motor ke kanan dan arah panah ke kiri ,switch 1,2,3 motor ke kiri dan arah ke kanan
7. Video Simulasi [Kembali]


 

8. Link Download [Kembali]
Download HTML [Klik di sini]
Download file rangkaian [Klik di sini]
Download video rangkaian [Klik di sini]
Download program Arduino [Klik di sini]
Download datasheet Arduino [Klik di sini]
Download datasheet Motor DC [Klik di sini]
Download datasheet IR [Klik di sini]










No comments:

Post a Comment

almajri

  Bahan Presentasi Ini Dibuat Untuk Memenuhi  Tugas Mata Kuliah Sistem Digital Dosen : Darwison, M.T Oleh : ALMAJRI KUSMAIDI 2110952003 Ju...