LA 1 M2
Laporan Percobaan 3
TIMER ARDUINO
1. Foto Hardware dan Diagram Blok [Kembali]
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
Sistem yang menggunakan dip switch, Arduino, dan display tujuh segmen bekerja dengan cara yang terkoordinasi. Dip switch berfungsi sebagai input, di mana pengguna dapat mengatur angka yang ingin ditampilkan dengan memindahkan saklar-saklar sesuai keinginan. Arduino, menerima informasi dari dip switch, menerjemahkan konfigurasi saklar menjadi angka yang sesuai, dan mengendalikan display tujuh segmen untuk menampilkan angka tersebut.
Saat saklar pada dip switch diposisikan, Arduino membaca statusnya menggunakan fungsi digitalRead(). Setelah itu, Arduino menginterpretasikan pola ON dan OFF dari saklar menjadi angka yang sesuai. Setiap angka direpresentasikan dengan kombinasi segmen-segmen yang harus dinyalakan pada display tujuh segmen. Arduino kemudian mengirimkan sinyal ke display untuk menyalakan segmen-segmen yang sesuai dengan angka yang telah diinterpretasikan tersebut.
Dengan cara ini, kita dapat secara langsung mengontrol angka yang akan ditampilkan pada display tujuh segmen melalui dip switch. Arduino bertanggung jawab untuk memproses input dari dip switch dan menghasilkan output yang sesuai untuk menampilkan angka,jika Dip Switch 1 (Dsw1) tombol Dsw1 ditekan, maka program akan memeriksa status tombol tersebut menggunakan fungsi digitalRead(Dsw1). Jika statusnya adalah LOW (atau saklar dip switch dalam keadaan ON), maka Arduino akan menunggu selama debouncing (waktu tertentu untuk menghindari bounce) menggunakan millis().
Setelah debouncing selesai, Arduino akan menambahkan satu ke angka yang sedang ditampilkan. Jika angka tersebut sudah mencapai 10, maka akan kembali ke angka 0. Kemudian, Arduino akan memilih digit mana yang akan ditampilkan pada display (digit 1 atau digit 2) dan menampilkan angka yang baru di display tujuh segmen.
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
}
}
}
}
Percobaan 3 komponen input Dip Switch dan Seven segment akan menampilkan karakter sesuai dengan input Dipswich yang ditekan.
Download HTML disini
Download Video percobaan disini
Download Library Arduino Uno disini
Download Datasheet Arduino Uno disini
Download Datasheet Seven Segment disini
Download Datasheet DipSwitch disini
Komentar
Posting Komentar