TP M2 P3 K3 Prak uP uC
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
2. Hardware dan diagram blok [Kembali]
- Rangkaian Simulasi
Pada rangkaian diatas, DIP Switch sebagai input dan double sevensegment sebagai outputnya. Ketika 3 dari 4 dip switch dalam keadaan ON maka arduino akan menjalankan program menghitung maju dari 0 - 10. Dimana untuk angka satuan maka yang aktif pin 4 arduino atau kaki 1 pada seven segment sedangkan untuk angka 10 akan menghidupkan pin 4 dan 5 arduino untuk menampilkan 1 sebagai puluhan dan 0 sebagai satuan.
- 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(number, D1); // Menampilkan angka pada digit pertama (D1)
} else if (number == 10){
digitalWrite(D1, HIGH);
digitalWrite(D2, HIGH);
int tensDigit = 1; // Digit puluhan
int unitsDigit = 0; // Digit satuan
displayDigit(tensDigit, D2); // Menampilkan digit puluhan pada digit kedua (D2)
delay(100);
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 activeSwitches = sw1 + sw2 + sw3 + sw4;
static unsigned long lastTime = 0; // Waktu terakhir pembacaan tombol
static int count = 0; // Counter untuk digit
if (activeSwitches == 3) { // Jika tiga di antara empat dip switch aktif
if (millis() - lastTime > 1000) { // Debouncing
lastTime = millis();
if (count <= 10) {
displayNumber(count);
count++;
}
}
} else {
count = 0; // Reset count jika tidak ada tiga tombol yang ditekan
}
}
Percobaan 3 Kondisi 3 : Ketika 3 switch aktif 7-Segment menghitung maju hingga 10
- HTML klik disini
- Rangkaian Simulasi klik disini
- Video Simulasi klik disini
- Listring Program klik disini
- Listring Program klik disini
Tidak ada komentar:
Posting Komentar