Kamis, 21 Maret 2024

Tugas Pendahuluan 1




Modul 2
PWM, ADC, dan Interrupt

1. Prosedur
[Kembali]

1. Rangkai semua komponen sesuai kondisi yang dipilih
2. buat program di aplikasi arduino IDE
3. setelah selesai masukkan program ke arduino di proteus
4.  jalankan program pada simulasi dan cobakan sesuai dengan modul dan kondisi
5. Selesai

2. Hardware dan diagram blok [Kembali]
      1. Arduino Uno

      2. motor

      3. LED

      4. Resistor
      5. Power Supply
      6. Ground
      7. LCD

      8. Dipswitch

Diagram Blok :


3. Rangkaian Simulasi dan Prinsip kerja [Kembali]

→ Gambar Rangkaian Sebelum Disimulasikan
                                    

→ Gambar Rangkaian Setelah Disimulasikan
                                        

PRINSIP KERJA
    saat program dijalankan dan masuk ke komponen arduino. Selanjutnya, program terus berjalan dalam loop utama, pada saat awal jalannya rangkaian maka akan terjadi proses counting pada LCD yang menampilkan counting dari 0 sampai dengan 50. saat proses counting mencapai nilai maksimal maka motor akan berputar, dimana arah putarannya itu ke kana selama 3 detik lalu berhenti selama 2 detik dan selanjutnya akan berputar ke kiri selama 3 detik dan berhenti selama 2 detik.
apabila dilakukan interrupt (falling dimana switch dari high ke low) maka proses pada loop utama yang sedang berjalan akan langsung dipindahkan ke void interrupt dimana pada bagian ini proses yang terjadi misal counting yang sedang berjalan akan kembali ke 0, motor yang sedang berputar akan berhenti dan LED yang tadinya mati akan hidup selama 4 detik. Saat proses interrupt selesai maka akan kembali ke loop awal

4. FlowChart [Kembali]

a. Listing Program 
#include <LiquidCrystal_I2C.h>

// Definisikan pin
const int motorPin1 = 5;    // Motor pin 1
const int motorPin2 = 6;    // Motor pin 2
const int ledPin = 13;      // Pin LED
const int switchPin = 2;    // Pin untuk switch
volatile int count = 0;     // Variabel untuk menghitung interrupt
bool lastStateWasLoop = true; // Variabel penanda kondisi terakhir

LiquidCrystal_I2C lcd(0x27, 20, 4); // Inisialisasi LCD

void setup() {
  pinMode(motorPin1, OUTPUT);
  pinMode(motorPin2, OUTPUT);
  pinMode(ledPin, OUTPUT);
  pinMode(switchPin, INPUT_PULLUP); // Mengatur switchPin sebagai input dengan pull-up resistor
 
  // Inisialisasi LCD
  lcd.init();
  lcd.backlight();
 
  // Attach interrupt
  attachInterrupt(digitalPinToInterrupt(switchPin), interruptHandler, FALLING);
}

void loop() {
  // Loop utama
  if (lastStateWasLoop) {
    for (int i = 0; i <= 50; i++) {
      lcd.setCursor(0, 0);
      lcd.print("Count: ");
      lcd.print(count);
      count += 1; // Menambahkan integer count dengan angka 1
      delay(200); // Tunda 200 ms
      if (count > 50) {
        count = 0;
      }
    }

    // Putar motor ke kanan selama 3 detik
    digitalWrite(motorPin1, HIGH);
    digitalWrite(motorPin2, LOW);
    delay(3000);
   
    // Berhenti selama 2 detik
    digitalWrite(motorPin1, LOW);
    digitalWrite(motorPin2, LOW);
    delay(2000);
   
    // Putar motor ke kiri selama 3 detik
    digitalWrite(motorPin1, LOW);
    digitalWrite(motorPin2, HIGH);
    delay(3000);
   
    // Berhenti selama 2 detik
    digitalWrite(motorPin1, LOW);
    digitalWrite(motorPin2, LOW);
    delay(2000);

    lcd.clear();
    lcd.setCursor(0, 0);
    lcd.print("Count: ");
    lcd.print(count);
    delay(2000);
   
    // Berhenti 4 detik setelah setiap putaran
    digitalWrite(ledPin, HIGH); // Nyalakan LED
    delay(4000);
    digitalWrite(ledPin, LOW); // Matikan LED
  }
}

void interruptHandler() {
  count = 0; // Reset count ke 0

  digitalWrite(motorPin1, LOW); // Mematikan motor
  digitalWrite(motorPin2, LOW); // Mematikan motor
  delay(4000); // Motor berhenti selama 4 detik

  digitalWrite(ledPin, HIGH);   // Menghidupkan LED
  delay(100); // Tunda 0.1 detik
  digitalWrite(ledPin, LOW);    // Mematikan LED
 
  lastStateWasLoop = true; // Mengatur variabel penanda
}

b. Flowchart

5. Kondisi [Kembali]
Kondisi  : Percobaan 2 Kondisi 5
        Motor ke kanan selama 3 detik lalu mati 2 detik ke kiri 3 detik dan mati 2 detik ,LCD menampilkan counting dari 0 sampai 50, interrupt counting diulang dari 0 dan motor DC berhenti 4 detik dan 1 led hidup setiap kali dilakukan interrupt

6. Video Simulasi [Kembali]

7. Download File [Kembali]
Download Simulasi Rangkaian Klik disini
Download HTML Klik disini
Download Video Simulasi Klik disini
Download Datasheet ARDUINO UNO klik disini

Tidak ada komentar:

Posting Komentar

Entri yang Diunggulkan

LAPORAN AKHIR DEMO PROJECT

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