Tugas Pendahuluan 2




TUGAS PENDAHULUAN 2
Percobaan 2 Kondisi 1


1. Prosedur
 [Kembali]
    1. Rangkai semua komponen sesuai dengan kondisi yang dipilih
    2. Buat program di aplikasi aduino IDE
    3. Setelah selesai masukkan program ke arduino di proteus
    4. Jalankan program pada simulasi dan cobakan sesuai dengan modul dan kondisi

2. Hardware dan Diagram Blok [Kembali]

    1. Arduino Uno


    2. Dip Switch


    3. LED


    4. Resisor


    5. Power Supply


    6. Ground

    7. LCD

    8. Driver Motor L293D


    9. Motor

    10. Potensio Meter


    11. PCF8574


Diagram Blok:


3. Rangkaian Simulasi dan Prinsip Kerja [Kembali]

    A. Gambar rangkaian sebelum disimulasikan


    B. Gambar rangkaian setelah disimulasikan


    C. Prinsip Kerja
    Program akan memulai komunikasi dengan LCD dan menginisialisasi semua pin yang dibutuhkan, seperti pin untuk motor, switch, dan LED. Kemudian, program akan menunggu input dari switch yang terhubung ke pin 2. Switch ini berperan sebagai pemicu atau interrupt yang akan mereset hitungan saat ditekan.
    Saat program dimulai, motor akan langsung dinyalakan dan proses counting akan dimulai dari 0 hingga mencapai 100. Setiap penambahan angka dalam counting akan ditampilkan pada LCD. Selain itu, terdapat LED yang akan menyala sesuai dengan nilai counting tertentu. Misalnya, LED pertama akan menyala ketika counting mencapai 10 atau 60, LED kedua pada nilai 20 atau 70, dan seterusnya hingga LED kelima pada nilai 50 atau 100.
    Ketika switch ditekan (kondisi off), interrupt akan terjadi dan program akan mereset counting menjadi 0 serta mematikan semua LED. Hal ini memungkinkan pengguna untuk mengulang proses counting dari awal kapan pun diperlukan dengan hanya menekan switch tersebut. Setelah reset, program akan kembali memulai counting dari 0 dan motor tetap menyala selama proses counting berlangsung.

4. Flowchart [Kembali]

    A. Listing Program

#include <Wire.h>
#include <LiquidCrystal_I2C.h>

// Definisikan pin
const int motorPin1 = 12;    // Motor pin 1
const int switchPin = 2;    // Pin untuk switch
volatile int count = 0;     // Variabel untuk menghitung interrupt

// Pin untuk LED yang akan menyala sesuai dengan counting
const int ledPin1 = 13;    // Pin LED 1
const int ledPin2 = 11;    // Pin LED 2
const int ledPin3 = 10;    // Pin LED 3
const int ledPin4 = 9;     // Pin LED 4
const int ledPin5 = 8;     // Pin LED 5

LiquidCrystal_I2C lcd(0x27, 16, 2); // Inisialisasi LCD 16x2 dengan PCF8574

void setup() {
  Wire.begin(); // Mulai komunikasi I2C
  lcd.begin(16, 2); // Inisialisasi LCD dengan 16 kolom dan 2 baris
  
  pinMode(motorPin1, OUTPUT);
  pinMode(ledPin1, OUTPUT);
  pinMode(ledPin2, OUTPUT);
  pinMode(ledPin3, OUTPUT);
  pinMode(ledPin4, OUTPUT);
  pinMode(ledPin5, OUTPUT);
  pinMode(switchPin, INPUT_PULLUP); // Mengatur switchPin sebagai input dengan pull-up resistor internal

  // Attach interrupt
  attachInterrupt(digitalPinToInterrupt(switchPin), interruptHandler, RISING);
}

void loop() {
  digitalWrite(motorPin1, HIGH); // Motor tetap menyala saat perhitungan 0-100
  while (count <= 100) {
    lcd.setCursor(0, 0);
    lcd.print("Count: ");
    lcd.print(count);
    count += 1; // Menambahkan integer count dengan angka 1
    delay(200); // Tunda 200 ms
    
    // Menyalakan LED sesuai dengan nilai count
    switch (count) {
      case 10:
      case 60:
        digitalWrite(ledPin1, HIGH);
        digitalWrite(ledPin2, LOW);
        digitalWrite(ledPin3, LOW);
        digitalWrite(ledPin4, LOW);
        digitalWrite(ledPin5, LOW);
        break;
      case 20:
      case 70:
        digitalWrite(ledPin1, LOW);
        digitalWrite(ledPin2, HIGH);
        digitalWrite(ledPin3, LOW);
        digitalWrite(ledPin4, LOW);
        digitalWrite(ledPin5, LOW);
        break;
      case 30:
      case 80:
        digitalWrite(ledPin1, LOW);
        digitalWrite(ledPin2, LOW);
        digitalWrite(ledPin3, HIGH);
        digitalWrite(ledPin4, LOW);
        digitalWrite(ledPin5, LOW);
        break;
      case 40:
      case 90:
        digitalWrite(ledPin1, LOW);
        digitalWrite(ledPin2, LOW);
        digitalWrite(ledPin3, LOW);
        digitalWrite(ledPin4, HIGH);
        digitalWrite(ledPin5, LOW);
        break;
      case 50:
      case 100:
        digitalWrite(ledPin1, LOW);
        digitalWrite(ledPin2, LOW);
        digitalWrite(ledPin3, LOW);
        digitalWrite(ledPin4, LOW);
        digitalWrite(ledPin5, HIGH);
        break;
      default:
        break;
    }
  }

  digitalWrite(motorPin1, LOW); // Matikan motor setelah perhitungan selesai
  digitalWrite(ledPin1, LOW); // Matikan LED
  digitalWrite(ledPin2, LOW);
  digitalWrite(ledPin3, LOW);
  digitalWrite(ledPin4, LOW);
  digitalWrite(ledPin5, LOW);
}

void interruptHandler() {
  count = 0; // Reset count saat terjadi interrupt
  digitalWrite(ledPin1, LOW); // Matikan semua LED
  digitalWrite(ledPin2, LOW);
  digitalWrite(ledPin3, LOW);
  digitalWrite(ledPin4, LOW);
  digitalWrite(ledPin5, LOW);
}
    
    B. Flowchart


5. Kondisi [Kembali]
Percobaan 2 Kondisi 1: 
   Motor ke kanan,LCD menampilkan counting dari 0 sampai 100, setiap counting kelipatan 10 maka hidup 1 LED,ketika diberi interrupt maka counting diulang dari 0 dan 1 led mati

6. Video Simulasi [Kembali]


7. Download File [Kembali]
Download Rangkaian Simulasi klik disini
Download Html klik disini 
Download Datasheet Arduino Uno disini
Download Video Simulasi klik disini





















Tidak ada komentar:

Posting Komentar

Entri yang Diunggulkan

APLIKASI HPF +60DB/DEC DENGAN GENERATOR SINYAL

[MENUJU AKHIR] APLIKASI HPF +60DB/DEC DENGAN GENERATOR SINYAL DAFTAR ISI 1. Tujuan 2. Alat dan Bahan 3. Dasar Teori 4. P...