Sabtu, 23 Maret 2024

TUGAS PENDAHULUAN 1




Tugas Pendahuluan 1 Modul 2
(Percobaan 2 Kondisi 6)

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.
5. Selesai.

2. Hardware dan Diagram Blok [Kembali]

Hardware :

1. Arduino Uno






2. Power Supply


3. LCD





4. Motor DC



5. LED



6. Dip Switch





7. Resistor


8. Potensiometer


9. PCF8574






10. L293D


11. Baterai











Diagram Blok  :




3. Rangkaian Simulasi dan Prinsip Kerja [Kembali]

Rangkaian Simulasi Sebelum dirunning:





Rangkaian Simulasi Setelah dirunning:








Prinsip Kerja : 
Pada percobaan ini, kita menggunakan dip switch sebagai inputan. Sedangkan yang berfungsi sebagai keluaran atau output adalah LCD, motor DC, dan LED. Percobaan ini dilakukan untuk mengontrol sebuah motor dengan menggunakan Arduino. Motor dapat berputar ke kanan dan ke kiri sesuai dengan kondisi switch yang terhubung ke pin 2 (DIPSW_2_PIN). Program ini juga menggunakan dua LED (LED_PIN_1 dan LED_PIN_2) untuk memberikan indikasi visual. Saat switch aktif (dipsw_2_state bernilai true), motor akan berhenti selama 3 detik, kemudian berputar ke arah yang berlawanan selama 5 detik, dan akhirnya berhenti lagi selama 7 detik sebelum kembali ke arah awal. LCD menampilkan sebuah counter yang mengurangi nilai dari 50 ke 0 setiap detiknya.

Pada bagian setup(), pin-pin yang terhubung ke motor, switch, dan LED diatur sesuai dengan kebutuhan. Kemudian, interrupt dipasang untuk memantau perubahan pada switch (DIPSW_2_PIN). Ketika interrupt terpanggil (dipsw2Interrupt()), status switch dibaca dan nilai counter direset ke 50, sementara motor dihentikan selama 3 detik dengan kedua LED menyala. Selanjutnya, di dalam loop() program, counter akan dikurangi setiap detik dan jika switch aktif, motor akan menjalani proses yang telah dijelaskan di atas.

4. Flowchart dan Listing Program [Kembali]

Flowchart :

Flowchart di modul:



Flowchart sesuai kondisi:



Listing Program :

#include <Wire.h>
#include <LiquidCrystal_PCF8574.h>

// Inisialisasi pin
const int MOTOR_OUT1_PIN = 12; // Pin untuk kontrol motor (output 1)
const int MOTOR_OUT2_PIN = 13; // Pin untuk kontrol motor (output 2)
const int DIPSW_2_PIN = 2;
const int LED_PIN_1 = 3; // Pin untuk LED 1
const int LED_PIN_2 = 4; // Pin untuk LED 2

// Inisialisasi objek LCD
LiquidCrystal_PCF8574 lcd(0x27); // Alamat PCF8574

// Variabel global
volatile bool dipsw_2_state = false; // Volatile digunakan untuk variable yang bisa diakses secara asinkron oleh interrupt
int counting = 50; // Inisialisasi counting awal

void setup() {
  // Inisialisasi pin mode
  pinMode(MOTOR_OUT1_PIN, OUTPUT); // Mengatur pin motor sebagai output
  pinMode(MOTOR_OUT2_PIN, OUTPUT); // Mengatur pin motor sebagai output
  pinMode(DIPSW_2_PIN, INPUT); // Dipsw_2 menggunakan pull-down resistor
  pinMode(LED_PIN_1, OUTPUT); // Mengatur pin LED 1 sebagai output
  pinMode(LED_PIN_2, OUTPUT); // Mengatur pin LED 2 sebagai output
  
  // Inisialisasi LCD
  lcd.begin(16, 2);
  
  // Attach interrupt untuk Dipsw_2
  attachInterrupt(digitalPinToInterrupt(DIPSW_2_PIN), dipsw2Interrupt, CHANGE);
  
  // Memulai motor berputar ke kanan
  digitalWrite(MOTOR_OUT1_PIN, HIGH);
  digitalWrite(MOTOR_OUT2_PIN, LOW);
}

