Percobaan 3 Kondisi 4
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]
Buat program sesuai dengan kondisi yaitu "Ketika 1 switch aktif 7-segment akan menampilkan kombinasi 2,0,0,3 setelah hitung mundur dari 3". Pada percobaan ini, mengguanakn dip switch sebagai input dan terhubung ke kaki arduino (A0-A3), dan 7-segment sebagai output yang terhubung pada kaki (2,3, dan 6-13), serta arduino sebagai mikrokontrolernya. Kemudian upload program yang dibuat dari arduino ide ke arduino pada proteus. Sekanjutnya, run rangkaian pada proteus, pada kondisi semua switch off maka 7-segment hanya akan menampilkan hitung mundur dari 3, dan jika salah satu dari switch on maka 7-segment nantinya akan menampilkan hitung mundur 3 kemudian kombinasi 2,0,0,3 dan akan seperti itu jika salah satu dari switch on/aktif.
Flowchart :
Listing Program:
#define D1 2#define D2 3#define Dsw1 A0#define Dsw2 A1#define Dsw3 A2#define Dsw4 A3
bool switches[] = {Dsw1, Dsw2, Dsw3, Dsw4};int digits[] = {D1, D2};int segments[] = {5, 6, 7, 8, 9, 10, 11, 12};int digitPatterns[][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 < sizeof(segments) / sizeof(segments[0]); i++) { pinMode(segments[i], OUTPUT); } for (int i = 0; i < sizeof(digits) / sizeof(digits[0]); i++) { pinMode(digits[i], OUTPUT); } for (int i = 0; i < sizeof(switches) / sizeof(switches[0]); i++) { pinMode(switches[i], INPUT_PULLUP); } Serial.begin(9600);}
void number(int display) { if (display >= 0 && display <= 9) { for (int i = 0; i < sizeof(segments) / sizeof(segments[0]); i++) { digitalWrite(segments[i], digitPatterns[display][i]); } }}
void loop() { bool switchStates[4]; for (int i = 0; i < sizeof(switches) / sizeof(switches[0]); i++) { switchStates[i] = digitalRead(switches[i]); }
// Hitungan mundur dari 3 ke 0 sebelum switch ditekan if (switchStates[0] && switchStates[1] && switchStates[2] && switchStates[3]) { for (int i = 3; i >= 0; i--) { digitalWrite(D1, HIGH); digitalWrite(D2, LOW); number(i); // Menampilkan angka yang sedang dihitung delay(500); // Delay selama 0.5 detik } } // Menampilkan kombinasi angka 2, 0, 0, dan 3 setelah satu switch diaktifkan else if (!switchStates[0] || !switchStates[1] || !switchStates[2] || !switchStates[3]) { int digitsToShow[] = {2, 0, 0, 3}; for (int i = 0; i < 4; i++) { digitalWrite(digits[i % 2], i < 2 ? HIGH : LOW); // Switch antara D1 dan D2 number(digitsToShow[i]); // Menampilkan angka sesuai dengan array digitsToShow delay(500); // Delay selama 0.5 detik } }}
Flowchart :
Listing Program:
#define D1 2
#define D2 3
#define Dsw1 A0
#define Dsw2 A1
#define Dsw3 A2
#define Dsw4 A3
bool switches[] = {Dsw1, Dsw2, Dsw3, Dsw4};
int digits[] = {D1, D2};
int segments[] = {5, 6, 7, 8, 9, 10, 11, 12};
int digitPatterns[][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 < sizeof(segments) / sizeof(segments[0]); i++) {
pinMode(segments[i], OUTPUT);
}
for (int i = 0; i < sizeof(digits) / sizeof(digits[0]); i++) {
pinMode(digits[i], OUTPUT);
}
for (int i = 0; i < sizeof(switches) / sizeof(switches[0]); i++) {
pinMode(switches[i], INPUT_PULLUP);
}
Serial.begin(9600);
}
void number(int display) {
if (display >= 0 && display <= 9) {
for (int i = 0; i < sizeof(segments) / sizeof(segments[0]); i++) {
digitalWrite(segments[i], digitPatterns[display][i]);
}
}
}
void loop() {
bool switchStates[4];
for (int i = 0; i < sizeof(switches) / sizeof(switches[0]); i++) {
switchStates[i] = digitalRead(switches[i]);
}
// Hitungan mundur dari 3 ke 0 sebelum switch ditekan
if (switchStates[0] && switchStates[1] && switchStates[2] && switchStates[3]) {
for (int i = 3; i >= 0; i--) {
digitalWrite(D1, HIGH);
digitalWrite(D2, LOW);
number(i); // Menampilkan angka yang sedang dihitung
delay(500); // Delay selama 0.5 detik
}
}
// Menampilkan kombinasi angka 2, 0, 0, dan 3 setelah satu switch diaktifkan
else if (!switchStates[0] || !switchStates[1] || !switchStates[2] || !switchStates[3]) {
int digitsToShow[] = {2, 0, 0, 3};
for (int i = 0; i < 4; i++) {
digitalWrite(digits[i % 2], i < 2 ? HIGH : LOW); // Switch antara D1 dan D2
number(digitsToShow[i]); // Menampilkan angka sesuai dengan array digitsToShow
delay(500); // Delay selama 0.5 detik
}
}
}
Percobaan 3 Kondisi 4 : "Ketika 1 switch aktif 7-segment akan menampilkan kombinasi 2,0,0,3 setelah hitung mundur dari 3"
7. Download File [Kembali]
HTML klik disini
File Rangkaian klik disini
Video Percobaan klik disini
Listing Program klik disini
datasheet arudino klik disini
Datasheet LED klik disini
Tidak ada komentar:
Posting Komentar