Jumat, 22 Maret 2024

Tugas Pendahuluan 1


Percobaan 1 Kondisi 1

Sensor LDR dengan LCD

1. Prosedur [Kembali]

  • Rangkai semua komponen 
  • Buat program di aplikasi arduino IDE
  • Setelah selesai masukkan program ke arduino 
  • Jalankan program pada simulasi dan cobakan sesuai kondisi
  • Rangkaian
 
  • Prinsip Kerja
Pada percobaan 1 kondisi 1, komponen utama dari rangkaiannya adalah sensor LDR, dipswitch, LCD dan motor. Sensor LDR dan dipswitch akan digunakan sebagai input, sementara LCD dan motor akan digunakan sebagai output.
 
Sinyal input yang diberikan oleh LDR dan dipswitch akan masuk ke mikrokontroler yang digunakan, yaitu arduino uno. Kemudian, pada mikrokontroler sinyal input akan diproses sesuai instruksi atau perintah program, sehingga LCD dan motor dapat menampilkan outputnya.

Program yang digunakan tertera pada bagian 3 (Flowchat dan Listing Program) beserta penjelasan berupa komentar pada bagian-bagian program.

  • Flowchart
 
  • Listing Program

#include <LiquidCrystal.h>

LiquidCrystal lcd(13, 12, 11, 10, 9, 8); // Inisialisasi objek LCD dengan pin 13, 12, 11, 10, 9, 8
int sw1 = 2; // Pin switch 1
int sws[] = {2, 3, 4, 5}; // Array pin untuk switch
int numsw = 3; // Jumlah switch yang digunakan
int front = A1; // Pin untuk kontrol motor ke depan
int back = A2; // Pin untuk kontrol motor ke belakang

void setup() {
  // Inisialisasi LCD dengan ukuran 16x2
  lcd.begin(16, 2);
 
  // Set pin-mode untuk switch 1 dan switch-switch lainnya
  pinMode(sw1, INPUT);
  for (int thesw = 0; thesw < numsw; thesw++) {
    pinMode(sws[thesw], INPUT);
  }
 
  // Set pin-mode untuk kontrol motor
  pinMode(front, OUTPUT);
  pinMode(back, OUTPUT);
 
  // Mulai komunikasi serial dengan baudrate 9600
  Serial.begin(9600);
}

void loop() {
  // Baca status switch 1
  int s1 = digitalRead(sw1);
 
  // Baca nilai sensor LDR
  int ldr = analogRead(A0);
 
  // Cek apakah switch 1 aktif (HIGH)
  if (s1 == HIGH) {
    int activesw = 0;
   
    // Hitung jumlah switch yang aktif
    for (int thesw = 0; thesw < numsw; thesw++) {
      if (digitalRead(sws[thesw]) == HIGH) {
        activesw++;
      }
    }
   
    // Tampilkan jumlah switch aktif melalui Serial Monitor
    Serial.print("Jumlah switch : ");
    Serial.println(activesw);
    delay(200);
   
    // Berdasarkan jumlah switch yang aktif, lakukan aksi tertentu
    switch (activesw) {
      case 0:
        // Jika tidak ada switch yang aktif, tampilkan nilai sensor LDR pada LCD
        lcd.clear();
        lcd.setCursor(0, 0);
        lcd.print(ldr);
        lcd.setCursor(0, 1);
        lcd.print("Nilai LDR");
        delay(200);
        break;

      case 1:
        // Jika hanya satu switch yang aktif, tampilkan pesan untuk menjalankan motor pada LCD
        lcd.clear();
        lcd.setCursor(2, 0);
        lcd.print("Jalankan");
        lcd.setCursor(2, 1);
        lcd.print("Motor");
        digitalWrite(front, HIGH);
        digitalWrite(back, LOW);
        delay(200);
        break;

      case 2:
        // Jika dua switch aktif, tampilkan nilai sensor LDR dan kontrol motor sesuai kondisi
        lcd.clear();
        lcd.setCursor(0, 0);
        lcd.print("Nilai LDR : ");
        lcd.setCursor(13, 0);
        lcd.print(ldr);
        if (ldr < 500) {
          // Jika nilai LDR kurang dari 500, putar motor ke kanan
          lcd.setCursor(0, 1);
          lcd.print(" ");
          lcd.setCursor(0, 1);      
          lcd.print("Motor Kekanan");
          digitalWrite(front, HIGH);
          digitalWrite(back, LOW);
        } else {
          // Jika nilai LDR lebih dari atau sama dengan 500, putar motor ke kiri
          lcd.setCursor(0, 1);
          lcd.print(" ");
          lcd.setCursor(0, 1);
          lcd.print("Motor Kekiri");
          digitalWrite(front, LOW);
          digitalWrite(back, HIGH);
        }
        break;

      case 3:
        // Jika tiga switch aktif, kontrol motor menggunakan PWM
        int pwm = map(ldr, 0, 1023, 0, 255);
        digitalWrite(back, LOW);
        analogWrite(front, pwm);
        lcd.clear();
        lcd.setCursor(0, 0);
        lcd.print("PWM = ");
        lcd.print(pwm);
        lcd.setCursor(0, 1);
        lcd.print(" Control ???");
        delay(200);
        break;
    }
    delay(10);
  } else {
    // Jika switch 1 tidak aktif, bersihkan LCD dan tunggu
    lcd.clear();
    lcd.setCursor(0, 0);
    lcd.print(" ");
    lcd.setCursor(0, 1);
    lcd.print(" ");
    delay(100);
  }
}

4. Kondisi [Kembali]

Kondisi 1: Ketika ADC < 500 dan 2 switch aktif, motor berputar ke kanan dan muncul karakter pada kolom 1 LCD

Simulasi  klik disini
Gambar Simulasi  klik disini
Video Simulasi   klik disini
Listring Program  klik disini

Tidak ada komentar:

Posting Komentar

Entri yang Diunggulkan

Modul 4

[KEMBALI KE MENU SEBELUMNYA] DAFTAR ISI 1. Tujuan Perancangan 2. Komponen 3. Dasar Teori 4. Listing Program 5. Flowchart...