Percobaan III Kondisi 2
1. Prosedur [Kembali]
1. Rangkai rangkaian di proteus sesuai dengan kondisi percobaan.
2. Tulis program untuk arduino di software Arduino IDE.
3. Compile program tadi, lalu upload ke dalam arduino.
4. Setelah program selesai di upload, jalankan simulasi rangkaian pada proteus.
2. Tulis program untuk arduino di software Arduino IDE.
3. Compile program tadi, lalu upload ke dalam arduino.
4. Setelah program selesai di upload, jalankan simulasi rangkaian pada proteus.
2. Hardware dan Diagram Blok [Kembali]
3. Rangkaian Simulasi dan Prinsip Kerja [Kembali]
Rangkaian tersebut terdiri dari empat komponen utama: Arduino, 7-Segment 2 digit, Dipswitch, dan Resistor. Dipswitch berfungsi sebagai input untuk Arduino yang terhubung ke kaki A0-A3 Arduino, sementara outputnya ditujukan ke 7-segment 2 digit dengan masing-masing pin terhubung ke pin 4-13 Arduino.
Ketika kedua Dipswitch aktif, Arduino akan menghasilkan output berupa penghitungan pada 7-segment dari angka 15 hingga 0, kemudian mengatur ulang penghitungan ke 15. Mengingat 7-segment ini hanya mampu menampilkan satu digit angka pada satu waktu, kami memprogram Arduino untuk menangani hal ini. Saat penghitung mencapai angka 10 atau lebih, angka puluhan dan angka satuan akan bergantian ditampilkan pada kedua display 7-segment dengan jeda waktu yang singkat.
Namun, jika penghitungannya di bawah 10, 7-segment sebelah kiri akan dimatikan, dan hanya angka pada 7-segment sebelah kanan yang ditampilkan. Jika jumlah Dipswitch yang aktif lebih dari 2 atau kurang dari 2, proses penghitungan tidak akan terjadi.
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
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 }}
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
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 Kondisi 2
-Ketika 2 switch aktif 7-Segment menghitung mundur dari 15
Percobaan 3 Kondisi 2
-Ketika 2 switch aktif 7-Segment menghitung mundur dari 15
- HTML klik disini
- File Rangkaian klik disini
- Video Percobaan klik disini
- Listing Program klik disini
- Datasheet Arduino klik disini
- Datasheet 7-Segment klik disini
- HTML klik disini
- File Rangkaian klik disini
- Video Percobaan klik disini
- Listing Program klik disini
- Datasheet Arduino klik disini
- Datasheet 7-Segment klik disini
Tidak ada komentar:
Posting Komentar