Tugas Pendahuluan 2 Modul 2



Percobaan V

Kontrol Putaran motor DC 

1. Prosedur
[Kembali]
  • Rangkailah seperti rangkaian berikut
  • Buka Arduino IDE dan masukan listing program
  • Upload program ke arduino
  • Kombinasikan dipswitch dan amati hasil
2. Hardware dan Diagram Blok [Kembali]
  1. Arduino Uno

    2. LCD 2x16


    3. Switch


    4. Power supply

    5. Ground


Diagram Blok:
 1. Arduino Uno

    2. Sensor Infrared






    3. Motor DC



    4.  Dip Switch 8



    5. Dot Matrix


    6. MAX7219



    7. L293D



    8. Power supply

    9. Ground


Diagram Blok:







3. Rangkaian Simulasi dan Prinsip Kerja [Kembali]





Gambar 1. Rangkaian Simulasi.

Prinsip Kerja:

   Ketika sensor infrared aktif, Arduino Uno akan menerima input dari Dip Switch. Jika nilai input Dip Switch di switch 1, 2, dan 4 adalah pull up, maka output yang dihasilkan adalah motor DC yang berputar ke arah kanan. Sementara itu, dot matrix akan aktif dan menyalakan LED pada setiap titik yang membentuk panah mengarah ke kiri. Di sisi lain, jika nilai input Dip Switch di switch 1, 2, dan 3 adalah pull up, output yang dihasilkan adalah motor DC yang berputar ke arah kiri, sementara dot matrix menunjukkan tanda panah mengarah ke kanan.
4. Flowchart dan Listing Program [Kembali]
Flowchart:








Listing Program:



#include <LedControl.h>

// Inisialisasi modul MAX7219
LedControl lc = LedControl(9, 10, 11); // Pin DIN, CLK, LOAD (CS) dihubungkan ke Arduino

// Inisialisasi servo motor
Servo servoMotor;

// Pengaturan pin untuk dipswitch dan motor
const int switch1 = A0;
const int switch2 = A1;
const int switch3 = A2;
const int switch4 = A3;
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);
  
  // Mengatur pin-pin sebagai input dengan pull-up untuk dipswitch
  pinMode(switch1, INPUT_PULLUP);
  pinMode(switch2, INPUT_PULLUP);
  pinMode(switch3, INPUT_PULLUP);
  pinMode(switch4, INPUT_PULLUP);
  
  // Attach servo motor ke pin 5
  servoMotor.attach(5);
  
  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(switch1) == LOW && digitalRead(switch2) == LOW && digitalRead(switch4) == LOW) {
      // Motor ke kanan
      digitalWrite(motor1Pin1, HIGH);
      digitalWrite(motor1Pin2, LOW);
      displayArrowLeft(); // Panah ke kiri
    } 
    else if (digitalRead(switch1) == LOW && digitalRead(switch2) == LOW && digitalRead(switch3) == LOW) {
      // Motor ke kiri
      digitalWrite(motor1Pin1, LOW);
      digitalWrite(motor1Pin2, HIGH);
      displayArrowRight(); // Panah ke kanan
    } 
    else {
      // Berhenti
      digitalWrite(motor1Pin1, LOW);
      digitalWrite(motor1Pin2, LOW);
      displayLetterX(); // Tidak ada panah
    }
  } 
  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);
  }
}

// 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 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 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. Kondisi [Kembali]
Semua switch pull up, switch 1, 2, 4 motor ke kanan dan panah ke kiri, switch 1, 2, 3 motor kekiri dan panah ke kanan
6. Video Simulasi [Kembali]



7. Download File [Kembali]
᭒ HTML↠ klik disini
᭒ Rangkaian Simulasi ↠ klik disini
᭒ Gambar Simulasi ↠ klik disini
᭒ Video Simulasi ↠ klik disini
᭒ Listing Program ↠ klik disini

UTS 3

[KEMBALI KE MENU SEBELUMNYA] DAFTAR ISI 1. Tujuan 2. Alat dan Bahan 3. Dasar Teori 4. Percobaan 5. Video 6. Download File...