TP1 M2




Tugas Pendahuluan 1 Modul 1
(Percobaan 1 Kondisi 4)

1. Prosedur
[Kembali]

1. Rangkai rangkaian di proteus sesuai dengan kondisi percobaan.
2. Tulis program untuk arduino di software Arduino IDE.
3. Compile program tadi, lalu upload ke dalam arduino.
4. Setelah program selesai di upload, jalankan simulasi rangkaian pada proteus.

2. Hardware dan Diagram Blok [Kembali]

Hardware :

1. Arduino





Diagram Blok:



3. Rangkaian Simulasi dan Prinsip Kerja [Kembali]

Rangkaian Simulasi :





Prinsip Kerja :


 
4. Flowchart dan Listing Program [Kembali]

Flowchart :




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[] = {3, 4, 7}; // Tiga buah switch DIP
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 < 3; i++) { // Periksa 3 buah switch DIP
    pinMode(DIPSW_PIN[i], INPUT_PULLUP);
  }
 
  // Inisialisasi LCD
  lcd.begin(16, 2);
}

void loop() {
  // Baca nilai LDR
  int ldrValue = analogRead(LDR_PIN);
  lcd.setCursor(1,1);
  lcd.print(ldrValue);
  delay(100);
 
  // Cek kondisi ADC >= 200 & <= 600 dan 3 switch aktif
  if (ldrValue >= 200 && ldrValue <= 600 && checkSwitches()) {
    // Aktifkan motor berputar ke kanan
    digitalWrite(MOTOR_EN_PIN, HIGH);
    digitalWrite(MOTOR_OUT1_PIN, LOW); // Konfigurasi ini untuk putar kanan (sesuaikan dengan driver motor)
    digitalWrite(MOTOR_OUT2_PIN, LOW); // Konfigurasi ini untuk putar kanan (sesuaikan dengan driver motor)
   
    // Tampilkan karakter pada kolom 2 LCD
    lcd.setCursor(1, 0);
    lcd.print("Motor Kanan");
  } 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 (sesuaikan jika perlu)
}

// Fungsi untuk memeriksa apakah ketiga switch aktif
bool checkSwitches() {
  bool switch1_active = digitalRead(DIPSW_PIN[0]) == HIGH;
  bool switch2_active = digitalRead(DIPSW_PIN[1]) == HIGH;
  bool switch3_active = digitalRead(DIPSW_PIN[2]) == HIGH;

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

5. Kondisi [Kembali]

Percobaan 1 Kondisi 3
 Ketika ADC antara 200 dan 600 dan 3 switch aktif, motor berputar ke kanan 3 detik lalu mati dan muncul karakter pada kolom 1 LCD

6. Video Simulasi [Kembali]







7. Download File [Kembali]

File Rangkaian klik disini
Video Percobaan klik disini
Listing Program klik disini
Datasheet Arduino klik disini
Datasheet Button klik disini

0 komentar:

Posting Komentar