TP 2 MODUL 2


Percobaan 3 Kondisi 5
Timer Arduino

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




  • Prinsip Kerja
Pada percobaan 3 Kondisi 5 bahwa Saat 2 dipswitch dinyalakan setelah timer menghitung 0, 1, 2, 3 maka akan muncul kombinasi angka 2, 0, 2, 4..
Maka prinsip kerja dari rangkaian adalah Dipswitch digunakan sebagai input dan akan mengaktifkan kombinasi 2, 0, 2, 4 saat 2 dipswitchnya aktif, serta seven segment sebagai output dengan logika seven segmentnya yang telah dideklarasikan pada program, seven segment disini juga berfungsi sebagai timer yang akan memunculkan hitungan 0 - 3 serta kombinasi angka yang keluar dari 2 dipswitch yang di aktifkan.


  • 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}, // 6
  {1, 1, 1, 0, 0, 0, 0}, // 7
  {1, 1, 1, 1, 1,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}, // 8
  {1, 1, 1, 1, 0, 1, 1}  // 9
};

unsigned long previousMillis = 0;
const long interval = 500;

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() {
  unsigned long currentMillis = millis();

  if (currentMillis - previousMillis >= interval) {
    previousMillis = currentMillis;

    sw1 = digitalRead(Dsw1);
    sw2 = digitalRead(Dsw2);
    sw3 = digitalRead(Dsw3);
    sw4 = digitalRead(Dsw4);

    // Menampilkan angka 0, 1, 2, dan 3 di awal output
    for (int i = 0; i <= 3; i++) {
      digitalWrite(D1, HIGH);
      digitalWrite(D2, LOW);
      number(i); // Menampilkan angka yang sedang dihitung
      delay(500); // Delay selama 0.5 detik
    }

    // Menampilkan kombinasi angka 2, 0, 2, dan 4 setelah kedua switch diaktifkan
    if ((sw1 == LOW && sw2 == LOW && sw3 == HIGH && sw4 == HIGH) ||
        (sw1 == LOW && sw2 == HIGH && sw3 == LOW && sw4 == HIGH) ||
        (sw1 == LOW && sw2 == HIGH && sw3 == HIGH && sw4 == LOW) ||
        (sw1 == HIGH && sw2 == LOW && sw3 == LOW && sw4 == HIGH) ||
        (sw1 == HIGH && sw2 == LOW && sw3 == HIGH && sw4 == LOW) ||
        (sw1 == HIGH && sw2 == HIGH && sw3 == LOW && sw4 == LOW)) {
      digitalWrite(D1, HIGH);
      digitalWrite(D2, LOW);
      number(2); // Menampilkan angka 2 pada digit pertama
      delay(500); // Delay selama 0.5 detik

      digitalWrite(D1, LOW);
      digitalWrite(D2, HIGH);
      number(0); // Menampilkan angka 0 pada digit kedua
      delay(500); // Delay selama 0.5 detik

      digitalWrite(D1, HIGH);
      digitalWrite(D2, LOW);
      number(2); // Menampilkan angka 2 pada digit pertama
      delay(500); // Delay selama 0.5 detik

      digitalWrite(D1, LOW);
      digitalWrite(D2, HIGH);
      number(4); // Menampilkan angka 4 pada digit kedua
      delay(500); // Delay selama 0.5 detik
    }
  }
}

4. Kondisi [Kembali]

Saat 2 dipswitch dinyalakan setelah timer menghitung 0, 1, 2, 3 maka akan muncul kombinasi angka 2, 0, 2, 4.

x HTML klik disini  
Simulasi  klik disini
Gambar Simulasi  klik disini
Video Simulasi   klik disini
Listring Program  klik disini

Komentar