Kamis, 21 Maret 2024

Tugas Pendahuluan 2



Percobaan 2
Interrupt Arduino

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. DipSwitch

      3. 7-Segment

      4. Resistor
      5. Power Supply
      6. Ground

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, menunggu input dari pengguna. 7Segment akan menampilkan hitung mundur dari 3 ke 0 saat tidak ada switch terjadi dari dipswitch. saat adanya swtich maka 7-segment akan menampilkan kombinasi 2,0,0,3 secara bergantian. dan apabila switch lagi maka akan kembali ke kondisi awal.

4. FlowChart [Kembali]

a. Listing Program 

#define D1 2
#define D2 3
#define Dsw1 A0
#define Dsw2 A1
#define Dsw3 A2
#define Dsw4 A3

bool switches[] = {Dsw1, Dsw2, Dsw3, Dsw4};
int digits[] = {D1, D2};
int segments[] = {5, 6, 7, 8, 9, 10, 11, 12};
int digitPatterns[][7] = {
  {1, 1, 1, 1, 1, 1, 0}, // 0
  {0, 1, 1, 0, 0, 0, 0}, // 1
  {1, 1, 0, 1, 1, 0, 1}, // 2
  {1, 1, 1, 1, 0, 0, 1}, // 3
  {0, 1, 1, 0, 0, 1, 1}, // 4
  {1, 0, 1, 1, 0, 1, 1}, // 5
  {1, 0, 1, 1, 1, 1, 1}, // 6
  {1, 1, 1, 0, 0, 0, 0}, // 7
  {1, 1, 1, 1, 1, 1, 1}, // 8
  {1, 1, 1, 1, 0, 1, 1}  // 9
};

void setup() {
  for (int i = 0; i < sizeof(segments) / sizeof(segments[0]); i++) {
    pinMode(segments[i], OUTPUT);
  }
  for (int i = 0; i < sizeof(digits) / sizeof(digits[0]); i++) {
    pinMode(digits[i], OUTPUT);
  }
  for (int i = 0; i < sizeof(switches) / sizeof(switches[0]); i++) {
    pinMode(switches[i], INPUT_PULLUP);
  }
  Serial.begin(9600);
}

void number(int display) {
  if (display >= 0 && display <= 9) {
    for (int i = 0; i < sizeof(segments) / sizeof(segments[0]); i++) {
      digitalWrite(segments[i], digitPatterns[display][i]);
    }
  }
}

void loop() {
  bool switchStates[4];
  for (int i = 0; i < sizeof(switches) / sizeof(switches[0]); i++) {
    switchStates[i] = digitalRead(switches[i]);
  }

  // Hitungan mundur dari 3 ke 0 sebelum switch ditekan
  if (switchStates[0] && switchStates[1] && switchStates[2] && switchStates[3]) {
    for (int i = 3; i >= 0; i--) {
      digitalWrite(D1, HIGH);
      digitalWrite(D2, LOW);
      number(i); // Menampilkan angka yang sedang dihitung
      delay(500); // Delay selama 0.5 detik
    }
  }
  // Menampilkan kombinasi angka 2, 0, 0, dan 3 setelah satu switch diaktifkan
  else if (!switchStates[0] || !switchStates[1] || !switchStates[2] || !switchStates[3]) {
    int digitsToShow[] = {2, 0, 0, 3};
    for (int i = 0; i < 4; i++) {
      digitalWrite(digits[i % 2], i < 2 ? HIGH : LOW); // Switch antara D1 dan D2
      number(digitsToShow[i]); // Menampilkan angka sesuai dengan array digitsToShow
      delay(500); // Delay selama 0.5 detik
    }
  }
}

b. Flowchart



5. Kondisi [Kembali]
Kondisi  : Percobaan 3 Kondisi 4
        Ketika 1 switch aktif 7-Segment akan menampilkan kombinasi 2,0,0,3 setelah hitung mundur dari 3

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

UTS Soal 3

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