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
Pada percobaan ketiga dalam Kondisi 1, diminta agar ketika satu switch diaktifkan, 7 segmen akan menghitung mundur dari 10. Dalam percobaan ini, digunakan dipswitch di mana pin 1, 2, 3, dan 4 dipswitch terhubung ke pin A0, A1, A2, dan A3 pada Arduino, sedangkan pin 5, 6, 7, dan 8 dipswitch terhubung ke ground. Output akan ditampilkan pada 7 segmen yang terhubung ke Arduino Uno. Pada output 1 dan 2 pada 7 segmen, diberikan resistor agar logikanya menjadi 0/1 (biru/merah) pada 7 segmen. Jika tidak ada resistor, maka logikanya tidak aktif (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
Tidak ada komentar:
Posting Komentar