Senin, 25 Maret 2024

Tugas Pendahuluan M2

 

TP M2 P3 K3 Prak uP uC


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

2. Hardware dan diagram blok [Kembali]

  • Rangkaian Simulasi

  • Prinsip Kerja 
Pada rangkaian diatas, DIP Switch sebagai input dan double sevensegment sebagai outputnya. Ketika 3 dari 4 dip switch dalam keadaan ON maka arduino akan menjalankan program menghitung maju dari 0 - 10. Dimana untuk angka satuan maka yang aktif pin 4 arduino atau kaki 1 pada seven segment sedangkan untuk angka 10 akan menghidupkan pin 4 dan 5 arduino untuk menampilkan 1 sebagai puluhan dan 0 sebagai satuan.
 
  • 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(number, D1); // Menampilkan angka pada digit pertama (D1)
    } else if (number == 10){
        digitalWrite(D1, HIGH);
        digitalWrite(D2, HIGH);
        int tensDigit = 1; // Digit puluhan
        int unitsDigit = 0; // Digit satuan
        displayDigit(tensDigit, D2); // Menampilkan digit puluhan pada digit kedua (D2)
        delay(100);
        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 activeSwitches = sw1 + sw2 + sw3 + sw4;

    static unsigned long lastTime = 0; // Waktu terakhir pembacaan tombol
    static int count = 0; // Counter untuk digit

    if (activeSwitches == 3) { // Jika tiga di antara empat dip switch aktif
        if (millis() - lastTime > 1000) { // Debouncing
            lastTime = millis();
            if (count <= 10) {
                displayNumber(count);
                count++;
            }
        }
    } else {
        count = 0; // Reset count jika tidak ada tiga tombol yang ditekan
    }
}

4. Kondisi [Kembali]

Percobaan 3 Kondisi 3 : Ketika 3 switch aktif 7-Segment menghitung maju hingga 10

- HTML klik disini
- Rangkaian Simulasi  klik disini
- Video Simulasi  klik disini
- Listring Program  klik disini

Tidak ada komentar:

Posting Komentar

ELEKTRONIKA

Latihan Soal Tugas 1

SOAL 1. Pada Dioda apa tujuan permukaan konduksi yang terhubung ke-p memiliki ukuran kecil?     a. Untuk mengurangi jumlah foton      b. Un...