Anda di halaman 1dari 14

LAPORAN PRAKTIK MIKROKONTROLLER DAN ANTARMUKA

PROGRAM STUDI TEKNIK TELEKOMUNIKASI

NAMA PRAKTIKAN

: Rizki Fadhilah
Tasya Sakila
Umi Wahyunny

JURUSAN TEKNIK ELEKTRO


POLITEKNIK NEGERI JAKARTA

P8.1 KEY PRINT V1


1. Cara Kerja
Pada percobaan pertama ini yaitu membuat program untuk menampilkan key yang
ditekan pada serial monitor. Key print v1 ini tidak menggunakan library pada apliksi
arduino. Saat keypad matriks ditekan angka 1 maka pada serial monitor akan menampilkan
angka 1. Hal ini membuktikan bahwa keypad dapat terbaca dan terhubung dengan arduino.
2. Rangkaian Skematik

Gambar2. Rangkaian

3. Analisa Sketch
// Program untuk menampilkan key yang ditekan pada sermon
const int numRows = 4; // jumlah baris (row) keypad
const int numCols = 3; // jumlah kolom (column) keypad
const int debounceTime = 20; // debouncing time
// keymap atau karakter yang muncul saat satu key ditekan
const char keymap[numRows][numCols] =
{
{ '1', '2', '3' } ,
{ '4', '5', '6' } ,
{ '7', '8', '9' } ,
{ '*', '0', '#' }
};
// array yang menetapkan pin-pin untuk baris dan kolom
const int rowPins[numRows] = { 5, 4, 3, 2 }; // baris 0 - 3
const int colPins[numCols] = { 8, 7, 6 }; // kolom 0 - 2
void setup()
{
Serial.begin(9600);
for (int row = 0; row < numRows; row++)
{
digitalWrite(rowPins[row],HIGH); // aktifkan pull-up
}
for (int column = 0; column < numCols; column++)
{
pinMode(colPins[column],OUTPUT); // set pin klm > out
digitalWrite(colPins[column],HIGH); // buat semua klm
// tdk aktif
}
}
void loop()
{
char key = getKey();
if( key != 0)
{ // jika karakter tidak 0 -> key ditekan (valid)
Serial.print("Key ");
Serial.println(key);
}
}
// kembali dgn. key yg. ditekan atau 0 jika tdk ada yg ditekan
char getKey()
{
key = 0; // 0 -> tdk ada key yg ditekan
for(int column = 0; column < numCols; column++)
{
digitalWrite(colPins[column],LOW); // aktifkan kolom
for(int row = 0; row < numRows; row++) // scan semua

// baris jika ada key yg ditekan


{
rowPins[row]) == LOW) //ada yg ditekan?
{
delay(debounceTime); // debouncing
while(digitalRead(rowPins[row]) == LOW)
// tunggu sampai key dilepas
key = keymap[row][column]; // ingat key yg ditekan
}
}
digitalWrite(colPins[column],HIGH); // nonaktifkan kolom
}
return key; // kembalikan key yang ditekan atau 0 jika tdk ada
}

