M2P3

Percobaan 3

Timer Arduino

1. Foto Hardware dan Diagram Blok [Kembali]

  • Arduino
  • dipswitch
  • Resistor
  • Led



2. Prosedur Percobaan  [Kembali]

  • Rangkailah seperti rangkaian berikut
  • Buka Arduino IDE dan masukan listing Program
  • Upload program ke arduino
  • Mencoba rangkaiannya dengan memvariasikan input 


Prinsip Kerja:

4. Flowchart dan Listing Program [Kembali]

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] = {

  {0, 0, 0, 0, 0, 0, 1}, // 0

  {1, 0, 0, 1, 1, 1, 1}, // 1

  {0, 0, 1, 0, 0, 1, 0}, // 2

  {0, 0, 0, 0, 1, 1, 0}, // 3

  {1, 0, 0, 1, 1, 0, 0}, // 4

  {0, 1, 0, 0, 1, 0, 0}, // 5

  {0, 1, 0, 0, 0, 0, 0}, // 6

  {0, 0, 0, 1, 1, 1, 1}, // 7

  {0, 0, 0, 0, 0, 0, 0}, // 8

  {0, 0, 0, 0, 1, 0, 0}  // 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) {

    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 > 2000) { // 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 > 2000) { // Debouncing

        lastTime = millis();

        digitalWrite(D2, HIGH);

        digitalWrite(D1, LOW);

        for (int i = 9; i >= 0; i--) {

            number(i);

            delay(200); // Delay agar Anda bisa melihat perubahan digit

        }

    }

}

}


5. Kondisi [Kembali]

    Ketika salah satu dipswitch di on kan, maka akan ada counter yang ditampilkan oleh seven segmen 2 digit. 

HTML↠ klik disini
Aplikasi↠ klik disini
Gambar Rangkaian↠ klik disini
Video Percobaan↠ klik disini



Komentar

Postingan populer dari blog ini

TB Mikro

Kontrol Kereta Gantung

Modul 2