Tugas Pendahuluan 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. Sensor Infrared






    3. Motor DC



    4.  Dip Switch 8



    5. Dot Matrix


    6. MAX7219



    7. L293D



    8. Power supply

    9. Ground


Diagram Blok:











Gambar 1. Rangkaian Simulasi.

Prinsip Kerja:

   Pada saat sensor infrared aktif, maka arduino uno akan menerima input dari dip switch. Saat input dipswitch bernilai pull up di switch 1, 2, dan 4 maka output yang didapat adalah motor DC berputar ke arah kanan, sedangkan dot matriks akan aktif dan menyalakan led pada tiap dot yang membentuk panah ke arah kiri. Sedangkan saat input dipswitch pull up di switch ke 1, 2, dan 3 maka output yang akan dikeluarkan adalah motor DC berputar ke arah kiri dan dot matriks menunjukkan tanda panah 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

᭒ HTML↠ klik disini
᭒ Rangkaian Simulasi ↠ klik disini
᭒ Gambar Simulasi ↠ klik disini
᭒ Video Simulasi ↠ klik disini
᭒ Listing Program ↠ klik disini

No comments:

Post a Comment

Periodic Relationships Among The Elements

  BAHAN PRESENTASI MATA KULIAH KIMIA 1  2020 OLEH M.Sean Mahogra Radi 2010952044 DOSEN PENGAMPU Dr.Darwison,MT Referensi: Chang, R. and Gold...