void loop() {
  // Tampilkan counting dari 50 sampai 0 di LCD
  for (counting; counting >= 0; counting--) {
    lcd.setCursor(0, 0);
    lcd.print("Counting: ");
    lcd.print(counting);
    delay(1000); // Delay 1 detik
    
    // Cek status Dipsw_2 setiap detik
    if (dipsw_2_state) {
      // Berhenti motor selama 3 detik jika Dipsw_2 aktif
      digitalWrite(MOTOR_OUT1_PIN, HIGH);
      digitalWrite(MOTOR_OUT2_PIN, LOW);
      digitalWrite(LED_PIN_1, HIGH); // Hidupkan LED 1
      digitalWrite(LED_PIN_2, HIGH); // Hidupkan LED 2
      delay(3000); // Delay 3 detik
      
      // Menghidupkan kembali motor berputar ke kiri setelah 3 detik
      digitalWrite(MOTOR_OUT1_PIN, LOW);
      digitalWrite(MOTOR_OUT2_PIN, HIGH);
      digitalWrite(LED_PIN_1, LOW); // Matikan LED 1
      digitalWrite(LED_PIN_2, LOW); // Matikan LED 2
      delay(5000); // Delay 5 detik
      
      // Menghentikan motor selama 7 detik setelah berputar ke kiri
      digitalWrite(MOTOR_OUT1_PIN, LOW);
      digitalWrite(MOTOR_OUT2_PIN, LOW);
      delay(7000); // Delay 7 detik
      
      // Menghidupkan kembali motor berputar ke kanan setelah 7 detik
      digitalWrite(MOTOR_OUT1_PIN, HIGH);
      digitalWrite(MOTOR_OUT2_PIN, LOW);
      
      // Reset counting ke 50
      counting = 50;
    }
  }
}

// Fungsi interrupt untuk Dipsw_2
void dipsw2Interrupt() {
  // Membaca status Dipsw_2
  dipsw_2_state = digitalRead(DIPSW_2_PIN);
  // Setelah interrupt, reset counting ke 50 dan hentikan motor selama 3 detik
  counting = 50;
  digitalWrite(MOTOR_OUT1_PIN, LOW);
  digitalWrite(MOTOR_OUT2_PIN, LOW);
  digitalWrite(LED_PIN_1, HIGH); // Hidupkan LED 1
  digitalWrite(LED_PIN_2, HIGH); // Hidupkan LED 2
  delay(3000); // Delay 3 detik
}

5. Kondisi [Kembali]

Percobaan 2 Kondisi 6
Motor ke kanan 5 detik lalu mati 3 detik berputar ke kiri 5 detik dan mati 7 detik LCD menampilkan counting dari 50 sampai 0, interrupt maka counting diulang dari 50 dan motor DC berhenti 3 detik dan 2 led hidup setiap kali dilakukan interrupt.

6. Video Simulasi [Kembali]




7. Download File [Kembali]

HTML Download
File Rangkaian Download
Video Percobaan Download
Listing Program Download
Datasheet Arduino Download
Datasheet LCD 16X2 Download
Datasheet Motor DC Download
Datasheet L293D Download
Datasheet PCF8574  Download
Datasheet LED Download
Datahseet resistor Download
Datasheet Dipswitch Download
Datasheet baterai Download
Datasheet Potensiometer Download






Tidak ada komentar:

Posting Komentar

Entri yang Diunggulkan

TUGAS BESAR PRAKTIKUM UP & UC (MODUL 4)

  [KEMBALI KE MENU SEBELUMNYA] DAFTAR ISI 1. Pendahuluan 2. Tujuan 3. Alat dan Bahan 4. Dasar Teori 5. Percobaan Percob...