Laporan Akhir 2






1. Prosedur Percobaan [Kembali]

  • Rangkai komponen sesuai percobaan dan kondisi yang dipilih.
  • Buat program di aplikasi arduino IDE
  • Compile program yang telah dibuat, upload ke dalam Arduino Uno 
  • Uji coba program pada rangkaian percobaan


2. Foto Hardware dan Diagram Blok [Kembali]

        1. Arduino Uno



        2. Dipswitch



        3. 7 segment 2 digit




        4. Kabel Jumper


        5. Breadboard



Diagram Blok:







Prinsip Kerja

Pada rangkaian ini menggunakan komponen antara lain yaitu mikrokontroler (ATMEGA328P-PU), dip switch, resistor, dan display 7 segment.

Mikrokontroler ATMEGA328P-PU adalah inti rangkaian, yang mengelola pengoperasian dip switch dan display 7 segment. Dip switch terhubung ke mikrokontroler melalui pin input analog pada arduino yaitu pin A0 - A4, sedangkan 7 segment terhubung ke pin output arduino  yaitu pin 4-13, dimana D1 & D2 terpasang resistor lalu terhubung ke pin 4 & 5, serta pin A hingga DP pada display terhubung secara berurutan dari 6-13. pin D1 dan D2 berperan sebagai display satuan dan puluhan, dan pin A-DP berperan sebagai LED dalam display yang berfungsi dalam membentuk karakter yang diinginkan.

Ketika total ada 2 dipswitch  yang aktif, pin input yang terpasang di Arduino mendeteksi perubahan tegangan dan mengirimkan sinyal ke mikrokontroler. Mikrokontroler kemudian mengaktifkan pin output untuk menjalankan program dengan melakukan countdown dari 15-0 yang ditampilkan pada display 7 segment. Hanya display D1 yang aktif jika memasuki perhitungan 9-0, sedangkan kedua display hidup bergantian D2 ke D1 saat perhitungan 15-10.

 

4. Flowchart dan Listing Program [Kembali]






Listing Program:

Listing Program: #define a 6 #define b 7 #define c 8 #define d 9 #define e 10 #define f 11 #define g 12 #define dp 13 #define D1 4 #define D2 5 #define Dsw1 A0 #define Dsw2 A1 #define Dsw3 A2 #define Dsw4 A3 int segments[] = {a, b, c, d, e, f, g}; byte digitPatterns[16][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 {0, 0, 0, 0, 0, 0, 1}, // dp {0, 0, 0, 0, 0, 0, 0}, // empty }; void setup() { for (int i = 0; i < 7; i++) { pinMode(segments[i], OUTPUT); } pinMode(dp, OUTPUT); pinMode(D1, OUTPUT); pinMode(D2, OUTPUT); pinMode(Dsw1, INPUT_PULLUP); pinMode(Dsw2, INPUT_PULLUP); pinMode(Dsw3, INPUT_PULLUP); pinMode(Dsw4, INPUT_PULLUP); Serial.begin(9600); } void displayDigit(int digit, int digitPosition) { for (int i = 0; i < 7; i++) { digitalWrite(segments[i], digitPatterns[digit][i]); } // Aktifkan digit yang sesuai if (digitPosition == D1) { digitalWrite(D1, HIGH); digitalWrite(D2, LOW); } else if (digitPosition == D2) { digitalWrite(D1, LOW); digitalWrite(D2, HIGH); } } void displayNumber(int number) { if (number < 10) { digitalWrite(D1, HIGH); digitalWrite(D2, LOW); displayDigit(0, D2); // Menampilkan angka 0 pada digit kedua (D2) displayDigit(number, D1); // Menampilkan angka pada digit pertama (D1) } else { digitalWrite(D1, HIGH); digitalWrite(D2, HIGH); int tensDigit = number / 10; // Digit puluhan int unitsDigit = number % 10; // Digit satuan displayDigit(tensDigit, D2); // Menampilkan digit puluhan pada digit kedua (D2) delay(100); // Delay untuk menampilkan digit puluhan displayDigit(unitsDigit, D1); // Menampilkan digit satuan pada digit pertama (D1) } delay(1000); // Delay agar Anda bisa melihat perubahan digit } void loop() { bool sw1 = digitalRead(Dsw1) == LOW; bool sw2 = digitalRead(Dsw2) == LOW; bool sw3 = digitalRead(Dsw3) == LOW; bool sw4 = digitalRead(Dsw4) == LOW; int pressedCount = sw1 + sw2 + sw3 + sw4; static unsigned long lastTime = 0; // Waktu terakhir pembacaan tombol static int count = 15; // Counter untuk digit if (pressedCount == 2) { if (millis() - lastTime > 1000) { // Debouncing lastTime = millis(); if (count >= 10) { // Angka 10 hingga 15 displayNumber(count); } else { // Angka 0 hingga 9 displayDigit(0, D2); // Menampilkan angka 0 pada digit kedua (D2) displayDigit(count, D1); // Menampilkan angka pada digit pertama (D1) delay(1000); // Delay agar Anda bisa melihat perubahan digit } count--; if (count < 0) { count = 15; } } } else { count = 15; // Reset count jika tidak ada dua tombol yang ditekan } }


5. Kondisi [Kembali]

    Percobaan 3 Modul 2: Ketika 2 switch aktif 7-Segment menghitung mundur dari 15










Posting Komentar

0 Komentar