Jumat, 29 Maret 2024

Tugas Pendahuluan 1 (Percobaan 2 Kondisi 5)

Percobaan 2 Kondisi 5

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





2. Motor



3. LED



4. Resistor
               

5.  LCD



6. Dip Switch





Diagram Blok :




3. Rangkaian Simulasi dan Prinsip Kerja [Kembali]



Prinsip Kerja:

Buatlah program sesuai dengan kondisi yang dipilih yaitu "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 saat motor DC berhenti 4 detik dan 1 LED hidup setiap kali dilakukan interrupt". Kemudian program dimasukkan ke arduino. Pada percobaan ini menggunakan inputan dip switch yang terhubung ke kaki arduino sebagai input dan output dari percobaan ini adalah motor, LED, dan LCD. Setelah rangkaian pada proteus di run, maka dapat dilihat LCD nantinya akan menampilkan counting secara berurutan dari 0 sampai 50. Setelah counting mencapai 50, maka motor akan berputar ke kiri dahulu selama 3 detik kemudian berhenti 2 detik dan ke kanan 3 detik, lalu LED nantinya akan hidup.

Dan apabila dilakukan interrupt pada kondisi RISING, yaitu pada Dip Switch dari off ke on, maka LCD akan menampilkan counting dengan kelipatan 10, misal jika kita melakukan interrupt saat counting pada LCD menampilkan angka 10 maka setelah itu akan counting dengan kelipatan 10 yaitu 10,20 hingga 100 dan kemudian akan kembali ke 10. Selanjutnya selama beberapa detik, counting akan berhenti dan kemudian motor akan bergerak ke kanan 3 detik berhenti 2 detik lalu ke kiri 3 detik kemudian mati 4 detik, dan LED akan menyala/hidup. 


Flowchart :




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, RISING);
}

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(150); // Tunda 150 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(1500);
    
    // Berhenti 5 detik setelah setiap putaran
    digitalWrite(ledPin, HIGH); // Nyalakan LED
    delay(5000);
    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
}

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 saat motor DC berhenti 4 detik dan 1 LED hidup setiap kali dilakukan interrupt"



7. Download File [Kembali]

HTML                          klik disini
File Rangkaian             [klik disini]
Video Percobaan          klik disini
Listing Program           klik disini
datasheet arduino         klik disini
Datasheet LED            klik disini


Tidak ada komentar:

Posting Komentar

Modul 4

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