PERCOBAAN 3
TIMER Arduino
- Rangkai semua komponen sesuai kondisi yang dipilih
- buat program di aplikasi arduino IDE
- setelah selesai masukkan program ke arduino (Verify and Upload)
- jalankan program pada simulasi dan cobakan sesuai dengan modul dan kondisi
- Selesai
2. Hardware dan diagram blok
[Kembali]
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