TP MODUL 2 PERCOBAAN 3


1. Prosedur [Kembali]

  • Rangkai semua komponen 
  • Buat program di aplikasi arduino IDE
  • Setelah selesai masukkan program ke arduino 
  • Jalankan program pada simulasi dan cobakan sesuai kondisi


  • Rangkaian Simulasi


  • Prinsip Kerja 

Pada percobaan ini, Prinsip kerjanya melibatkan penggunaan dipswitch yang terhubung ke Arduino Uno. Dipswitch digunakan untuk mengontrol input yang diterima oleh Arduino. Ada dua set dipswitch, di mana satu set terhubung ke pin analog Arduino (A0, A1, A2, A3) dan yang lainnya terhubung ke ground. Ketika diposisikan dengan benar, dipswitch akan mengatur nilai input yang diterima oleh Arduino.

Ketika satu switch diaktifkan, Arduino akan menghitung mundur dari angka 10. Kemudian, output dari perhitungan tersebut akan ditampilkan pada 7 segment yang juga terhubung ke Arduino Uno. Pada output 1 dan 2 dari 7 segment, resistor diterapkan untuk mengatur logika menjadi 0 atau 1 (biru atau merah). Tanpa resistor, logika tidak akan ada dan kemungkinan akan ditampilkan sebagai abu-abu.

Jadi, prinsip kerjanya adalah bahwa Arduino menerima input dari dipswitch, melakukan perhitungan mundur, dan menampilkan hasilnya pada 7 segment dengan menggunakan resistor untuk mengatur logika output tertentu.


  • 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

bool sw1, sw2, sw3, sw4;
int segments[] = {a, b, c, d, e, f, g};
byte digitPatterns[10][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 < 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 number(int display) {
    if (display >= 0 && display <= 9) {
        for (int i = 0; i < 7; i++) {
            digitalWrite(segments[i], digitPatterns[display][i]);
        }
    }
}

void loop() {
    int sw1 = digitalRead(Dsw1);
    int sw2 = digitalRead(Dsw2);
    int sw3 = digitalRead(Dsw3);
    int sw4 = digitalRead(Dsw4);
    static int digit = 1;       // Digit yang sedang ditampilkan (1 atau 2)
    static unsigned long lastTime = 0; // Waktu terakhir pembacaan tombol

    if (sw1 == LOW) {
        if (millis() - lastTime > 1000) { // Debouncing
            lastTime = millis();
            digit = 1;
            for (int i = 10; i >= 0; i--) {
                if (digit == 1) {
                    digitalWrite(D1, HIGH);
                    digitalWrite(D2, LOW);
                    number(i);
                    digit = 2;
                } else {
                    digitalWrite(D1, LOW);
                    digitalWrite(D2, HIGH);
                    number(i);
                    digit = 1;
                }
                delay(1000);
            }
        }
    } else if (sw2 == LOW) {
        if (millis() - lastTime > 1000) { // Debouncing
            lastTime = millis();
            digitalWrite(D1, HIGH);
            digitalWrite(D2, LOW);
            for (int i = 10; i >= 0; i--) {
                number(i);
                delay(1000); // Delay agar Anda bisa melihat perubahan digit
            }
        }
    }
}

4. Kondisi [Kembali]

Percobaan 3 Kondisi 1 diminta ketika 1 switch aktif 7 segment menghitung mudur dari 10.     

- Simulasi  klik disini
- Gambar Simulasi  klik disini
- Video Simulasi  klik disini
- Listring Program  klik disini








Tidak ada komentar:

Posting Komentar