Pada percobaan pertama ini yaitu membuat program untuk menampilkan key yang
ditekan pada serial monitor. Key print v1 ini tidak menggunakan library pada apliksi
arduino, sehingga sketch pada program lebih panjang. Apabila menggunakan library
keypad maka hanya dengan memanggil file tersebut ke dalam sketch, maka sketch keypad
dapat lebih mudah. Saat keypad matriks ditekan angka 1 maka pada serial monitor akan
menampilkan angka 1 juga. Hal ini membuktikan bahwa keypad dapat terbaca dan
terhubung dengan arduino.
Perintah const int numRows = 4; adalah untuk menentukkan jumlah baris (row)
keypad. const int numCols = 3; adalah untuk menentukan jumlah kolom keypad. Apabila
menggunakan keypad matriks yang bukan 4x3 maka numRows dan numCols diganti sesuai
dengan keypad matriks yang akan digunakan. Perintah const int rowPins[numRows] = { 5,
4, 3, 2 }; adalah untuk pin masukan pada baris 0 3 dan const int colPins[numCols] = {
8, 7, 6 }; adalah untuk pin masukan pada kolom 0 2.
Pada void setup() terdapat perintah Serial.begin(9600); yaitu perintah untuk
menampilkan keypad matriks yang ditekan dan akan ditampilkan di serial monitor.
Perintah digitalWrite(rowPins[row],HIGH); adalah untuk menampilkan baris yang terbaca
dan aktif pull-up. Selanjutnya digitalWrite(colPins[column],HIGH); untuk menampilkan
kolom yang terbaca dan membuat semua kolom tidak aktif.
Pada perintah void loop terdapat perintah if( key != 0) berfungsi apabila karakter
tidak 0 dan key yang ditekan (valid). Serial.print("Key "); adalah tampilan pada serial
monitor. Selanjutnya key = 0; adalah menunjukkan bahwa keypad 0 dan tidak ada key
yang ditekan. Apabila keypad yang ditekan tidak 0 maka kolom akan membaca keypad
dan mengscan semua baris jika ada key yg ditekan. Jika baris ada yang ditekan maka terjadi
debouncing. Setelah itu menunggu sampai keypad dilepas dan perintah key =
keymap[row][column]; mengingat key yang ditekan dan menampilkan baris dan kolom
yang terbaca. Ketika kolom x di-ground-kan, saat baris x terbaca LOWmaka

mengindikasikan bahwa switch yang ditekan adalah persilangan antara baris x dan kolomy.
return key; apabila kembalikan key yang ditekan atau 0 jika tidak ada.
P8.2 Key Print v2 (w/ Library Keypad)
1. Cara Kerja
Pada percobaan kedua ini yaitu membuat program untuk menampilkan key yang
ditekan pada serial monitor dengan bantuan library Keypad. Apabila menggunakan library
maka sketch yang digunakan lebih mudah. Saat keypad matriks ditekan angka 1 maka pada
serial monitor akan menampilkan angka 1 . Hal ini membuktikan bahwa keypad dapat
terbaca dan terhubung dengan arduino.
2. Rangkaian Skematik

Gambar2. Rangkaian

3. Analisa Sketch
// Program untuk menampilkan key yang ditekan pada sermon
// tetapi dengan bantuan library Keypad
#include <Keypad.h>
const byte ROWS = 4; // 4 baris
const byte COLS = 3; // 3 kolom
char keys[ROWS][COLS] = {
{'1','2','3'},
{'4','5','6'},
{'7','8','9'},
{'*','0','#'} };
byte rowPins[ROWS] = {5, 4, 3, 2}; // pin baris
byte colPins[COLS] = {8, 7, 6}; // pin kolom
Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins,
ROWS, COLS );
void setup() {
Serial.begin(9600); }
void loop()
{
char key = keypad.getKey();
if (key != NO_KEY)
{
Serial.println(key);
}
}
Pada percobaan kedua ini yaitu membuat program untuk menampilkan key yang
ditekan pada serial monitor dengan bantuan library Keypad. Apabila menggunakan library
maka sketch yang digunakan lebih mudah, tetapi tidak mengetahui dengan jelas cara kerja
dari keypad. Saat keypad matriks ditekan angka 1 maka pada serial monitor akan
menampilkan angka 1 . Hal ini membuktikan bahwa keypad dapat terbaca dan terhubung
dengan arduino.
Karena menggunakan bantuan library keypad maka harus memanggil library
terlebih dahulu yaitu dengan cara #include <Keypad.h>. Selanjutnya perintah const byte
ROWS = 4; adalah untuk menentukkan jumlah baris yang digunakan, harus sesuai dengan
keypad matriks yang digunakan. Sama halnya dengan const byte COLS = 3; adalah untuk
menentukkan jumlah kolom yang digunakan, harus sesuai dengan keypad matriks yang
digunakan. Perintah const int rowPins[numRows] = { 5, 4, 3, 2 }; adalah untuk pin
masukan pada baris 0 3 dan const int colPins[numCols] = { 8, 7, 6 }; adalah untuk pin

