Jumat, 29 Maret 2024





PERCOBAAN 3
TIMER Arduino 


1. Prosedur
[Kembali]

  1. Rangkai semua komponen sesuai kondisi yang dipilih
  2. buat program di aplikasi arduino IDE
  3. setelah selesai masukkan program ke arduino (Verify and Upload)
  4. jalankan program pada simulasi dan cobakan sesuai dengan modul dan kondisi
  5. Selesai

2. Hardware dan diagram blok [Kembali]

a. hardware
                                                                    
1. Dip-SW
2. Arduino Uno



3. 2 Digit 7-Segment






  b. Digram Blok






3. Rangkaian Simulasi dan Prinsip kerja [Kembali]







Prinsip Kerja 
Sistem  yang disebut juga  timer Arduino ini terdiri dari program dan sirkuit untuk mengontrol tampilan 7 segmen menggunakan mikrokontroler Arduino.
 Program ini menggunakan saklar DIP sebagai input untuk mengubah angka yang ditampilkan pada layar.
 Tujuan utamanya adalah memungkinkan pengguna menyesuaikan tampilan pada tampilan 7 segmen  menggunakan empat tombol sebagai input.
 Proses ini dibagi menjadi tiga fase utama: 
1) Inisialisasi (di bagian setup()): Pada fase ini, pin-pin yang terhubung ke segmen tampilan dan angka (common katoda) dihubungkan .
 .
 Ini ditetapkan sebagai OUTPUT.
 Selain itu, pin saklar DIP diatur ke INPUT_PULLUP, sehingga inputnya berlogika HIGH ketika saklar ON DIP tidak ditekan.
 2) Eksekusi (dalam fungsi 'number(int display)'): Fungsi ini mengontrol output pin segmen berdasarkan nomor yang  ditampilkan.
 Array digitPatterns menyimpan pola pencahayaan untuk setiap digit (0-9) dalam tampilan 7-segmen.
 3) Loop utama ('loop()'): Program melanjutkan eksekusi dalam loop utama ini.
 Setiap saklar mempunyai fungsi spesifik.
 – ``sw1'' dan ``sw3'' digunakan untuk mengubah angka yang ditampilkan pada tampilan dengan penundaan 1 detik (1000 milidetik) setelah setiap penambahan.
 – “sw2” dan “sw4” digunakan untuk menampilkan serangkaian digit dari 9 hingga 0 pada layar, dengan jeda 200 ms di antara setiap digit.
 Pembacaan tombol dimulai setiap kali sakelar ditekan.
 Tergantung pada modulnya, pengaturan kondisi yang diinginkan  adalah "SW1=ON" dan "SW2=SW3=SW4=OFF.
" Jika kondisi ini terpenuhi, maka: - Debounce akan dilakukan.
 Artinya, tunggu beberapa saat untuk menghindari efek pantulan sakelar.
 – Nomor yang ditampilkan di layar (D1 atau D2) telah berubah.
 Terlihat dua digit ruas 7 dihitung secara bergantian dari 0 hingga 9 pada setiap sisi ruas 7.
 Nomor ini ditampilkan berdasarkan fungsi nomor (int display).


4. FlowChart [Kembali]

#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, 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 <= 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
 }
 }
}
}

b. Flowchart




5. Video Demo [Kembali]




6. Kondisi [Kembali]

        Percobaan 3 Timer Audio


7. Download File [Kembali]
Download HMTL klik disini
Download Simulasi Rangkaian klik disini
Download Video Demo klik disini
Download Datasheet ARDUINO UNO klik disini
Download Datasheet DipSwitch klik disini
Download Datasheet 2 Digit 7-Segment klik disini














Tidak ada komentar:

Posting Komentar

Mikro 2024 Modul  4 [KEMBALI KE MENU SEBELUMNYA] DAFTAR ISI     1. Pendahuluan     2. Tujuan     3. Alat dan Bahan     4. Dasar...