TP 1


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 ketiga dalam Kondisi 1, diminta agar ketika satu switch diaktifkan, 7 segmen akan menghitung mundur dari 10. Dalam percobaan ini, digunakan dipswitch di mana pin 1, 2, 3, dan 4 dipswitch terhubung ke pin A0, A1, A2, dan A3 pada Arduino, sedangkan pin 5, 6, 7, dan 8 dipswitch terhubung ke ground. Output akan ditampilkan pada 7 segmen yang terhubung ke Arduino Uno. Pada output 1 dan 2 pada 7 segmen, diberikan resistor agar logikanya menjadi 0/1 (biru/merah) pada 7 segmen. Jika tidak ada resistor, maka logikanya tidak aktif (abu)..
 
  • Flowchart 
  • Listing Program 
#define a 2
#define b 3
#define c 4
#define d 5
#define e 6
#define f 7
#define g 8
#define dp 9
#define D1 10
#define D2 11
#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 <= 10) {
        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 = 2;       // 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 = 11; i >= 0; i--) {
                switch (digit) {
                    case 1:
                        digitalWrite(D1, HIGH);
                        digitalWrite(D2, LOW);
                        number(i);
                        digit = 2;
                        break;
                    case 2:
                        digitalWrite(D1, LOW);
                        digitalWrite(D2, HIGH);
                        number(i);
                        digit = 1;
                        break;
                }
                delay(1000);
            }
        }
    } 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
            }
        }
    }
}

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

Pemimpin

Menggali Sisi Positif dan Negatif Kepemimpinan Kepemimpinan adalah salah satu elemen kunci dalam mencapai keberhasilan dalam berbagai bidang...