Modul 2 Percobaan 3
1. Prosedur [Kembali]
- Rangkai semua komponen
- Buat program di aplikasi arduino IDE
- Setelah selesai masukkan program ke arduino
- Jalankan program pada simulasi dan cobakan dengan modul
- Lihat hasil pada 7-Segment
- Rangkaian
- Prinsip Kerja
Pada rangkaian percobaan 3 kondisi 1 ini kita menggunakan dip switch yang dimana dipswitch berguna untuk sebagai input dri kaki analog arduino uno sedangkan untuk output dri arduino ny sendiri adalah 7-Segment common kathode
rangkaian percobaan ini menggunakan program koding arduino menggunakan input pull up dan juga delay pada 7-segment katoda nya 1000ms
- Pada saat 1 switch diaktifkan : 7-segmen kanan common anoda menghitung mundur dari 9 hingga 0
- Pada saat 2 switch diaktifkan : 7 segmen akan bergantian menampilkan angka dari 0 hingga 9
- pada saat 3 switch diaktifkan : 7 segmen akan lebih cepat menampilakn angka
- Flowchart
- 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, 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 unsigned long lastTime = 0; // Waktu terakhir pembacaan tombol
if (sw1 == LOW) {
if (millis() - lastTime > 1000) { // Debouncing
lastTime = millis();
digit = 1;
for (int i = 10; i >= 0; i--) {
if (digit == 1) {
digitalWrite(D1, HIGH);
digitalWrite(D2, LOW);
number(i);
digit = 2;
} else {
digitalWrite(D1, LOW);
digitalWrite(D2, HIGH);
number(i);
digit = 1;
}
delay(1000);
}
}
} else if (sw2 == LOW) {
if (millis() - lastTime > 1000) { // Debouncing
lastTime = millis();
digitalWrite(D1, HIGH);
digitalWrite(D2, LOW);
for (int i = 10; i >= 0; i--) {
number(i);
delay(1000); // Delay agar Anda bisa melihat perubahan digit
}
}
}
}
Ketika 1 switch aktif 7-Segment menghitung mundur dari 10
HTML klik disini
Rangkaian Simulasi klik disini
Gambar Simulasi klik disini
Video demo klik disini
Video demo klik disini
Download Datasheet ARDUINO UNO klik disini
Download Datasheet Dipswitch klik disini
Download Datasheet 7 segmen klik disini