masukan pada kolom 0 2. Perintah Keypad keypad = Keypad( makeKeymap(keys),


rowPins, colPins, ROWS, COLS ); adalah mapping pada keypad yaitu rowPins menjadi
rows dan colPins menjadi coloumn.
Pada void setup hanya terdapat perintah Serial.begin(9600); berfungsi untuk
menampilkan angka dari keypad yang ditekan . Selanjutnya pada void loop yaitu terdapat
perintah char key = keypad.getKey(); adalah key yang ditekan dan if (key != NO_KEY)
adalah key yang ditekan secara random atau acak. Terakhir perintah Serial.println(key)
adalah untuk menampilkan key yang ditekan dan akan ditampilkan di serial monitor.

P8.3 Security Lock


1. Cara Kerja
Pada rangkaian ini menggunakan keypad sebagai input untuk security lock dengan
menggunakan LED sebagai indikatornya. Pada arduino di set password 1234, ketika
memasukan angka tersebut pada keypad, LED yang tadinya berwarna merah akan berubah
menjadi warna hijau. Ini menandakan bahwa password yang dimasukan telah benar. Dan
ketika memencet tombol * atau # maka LED akan kembali ke merah artinya passwordnya
menset ulang.
2. Rangkaian Skematik

Gambar Skematik

3. Analisa Sketch
#include <Keypad.h>
char* secretCode = "1234";
int position = 0;
const byte rows = 4;
const byte cols = 3;
char keys[rows][cols] =
{
{'1','2','3'},
{'4','5','6'},
{'7','8','9'},
{'*','0','#'}
};
byte rowPins[rows] = {5, 4, 3, 2};
byte colPins[cols] = {8, 7, 6};
Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins,
rows, cols);
int redPin = 10;
int greenPin = 9;
void setup()
{
pinMode(redPin, OUTPUT);
pinMode(greenPin, OUTPUT);
setLocked(true);
Serial.begin(9600);
}
void loop()
{
char key = keypad.getKey();
Serial.println(key);
if (key == '*' || key == '#')
{
position = 0;
setLocked(true);
}
if (key == secretCode[position])
{
position ++;
}
if (position == 4)
{
setLocked(false);

}
delay(500);
}
void setLocked(int locked)
{
if (locked)
{
digitalWrite(redPin, HIGH);
digitalWrite(greenPin, LOW);
}
else
{
digitalWrite(redPin, LOW);
digitalWrite(greenPin, HIGH);
}
}

Pada bagian pertama, sketch ini menggunakan libary dari Keypad.h. password di
set dengan variable SecretCode = 1234. Pada keypad ini menggunakan 3 kolom dan 4
baris yang di atur dalam bagian inisasi. Rangkaian ini menggunakan LED sebagai indikator
ketika terkunci atau terbuka dengan pin LED merah 10 dan LED hijau 9. Pada bagian void
setup, led diatur sebagai output. Dan menjelaskan bahwa nilai setLocked adalah true.
Pada bagian void loop, variable key akan mendapatkan nilai dari keypad dengan
perintah keypad.getKey, dan hasilnya akan di tampilakn pada serial monitor. Perintah if
digunakan apabila menekan tombol * atau # maka password akan menset kembali seperti
awal, artinya ketika led berada dihijau dan tombol * atau # di tekan maka akan kembali ke
led merah. Karakter yang tersedia bila ingin memasukan password adalah 4, setelah 4
karakter maka karakter ke 5 adalah awal ketika memasukan password. Pada void setLocked
dibuat variable baru yaitu locked ketika kondisi awal terkunci maka lampu merah akan
hidup dan lampu hijau mati, dan ketika dimasukan password dan password itu benar maka
lampu hijau hidup dan lampu merah mati.

P8. DIY ALARM LOCK


1. Cara Kerja
Pada percobaan ini yaitu membuat program untuk menyalakan alarm ketika kode
yang ditekan. Pada saat keadaan terkunci maka speaker akan dalam keadaan diam, namun
saat terbuka maka speaker akan berbunyi. Di percobaan ini menggunakan program yang
ada pada library untuk membuat sketch lebih mudah dan angka yang ditekan akan
ditampilkan pada serial monitor. Rangkaian ini menggunakan keypad sebagai input untuk
security lock menggunakan speaker sebagai indicator. Dan arduino diset dengan password
1234, ketika angka pada keypad ditekan, maka speaker yang semula dalam keadaan diam
akan berbunyi. Untuk mematikan alarm tersebut tekan tombol 8 atau # maka speaker akan
dalam keadaan diam kembali.
2. Rangkaian Skematik

