Chrome Pointer

TP 2 Modul 2 Prak Up Uc

Percobaan III Kondisi 2

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 Uno




2. Dip Switch




3. 7 Segment 2 Digit



4. Resistor



Block Diagram:








3. Rangkaian Simulasi dan Prinsip Kerja [Kembali]



Prinsip Kerja

Rangkaian tersebut terdiri dari empat komponen utama: Arduino, 7-Segment 2 digit, Dipswitch, dan Resistor. Dipswitch berfungsi sebagai input untuk Arduino yang terhubung ke kaki A0-A3 Arduino, sementara outputnya ditujukan ke 7-segment 2 digit dengan masing-masing pin terhubung ke pin 4-13 Arduino.

Ketika kedua Dipswitch aktif, Arduino akan menghasilkan output berupa penghitungan pada 7-segment dari angka 15 hingga 0, kemudian mengatur ulang penghitungan ke 15. Mengingat 7-segment ini hanya mampu menampilkan satu digit angka pada satu waktu, kami memprogram Arduino untuk menangani hal ini. Saat penghitung mencapai angka 10 atau lebih, angka puluhan dan angka satuan akan bergantian ditampilkan pada kedua display 7-segment dengan jeda waktu yang singkat.

Namun, jika penghitungannya di bawah 10, 7-segment sebelah kiri akan dimatikan, dan hanya angka pada 7-segment sebelah kanan yang ditampilkan. Jika jumlah Dipswitch yang aktif lebih dari 2 atau kurang dari 2, proses penghitungan tidak akan terjadi.


Flowchart :



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
    }
}


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








Tidak ada komentar:

Posting Komentar