Laporan Akhir 2 - M1




1. Prosedur
[Kembali]

1. Rangkai rangkaian pada alat sesuai dengan modul.
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 rangkaian.

2. Hardware dan Diagram Blok [Kembali]

Hardware :



1. Arduino
2. Dipswitch


3. Seven Segment 2 Digit
4. Breadboard



Diagram Blok:

                





3. Rangkaian Simulasi dan Prinsip Kerja [Kembali]









Prinsip Kerja :

    Keypad 4 baris * 3 kolom terhubung dengan arduino sebagai input . Double seven segment dengan arduino sebagai output. Prinsip kerjanya adalah mikrokontroler akan melakukan scanning terus menerus ke key, sampai key ditekan, maka scan akan terhenti dan mikrokontroler akan melakukan identifikasi posisi dari key dengan pembacaan RnCn ketika salah satu key ditekan. Lalu arduino akan memproses inputan pada key dengan kodingan yang telah ditetapkan dan akan mengirimkan data ke double seven segment sebagai output. Output yang ditampilkan akan sesuai dengan apa yang tertulis pada key di keypad dari angka 0 - 9, sedangkan untuk "* dan #" tidak bisa ditampilkan di seven segment. Karakter seperti '*' dan '#' bukan karakter standar yang dapat ditampilkan oleh seven segmen. Karakter tersebut tidak ada dalam set karakter yang didukung oleh display seven segmen secara default.

4. Flowchart dan Listing Program [Kembali]

Flowchart :



Listing Program :

//Percobaan 2
#include <Keypad.h>
const byte ROWS = 4; // Four rows
const byte COLS = 4; // Fou columns
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}; // Connect to the keypad row pins
byte colPins[COLS] = {10, 11, 12}; // Connect to the keypad column pins
Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS);
const int segmentPins[] = {2, 3, 4, 5, 6, 7, 8, 9}; // Connect to the seven-segment display segment pins
void setup() {
  Serial.begin(9600);
for (int i = 0; i < 8; i++) {
pinMode(segmentPins[i], OUTPUT);
}
}
void loop() {
 
char key = keypad.getKey();
if (key) {
displayCharacter(key);
Serial.print(key);
delay(1000);
clearDisplay();
}
}
void displayCharacter(char ch) {
// Define segment patterns for each digit (0-9)
// Example: Displaying '1'
// A
// F B
// G
// E C
// D
byte patterns[][9] = {
{0, 0, 0, 0, 0, 0, 1, 1}, // 0
{1, 0, 0, 1, 1, 1, 1, 1}, // 1
{0, 0, 1, 0, 0, 1, 0, 1}, // 2
{0, 0, 0, 0, 1, 1, 0, 1}, // 3
{1, 0, 0, 1, 1, 0, 0, 1}, // 4
{0, 1, 0, 0, 1, 0, 0, 1}, // 5
{0, 1, 0, 0, 0, 0, 0, 1}, // 6
{0, 0, 0, 1, 1, 1, 1, 1}, // 7
{0, 0, 0, 0, 0, 0, 0, 1}, // 8
{0, 0, 0, 0, 1, 0, 0, 1}, // 9
{0, 0, 0, 0, 0, 1, 0, 1}, //a
{1, 1, 0, 0, 0, 0, 0, 1}, //b
{0, 1, 1, 0, 0, 0, 1, 1}, //c
{1, 0, 0, 0, 0, 1, 0, 1}, //d
};
if ((ch >= '0' && ch <= '9') || (ch >= 'A' && ch <= 'D')) {
// Get the digit index (0-9) from the character
int index = (ch <= '9')? (ch - '0') : (ch - 'A' + 10);
// Write the pattern to the segment pins
for (int i = 0; i < 7; i++) {
digitalWrite(segmentPins[i], patterns[index][i]);
}
}
}
void clearDisplay() {
for (int i = 0; i < 8; i++) {
digitalWrite(segmentPins[i], HIGH);
}
}

5. Kondisi[Kembali]

Percobaan 2 : Keypad dan Seven Segment

6. Video Demo [Kembali]





7. Soal Analisa [Kembali]

3. Jelaskan proses operasi 8 bit pada LCD, dan proses operasi 4 bit pada LCD tanpa modul komunikasi I2C. 
    
    Jawab :

   - Pada 8 bit :
        Mikrokontroller dihubungkan ke pin d0 - d7 di LCD untuk mnetransmisikan data ke LCD. Data yang dikirim langsung diikirim sebanyak 8 bit ke LCD, lalu LCD akan menampilkan data tersebut pada layar, selama ada supply power yang masuk ke LCD dan RW berlogika 0, atau dalam keadaan tulis

   - Pada 4 bit :
         Mikrokontroller dihubungkan ke pin d4 - d7 di LCD untuk mnetransmisikan data ke LCD. Jumlah bit data yang dikirm sebanyak 4 bit, lalu dikirim lagi 4 bit. LCD menerima kedua set 4 bit data dan menyusunnya menjadi 8 bit dengan menggabungkan kedua set data menjadi satu. Lalu LCD akan menampilkan informasi yang diterima pada layar, selama LCD mendapat supply power dan RW berlogika 0

4. Mengapa pemakaiaan switch yang dideklarasikan sebagai INPUT_PULLUP pada Void setup () tidak memakai resistor pullup ataupun pulldown? Jelaskan kenapa

    Jawab :

    Pada kode yang diberikan, fungsi pinMode() dipanggil dengan mode INPUT_PULLUP untuk mengatur pin DIP switch sebagai input dengan resistor pull-up internal diaktifkan. Ini berarti bahwa resistor pull-up internal yang terdapat dalam mikrokontroler Arduino akan diaktifkan secara otomatis untuk setiap pin yang didefinisikan sebagai INPUT_PULLUP.

    Resistor pull-up internal menyediakan jalur arus menuju ke sumber tegangan (biasanya VCC atau 5V pada Arduino) melalui resistor internal dengan resistansi yang relatif tinggi. Ketika saklar diposisikan pada kondisi "tidak ditekan" atau "open", pin input terhubung ke jalur tegangan tinggi (VCC) melalui resistor pull-up internal, sehingga membaca nilai logika tinggi (HIGH).



8. Download File [Kembali]

HTML Download
File Rangkaian Download
Video Percobaan Download
Listing Program Download
Datasheet Arduino Download
Datasheet Dipswitch Download
Datasheet seven segment Download
















Tidak ada komentar:

Posting Komentar

                                                                 BAHAN PRESENTASI UNTUK MATAKULIAH                                          ...