Laporan Akhir 1 M2

 



Percobaan 3

DIP SWITCH & SEVEN SEGMENT

1. Foto Hardware dan Diagram Blok [Kembali]

    
       
Hardware :
Arduino Uno



Dip Switch

    
LCD


   
Jumper

   
Breadboard





    
Resistor




    
Seven Segment


Diagram Blok:




2. Prosedur Percobaan  [Kembali]

Rangkai semua komponen 
+ buat program di aplikasi arduino IDE
+ setelah selesai masukkan program ke arduino 
+ jalankan program pada simulasi dan cobakan dengan modul





Prinsip Kerja

Pada percobaan 3 modul 2 menggunakan komponen berupa arduino uno sebagai pusat pengendali, dip switch sebagai inputan yang terhubung dengan arduino uno menggunakan kabel jumper, arduino uno akan memberikan 


4. Flowchart dan Listing Program [Kembali]






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]

    Percobaan 3 Modul 2

6. Video Simulasi [Kembali]







1. Apa itu timer arduino, apa itu millis dan delay, apa perbedaannya dan kenapa dibedakan 

 Jawab :

  • Timer adalah kemampuan internal Arduino untuk mengukur waktu dan menjalankan program secara terjadwal serta mekanisme yang memungkinkan kita dapat mengatur waktu dan mengendalikan tindakan berdasarkan waktu tertentu.

  • Millis adalah fungsi yang mengembalikan nilai waktu yang telah berlalu sejak Arduino dihidupkan. Millis adalah non-blocking, artinya program tetap berjalan sambil memeriksa waktu setiap kali melalui loop, dan ketika waktu tertentu telah berlalu, program kembali ke tugas yang memanggil millis dan menyelesaikan tugas tersebut.

  • Dellay adalah fungsi yang menghentikan program selama periode waktu tertentu,  digunakan untuk membuat jeda dalam program.tetapi dapat menghambat responsivitas program jika digunakan secara berlebihan.

Kenapa dibedakan : Millis digunakan untuk mengukur waktu yang telah berlalu, sedangkan delaydigunakan untuk membuat jeda dalam program.

2. Analisa pengaruh penggunaan millis dan delay pada program yg di gunakan

Jawab :

    Pada program yang digunakan Delay berpengaruh pada pemberian jeda antara perubahan digit yang ditampilkan serta memberikan waktu bagi pengguna untuk melihat perubahan digit secara visual.
        Sedangkan penggunaan Millis berpengaruh untuk menghindari masalah debouncing pada pembacaan tombol. Debouncing adalah fenomena di mana saklar fisik seperti tombol sering kali tidak memberikan sinyal yang stabil saat ditekan.


᭒ HTML↠ klik disini
᭒ Video Percobaan↠ klik disini














Tidak ada komentar:

Posting Komentar

Cover Sisdig

  Bahan Presentasi Untuk Matakuliah Sistem Digital 2023 OLEH: Marsanda Nabilla 2110953014 Dosen Pengampu: Darwison,MT Referensi: a. Anil K. ...