Sabtu, 23 Maret 2024

TUGAS PENDAHULUAN 2




Tugas Pendahuluan 2 Modul 2
(Percobaan 3 Kondisi 4)

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.
5. Selesai.

2. Hardware dan Diagram Blok [Kembali]

Hardware :

1. Arduino Uno







2. Dip Switch









3. Resistor


4. Seven Segmen 2 digit




Diagram Blok  :






3. Rangkaian Simulasi dan Prinsip Kerja [Kembali]

Rangkaian Simulasi Sebelum dirunning:







Rangkaian Simulasi Setelah dirunning:










Prinsip Kerja : 
Pada percobaan ini, kita menggunakan dip switch sebagai inputan. Sedangkan yang berfungsi sebagai keluaran atau output adalah seven segment 2 digit. Dipswith yang berguna sebagai input dari Arduino yang dihubungkan ke kaki A0-A3 arduino, sedangkan untuk outputnya yaitu 7-segment 2 digit yang masing masing pinnya dihubungkan ke pin 4-13 Arduino. Kode program untuk mengontrol dan menampilkan angka pada sebuah display tujuh segmen dengan menggunakan Arduino. Terdapat definisi pin untuk segmen-segmen yang akan dikontrol, serta penentuan pola digit untuk setiap angka dari 0 hingga 9. Pada fungsi setup(), dilakukan inisialisasi pin-pin yang digunakan, termasuk pengaturan pull-up resistor untuk tombol-tombol. Pada loop(), dilakukan pembacaan status tombol dan tampilan pada display akan berubah sesuai dengan tombol yang ditekan. Ada empat kondisi yang ditangani: pertama, jika tombol sw1, sw2, dan sw3 ditekan secara bersamaan, display akan mengubah angka secara berurutan setiap detik. Kedua, jika hanya tombol sw1 yang ditekan, angka akan berubah satu per satu setiap detik. Ketiga, jika hanya tombol sw2 yang ditekan, angka pada display akan mundur dari 9 hingga 0 dengan jeda satu detik setiap perubahan. Terakhir, jika hanya tombol sw3 yang ditekan, angka akan berubah satu per satu dengan jeda waktu yang lebih cepat. Selain itu, jika tombol sw4 ditekan, display akan menampilkan urutan angka 2, 0, 0, 3 dengan jeda waktu 0.2 detik setiap angka, dan setelah itu, akan muncul angka 3, 2, 1, dan 0 dengan jeda waktu 0.2 detik setiap angka. Dengan kondisi yang diberikan, ketika 1 switch aktif (switch 4), maka sevens egment akan menampilkan kombinasi 2, 0, 0, 3 setelah hitung mundur dari 3.


4. Flowchart dan Listing Program [Kembali]

Flowchart :

Flowchart di modul:

Flowchart sesuai kondisi:





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 int count = 0;    // Counter untuk digit
    static unsigned long lastTime = 0; // Waktu terakhir pembacaan tombol
    if (sw1 == LOW && sw2 == LOW && sw3 == LOW) {
        if (millis() - lastTime > 1000) { // Debouncing
            lastTime = millis();
            count++;
            if (count > 9) {
                count = 0;
            }
            if (digit == 1) {
                digitalWrite(D1, HIGH);
                digitalWrite(D2, LOW);
                number(count);
                digit = 2;
            } else {
                digitalWrite(D1, LOW);
                digitalWrite(D2, HIGH);
                number(count);
                digit = 1;
            }
        }
    }else if (sw1 == LOW) {
     if (millis() - lastTime > 1000) { // Debouncing
     lastTime = millis();
     count++;
     if (count > 9) {
     count = 0;
     }
     if (digit == 1) {
     digitalWrite(D1, HIGH); 

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

    else if (sw4 == LOW) {
    if (millis() - lastTime > 500) { // Debouncing
        lastTime = millis();
        digitalWrite(D2, HIGH);
        digitalWrite(D1, LOW);
        for (int i = 3; i >= 0; i--) {
            number(i);
            delay(200); // Delay agar Anda bisa melihat perubahan digit
        }
        delay(1000); // Jeda 1 detik

        // Menampilkan angka 2, 0, 0, 3 dengan jeda masing-masing angka 0.2 detik
        int numbers[] = {2, 0, 0, 3};
        for (int i = 0; i < 4; i++) {
            number(numbers[i]);
            delay(200); // Jeda 0.2 detik setiap angka
        }
    }
}
}

5. Kondisi [Kembali]

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]

HTML Download
File Rangkaian Download
Video Percobaan Download
Listing Program Download
Datasheet Arduino Download
Datahseet resistor Download
Datasheet Dipswitch Download
Datasheet seven segment Download










Tidak ada komentar:

Posting Komentar

Entri yang Diunggulkan

TUGAS BESAR PRAKTIKUM UP & UC (MODUL 4)

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