1. Prosedur Percobaan [Kembali]
- Rangkai komponen sesuai percobaan dan kondisi yang dipilih.
- Buat program di aplikasi arduino IDE
- Compile program yang telah dibuat, upload ke dalam Arduino Uno
- Uji coba program pada rangkaian percobaan
- Rangkai komponen sesuai percobaan dan kondisi yang dipilih.
- Buat program di aplikasi arduino IDE
- Compile program yang telah dibuat, upload ke dalam Arduino Uno
- Uji coba program pada rangkaian percobaan
2. Foto Hardware dan Diagram Blok [Kembali]
Diagram Blok:

.png)
Prinsip Kerja
Pada rangkaian ini menggunakan komponen antara lain yaitu mikrokontroler (ATMEGA328P-PU), dip switch, resistor, dan display 7 segment.
Mikrokontroler ATMEGA328P-PU adalah inti rangkaian, yang mengelola pengoperasian dip switch dan display 7 segment. Dip switch terhubung ke mikrokontroler melalui pin input analog pada arduino yaitu pin A0 - A4, sedangkan 7 segment terhubung ke pin output arduino yaitu pin 4-13, dimana D1 & D2 terpasang resistor lalu terhubung ke pin 4 & 5, serta pin A hingga DP pada display terhubung secara berurutan dari 6-13. pin D1 dan D2 berperan sebagai display satuan dan puluhan, dan pin A-DP berperan sebagai LED dalam display yang berfungsi dalam membentuk karakter yang diinginkan.
Ketika total ada 2 dipswitch yang aktif, pin input yang terpasang di Arduino mendeteksi perubahan tegangan dan mengirimkan sinyal ke mikrokontroler. Mikrokontroler kemudian mengaktifkan pin output untuk menjalankan program dengan melakukan countdown dari 15-0 yang ditampilkan pada display 7 segment. Hanya display D1 yang aktif jika memasuki perhitungan 9-0, sedangkan kedua display hidup bergantian D2 ke D1 saat perhitungan 15-10.
4. Flowchart dan Listing Program [Kembali]
Listing Program:
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
int segments[] = {a, b, c, d, e, f, g};
byte digitPatterns[16][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
{0, 0, 0, 0, 0, 0, 1}, // dp
{0, 0, 0, 0, 0, 0, 0}, // empty
};
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 displayDigit(int digit, int digitPosition) {
for (int i = 0; i < 7; i++) {
digitalWrite(segments[i], digitPatterns[digit][i]);
}
// Aktifkan digit yang sesuai
if (digitPosition == D1) {
digitalWrite(D1, HIGH);
digitalWrite(D2, LOW);
} else if (digitPosition == D2) {
digitalWrite(D1, LOW);
digitalWrite(D2, HIGH);
}
}
void displayNumber(int number) {
if (number < 10) {
digitalWrite(D1, HIGH);
digitalWrite(D2, LOW);
displayDigit(0, D2); // Menampilkan angka 0 pada digit kedua (D2)
displayDigit(number, D1); // Menampilkan angka pada digit pertama (D1)
} else {
digitalWrite(D1, HIGH);
digitalWrite(D2, HIGH);
int tensDigit = number / 10; // Digit puluhan
int unitsDigit = number % 10; // Digit satuan
displayDigit(tensDigit, D2); // Menampilkan digit puluhan pada digit kedua (D2)
delay(100); // Delay untuk menampilkan digit puluhan
displayDigit(unitsDigit, D1); // Menampilkan digit satuan pada digit pertama (D1)
}
delay(1000); // Delay agar Anda bisa melihat perubahan digit
}
void loop() {
bool sw1 = digitalRead(Dsw1) == LOW;
bool sw2 = digitalRead(Dsw2) == LOW;
bool sw3 = digitalRead(Dsw3) == LOW;
bool sw4 = digitalRead(Dsw4) == LOW;
int pressedCount = sw1 + sw2 + sw3 + sw4;
static unsigned long lastTime = 0; // Waktu terakhir pembacaan tombol
static int count = 15; // Counter untuk digit
if (pressedCount == 2) {
if (millis() - lastTime > 1000) { // Debouncing
lastTime = millis();
if (count >= 10) { // Angka 10 hingga 15
displayNumber(count);
} else { // Angka 0 hingga 9
displayDigit(0, D2); // Menampilkan angka 0 pada digit kedua (D2)
displayDigit(count, D1); // Menampilkan angka pada digit pertama (D1)
delay(1000); // Delay agar Anda bisa melihat perubahan digit
}
count--;
if (count < 0) {
count = 15;
}
}
} else {
count = 15; // Reset count jika tidak ada dua tombol yang ditekan
}
}
Percobaan 3 Modul 2: Ketika 2 switch aktif 7-Segment menghitung mundur dari 15
- HTML↠ klik disini
- Listing Program↠ klik disini
- Video Percobaan↠ klik disini
- Datasheet Arduino↠ klik disini
- Datasheet 7 segment↠ klik disini
- Datasheet Dipswitch↠ klik disini
0 Komentar