Modul 2
PWM, ADC, INTTERUPT
- Buatlah rangkaian sesuai dengan kondisi yang telah dipilih
- Buat Program pada software Arduino IDE
- Masukkan program yang telah dibuat pada software Arduino IDE sebagai library Arduino
- Jalankan rangkaian, sesuai dengan kondisi yang diinginkan
a. Rangkaian Simulasi
b. Prinsip Kerja
Pada percobaan ini kita menggunakan 3 komponen yakni dipswitch, arduino dan 7-segment mpx 2 sebagai outputnya, pertama untuk inputnya kita memakai Dipswitch yang berjumlah 4 dengan sifat pull up dimana saat saklar OFF nilainya high atau 1 begitu juga sebaliknya, saat 3 swicth yang aktif akan di proses pada arduino yang telah di program akan menampilkan "LEI" pada 7-segment setelah menghitung mundur 3
karena kita disini memakai 7-segment makan kita harus membuat code angka dan huruf yang diperlukan, untuk 7-segment yang digunakan itu bersifat katoda dimana pada 7-segment pada awalnya bernilai low atau 0, agar bisia menampilkan angka atau huruf yang diinginkan makan inputnya harus bernilai high atau 1
untuk code nya sebagai berikut:
{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, 0, 0, 1, 1, 1, 0}, // L
{1, 0, 0, 1, 1, 1, 1}, // E
{0, 0, 0, 0, 1, 1, 0}, // I
a. Flowchart
b. 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, 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, 0, 0, 1, 1, 1, 0}, // L
{1, 0, 0, 1, 1, 1, 1}, // E
{0, 0, 0, 0, 1, 1, 0}, // I
};
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 unsigned long lastTime = 0; // Waktu terakhir pembacaan tombol
if (sw1 == LOW && sw2 == LOW && sw3 == LOW) {
if (millis() - lastTime >= 1000) { // Debouncing
lastTime = millis();
if (digit == 1) {
digitalWrite(D1, HIGH);
digitalWrite(D2, LOW);
for (int i = 0; i <= 3; i++) {
number(i);
delay(1000); // Delay agar Anda bisa melihat perubahan digit
}
digit = 2;
} else {
digitalWrite(D1, LOW);
digitalWrite(D2, HIGH);
for (int i = 4; i <= 6; i++) {
number(i);
delay(1000); // Delay agar Anda bisa melihat perubahan digit
}
digit = 1;
}
}
} else {
if (millis() - lastTime > 1000) { // Debouncing
lastTime = millis();
digitalWrite(D1, HIGH);
digitalWrite(D2, HIGH);
}
}
}
Kondisi yang dipilih adalah kondisi 6 dimana menggunakan TIMER,
7-SEGMENT dengan DIP
switch untuk menampilkan "LEI" setelah hitung mundur dari 3
Download HTML klik disini
Download Rangkaian Proteus klik disini
Download Program Arduino klik disini
Download Video klik disini
Download Datasheet 7-Segment klik disini
Download Datasheet Arduino klik disini
Download Datasheet Dip Switch klik disini
Tidak ada komentar:
Posting Komentar