Percobaan 2 Keypad dan 7-Segment
1. Rangkai semua komponen sesuai kondisi yang dipilih
2. buat program di aplikasi arduino IDE
3. setelah selesai masukkan program ke arduino di proteus
4. jalankan program pada simulasi dan cobakan sesuai dengan modul dan kondisi
5. Selesai
2. Hardware dan diagram blok
[Kembali]
1. Arduino Uno
2. Push Button
3. Power Supply
Diagram Blok :
3. Rangkaian Simulasi dan Prinsip kerja
[Kembali]
→ Gambar Rangkaian Sebelum Disimulasikan
→ Gambar Rangkaian Setelah Disimulasikan
PRINSIP KERJA
Saat program dijalankan dan di masukan ke arduino, selanjutnya, program terus berjalan dalam loop utama, menunggu input dari pengguna. jika ada input dari button akan menyebabkan led hidup, terdapat 2 kondisi dan dimana sebelum kondisi ini dilakukan maka semua led akan di-low-kan terlebih dahulu.
Sesuai dengan kondisinya bahwa button baris 2 kolm 3 akan menampilkan angka 7 pada seven segmen. Sebelum menampilkannya maka running terlebih dahulu proteus, lalu tekan button. inputan dari button akan terbaca oleh arduino dan arduino akan menyesuaikan kondisi yang terbaca melalui program. Setelah program terbaca maka output akan keluar dari arduino memasuki 7-segmen dimana akan ditampilkan angka 7 dimana pada 7-segmen yang berlogika high itu adalah segmen A,B,C, dan D.
4. FlowChart [Kembali]
#include <Keypad.h>
const byte ROWS = 4; //jumlah baris pada keypad
const byte COLS = 4; //jumlah kolom pada keypad
char keys[ROWS][COLS] = {
{'1','2','3','A'},
{'4','5','6','B'}, // Keypad 4x4 layout
{'7','8','9','C'},
{'*','0','#','D'}
};
byte rowPins[ROWS] = {A4, A3, A2, A1}; //pin yang terhubung dengan baris keypad
byte colPins[COLS] = {10, 11, 12, 13}; //pin yang terhubung dengan kolom keypad
Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS);
// Pins untuk seven segment display
const int segmentPins[] = {9, 8, 7, 6, 5, 4, 3, 2}; // Perhatikan tanda kurung kurawal yang tidak perlu
const int numSegments = 7; // Harusnya 8 karena jumlah pin seven segment adalah 8
void setup() {
for (int i = 0; i < numSegments; i++) {
pinMode(segmentPins[i], OUTPUT);
digitalWrite(segmentPins[i], LOW);
}
}
void loop() {
char key = keypad.getKey();
if (key != NO_KEY) {
displayCharacter(key);
}
}
void displayCharacter(char key) {
switch (key) {
case '0':
displaySegments(true, true, true, true, true, true, false);
break;
case '1':
displaySegments(false, true, true, false, false, false, false);
break;
case '2':
displaySegments(true, true, false, true, true, false, true);
break;
case '3':
displaySegments(true, true, true, true, false, false, true);
break;
case '4':
displaySegments(false, true, true, false, false, true, true);
break;
case '5':
displaySegments(true, false, true, true, false, true, true);
break;
case '6':
displaySegments(true, true, true, false, false, false, false);
break;
case '7':
displaySegments(true, false, true, true, true, true, true);
break;
case '8':
displaySegments(true, true, true, true, true, true, true);
break;
case '9':
displaySegments(true, true, true, true, false, true, true);
break;
case 'A':
displaySegments(true, true, true, false, true, true, true);
break;
case 'B':
displaySegments(false, false, true, true, true, true, true);
break;
case 'C':
displaySegments(true, false, false, true, true, true, false);
break;
case 'D':
displaySegments(false, true, true, true, true, false, true);
break;
default:
turnOffSegments();
break;
}
}
void displaySegments(bool a, bool b, bool c, bool d, bool e, bool f, bool g) {
bool segments[] = {a, b, c, d, e, f, g};
for (int i = 0; i < numSegments; i++) {
digitalWrite(segmentPins[i], segments[i] ? HIGH : LOW);
}
}
void turnOffSegments() {
for (int i = 0; i < numSegments; i++) {
digitalWrite(segmentPins[i], LOW);
}
}
b. Flowchart
5. Kondisi [Kembali]Kondisi : Percobaan 2 Kondisi 5
Button baris 2 kolom 3 menampilkan angka 7
6. Video Simulasi [Kembali]
7. Download File
[Kembali]
Download Simulasi Rangkaian Klik disini
Download HTML Klik disini
Download Video Simulasi Klik disini
Download Datasheet ARDUINO UNO klik disini
Tidak ada komentar:
Posting Komentar