TP 1 M2

 



Percobaan II

PWM, ADC, dan Interrupt

1. Foto Hardware dan Diagram Blok [Kembali]

        1. Arduino Uno

        2. LDR


        3. LCD



        4. Resistor

        5. Power Supply


     6. Ground

    7. Potensiometer

    8. Dipswitch

    9. Driver Motor L293D



    10. Motor DC




Diagram Blok:







2. Prosedur Percobaan  [Kembali]

Rangkai semua komponen 
+ buat program di aplikasi arduino IDE
+ setelah selesai masukkan program ke arduino 
+ jalankan program pada simulasi dan cobakan dengan modul





Prinsip Kerja

Pada rangkaian ini menggunakan komponen antara lain yaitu Arduino Uno, Sensor LDR, resistor, LCD, driver motor dan motor DC.

Pada percobaan ini kita menggunakan semua komponen dengan prosedur yang diinginkan dan dengan output yang diinginkan dimana nanti ada beberapa kondisi yang seusai dengan perintah dari percobaan atau yang disuruh pada percobaan yang dipilih dimana,ketika Ketika ADC > 500 dan 2 switch aktif, motor berputar ke kiri dan muncul karakter pada kolom 2 LCD mikrokontroler. Mikrokontroler kemudian mengaktifkan pin output untuk menyalakan LCD dan menuliskan "Motor Kekiri". 




4. Flowchart dan Listing Program [Kembali]



Listing Program:
#include <LiquidCrystal.h>

// Inisialisasi pin
const int LDR_PIN = A0;
const int MOTOR_EN_PIN = A1;
const int MOTOR_OUT1_PIN = A2;
const int MOTOR_OUT2_PIN = A3;
const int DIPSW_PIN[] = {2, 3, 4, 5};
const int LCD_RS_PIN = 13;
const int LCD_EN_PIN = 12;
const int LCD_D4_PIN = 11;
const int LCD_D5_PIN = 10;
const int LCD_D6_PIN = 9;
const int LCD_D7_PIN = 8;

// Konfigurasi LCD
LiquidCrystal lcd(LCD_RS_PIN, LCD_EN_PIN, LCD_D4_PIN, LCD_D5_PIN, LCD_D6_PIN, LCD_D7_PIN);

void setup() {
  // Inisialisasi pin mode
  pinMode(LDR_PIN, INPUT);
  pinMode(MOTOR_EN_PIN, OUTPUT);
  pinMode(MOTOR_OUT1_PIN, OUTPUT);
  pinMode(MOTOR_OUT2_PIN, OUTPUT);
  for (int i = 0; i < 4; i++) {
    pinMode(DIPSW_PIN[i], INPUT_PULLUP);
  }
 
  // Inisialisasi LCD
  lcd.begin(16, 2);
}

void loop() {
  // Baca nilai LDR
  int ldrValue = analogRead(LDR_PIN);
 
  // Cek kondisi ADC > 500 dan 2 switch aktif
  if (ldrValue > 500 && checkSwitches()) {
    // Aktifkan motor berputar ke kiri
    digitalWrite(MOTOR_EN_PIN, HIGH);
    digitalWrite(MOTOR_OUT1_PIN, LOW);
    digitalWrite(MOTOR_OUT2_PIN, HIGH);
   
    // Tampilkan karakter pada kolom 2 LCD
    lcd.setCursor(0, 1);
    lcd.print("Motor kekiri");
  } else {
    // Matikan motor dan bersihkan LCD jika tidak memenuhi kondisi
    digitalWrite(MOTOR_EN_PIN, LOW);
    digitalWrite(MOTOR_OUT1_PIN, LOW);
    digitalWrite(MOTOR_OUT2_PIN, LOW);
    lcd.clear();
  }
 
  delay(100); // Delay untuk stabilitas
}

// Fungsi untuk memeriksa apakah dua switch aktif
bool checkSwitches() {
  bool switch1_active = digitalRead(DIPSW_PIN[0]) == LOW;
  bool switch2_active = digitalRead(DIPSW_PIN[1]) == LOW;

  // Mengembalikan nilai true hanya jika kedua switch diaktifkan
  return switch1_active && switch2_active;
}

5. Kondisi [Kembali]

    Percobaan 1 Kondisi 2 : " Ketika ADC > 500 dan 2 switch aktif, motor berputar ke kiri dan muncul karakter pada kolom 2 LCD"

᭒ HTML↠ klik disini
᭒ Aplikasi↠ klik disini
᭒ Video Percobaan↠ klik disini











Komentar

Postingan populer dari blog ini

MODUL 1

TUGAS BESAR

MODUL 1 Up & Uc