Gambar2. Rangkaian
3. Analisa Sketch
#include <Keypad.h>
char* secretCode="1234";
int position=0;
const byte rows = 4;
const byte cols = 3;
char keys[rows][cols]=
{
{'1','2','3'},
{'4','5','6'},
{'7','8','9'},
{'*','0','#'}
};
byte rowPins[rows]={5,4,3,2};
byte colPins[cols]={8,7,6};
Keypad keypad = Keypad (makeKeymap(keys), rowPins, colPins, rows, cols);
const int speaker=12;
#define NOTE_C 262
#define NOTE_D 294
#define NOTE_E 330
#define NOTE_G 392
#define NOTE_A 440
#define NOTE_F 1000
void setup()

{
setLocked(true);
Serial.begin(9600);
}
void loop()
{
char key=keypad.getKey();
Serial.print(key);
if(key=='*'||key=='#')
{
position=0;
setLocked(true);
}
if (key==secretCode[position])
{
position++;
}
if(position==4)
{
setLocked(false);
}
delay(500);
}
void setLocked(int locked)
{
if(locked)
{
noTone(speaker);
}
else
{
tone(speaker, NOTE_F);
}
}

Dari sketch di atas #include <Keypad.h>, berfungsi untuk memanggil library keypad.h.
char* secretCode="1234"; untuk mengatur password yang akan digunakan. char
keys[rows][cols]={{'1','2','3'}, {'4','5','6'}, {'7','8','9'}, {'*','0','#'} }; merupakan matriks
yang digunakan pada keypad. byte rowPins[rows]={5,4,3,2}; berfungsi untuk memasukan
pin pada baris 0-3 dan byte colPins[cols]={8,7,6}; berfungsi untuk menghubungkan kolom
0-2 dengan arduino. Perintah Keypad keypad = Keypad (makeKeymap(keys), rowPins,
colPins, rows, cols); merupakan mapping pada keyboard yaitu rowpins menjadi row dan

colpins menjadi coloumn. const int speaker=12; untuk membaca bahwa pin 12 terhubung
dengan speaker. #define NOTE_C 262, #define NOTE_D 294, #define NOTE_E 330,
#define NOTE_G 392, #define NOTE_A 440, #define NOTE_F 1000. Merupakan nada
yang akan di hasilkan dengan angka pada setiap note nya yang berarti frequensi yang
dihasilkan. Pada void setup terdapat perintah Serial.begin(9600); yang berfungsi untuk
menampilkan angka pada serial monitor ketika angka pada keypad ditekan.
setLocked(true); berarti setLocked bernilai benar.Pada bagian void loop, variable key akan
mendapatkan nilai dari keypad dengan perintah keypad.getKey, dan hasilnya akan di
tampilakn pada serial monitor. Perintah if digunakan apabila menekan tombol * atau #
maka password akan menset kembali seperti awal, artinya ketika speaker menyala dan
tombol * atau # di tekan maka speaker akan kembali diam. Karakter yang tersedia bila
ingin memasukan password adalah 4, setelah 4 karakter maka karakter ke 5 adalah awal
ketika memasukan password. Pada void setLocked dibuat variable baru yaitu locked
kertika kondisi awal terkunci maka speaker akan dian , dan ketika dimasukan password
dan password itu benar maka speaker akan menyala sesuai dengan nada dan frequensi yang
diatur,

KESIMPULAN
- Keypad matriks adalah sekumpulan push button switch yang ditempatkan pada suatu
papan kecil (pad), disusun dalam bentuk matriks, dan mewakili berbagai angka,
huruf, atau simbol.
- Proses groundng dan scannng dilakukan dengan struktur pengulangan.
- Susunan matriks menyebabkan penghematan jumlah pin tetapi menambah kerumitan
pembacaannya.
- Library keypad membuat sketch lebih mudah dan cara memanggil library yaitu
dengan perintah #include <Keypad.h>.
- ketika password yang dimasukkan itu benar maka lampu hijau menyala dan lampu
merah mati.
- ketika dimasukan password dan password itu benar maka speaker akan menyala sesuai
dengan nada dan frequensi yang diatur,

Anda mungkin juga menyukai