1. Prosedur [Kembali]
- Rangkai semua komponen
- Buat program di aplikasi arduino IDE
- Setelah selesai masukkan program ke arduino
- Jalankan program pada simulasi dan cobakan sesuai kondisi
- Rangkaian Simulasi
- Prinsip Kerja
Dalam percobaan ketiga dengan Kondisi 1, diminta agar ketika satu switch diaktifkan, 7 segment akan menghitung mundur dari 10. Dalam hal ini, pin 1, 2, 3, dan 4 dari dipswitch terhubung ke pin A0, A1, A2, dan A3 di Arduino, sedangkan pin 5, 6, 7, dan 8 dari dipswitch terhubung ke ground. Output akan ditampilkan pada 7 segment yang terhubung ke Arduino Uno. Pada output 1 dan 2 pada 7 segment, resistor digunakan agar logikanya menjadi 0 (biru) atau 1 (merah), sedangkan jika tidak ada resistor, logikanya akan menjadi tidak terdefinisi (abu)..
- Listing Program
#define a 2
#define b 3
#define c 4
#define d 5
#define e 6
#define f 7
#define g 8
#define dp 9
#define D1 10
#define D2 11
#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 <= 10) {
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 = 2; // 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 = 11; i >= 0; i--) {
switch (digit) {
case 1:
digitalWrite(D1, HIGH);
digitalWrite(D2, LOW);
number(i);
digit = 2;
break;
case 2:
digitalWrite(D1, LOW);
digitalWrite(D2, HIGH);
number(i);
digit = 1;
break;
}
delay(1000);
}
}
} 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
}
}
}
}
Percobaan 3 Kondisi 1 diminta ketika 1 switch aktif 7 segment menghitung mudur dari 10.
HTML klik disini
- Simulasi klik disini
- Gambar Simulasi klik disini
- Video Simulasi klik disini
- Listring Program klik disini
- Video Simulasi klik disini
- Listring Program klik disini
.png)

Tidak ada komentar:
Posting Komentar