Demo Video:
Skema Wiring
List Program:
/* Password for electronics key by: Aan Darmawan date : July 2011 web: http://valfa.blogspot.com */ // include the library code: #include <LiquidCrystal.h> #include <Keypad.h> LiquidCrystal lcd(12, 11, 5, 4, 3, 2); const byte ROWS = 4; //four rows const byte COLS = 4; //four columns const int nada[8]={ 131,175,262,349,523,698,1047,1397}; char keys[ROWS][COLS] = { { '1','2','3','A' } , { '4','5','6','B' } , { '7','8','9','C' } , { '*','0','#','D' } }; char berita[16]={ ' ',' ',' ',' ', ' ',' ',' ',' ', ' ',' ',' ',' ', ' ',' ',' ',' '}; char tampil[16]={ ' ',' ',' ',' ', ' ',' ',' ',' ', ' ',' ',' ',' ', ' ',' ',' ',' '}; byte rowPins[ROWS] = { 14,15,16,17}; //connect to the row pinouts of the keypad byte colPins[COLS] = { 9, 8, 7, 6}; //connect to the column pinouts of the keypad Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS ); byte k=4,n=0; String jawab,kunci="123456"; void setup() { pinMode(13,OUTPUT); pinMode(10,OUTPUT); digitalWrite(13,LOW); lcd.begin(16, 2); lcd.print("Password:"); } void loop() { //check key pressed char key = keypad.getKey(); if (key != NO_KEY){ berita[n]=key; tampil[n]='*'; tone(10, nada[k],250); n++; if(n>15){ for(n=1;n<=15;n++)berita[n-1]=berita[n]; n=15; berita[n]=' '; } lcd.setCursor(0, 1); lcd.print(tampil); noTone(4); } if(key=='#'){ // jawaban 6 digit pertama yang masuk dipindah ke string for(n=0;n<6;n++)jawab+=berita[n]; if(jawab==kunci){ digitalWrite(13,HIGH); lcd.setCursor(0, 1); lcd.print("Access Granted !"); tone(10, nada[7],1000); } else { lcd.setCursor(0, 1); lcd.print("Access Denied ! "); tone(10, nada[1],500); } delay(1500); for(n=0;n<=15;n++){ berita[n]=' '; tampil[n]=' '; } lcd.setCursor(0, 1); lcd.print(tampil); n=0; jawab=String(); } else digitalWrite(13,LOW); delay(100); }
71 comments:
ini pake bahasa apa ya gan?
maaf ane masih nyubi neh.hehe..
Pake C++ Arduino Gan....
gan bole tnya,,, saya dah coba program nya dan sukses tapi,, pengen coba led nya d ganti sservo yg 180 drajat,tp g sukses2,, mungkin bisa bantu untuk pin dan program nya,, terima kasih
@andre:
pin 10 yang sebagai tone ke speaker dipindah ke pin lain misah ke pin 13. kemudian pin 10 digunakan sebagai pengendali servo.
semua tone yang berkaitan dengan pin 10 di ganti dulu dengan nomor pin baru, kemudian
kurang lebih programnya di ubah sbb:
pada bagian include ditambahkan
#include
Servo mservo;
pada bagian setup() ditambahkan:
mservo.attach(10);
kemudian pada loop() instruksi:
digitalWrite(13,HIGH) diganti menjadi
mservo.write(10,180);
digitalWrite(13,LOW) diganti menjadi
mservo.write(10,0);
selamat mencoba....
koreksi:
tertulis:
#include
seharusnya:
#include "Servo.h"
kemudian tambahkan instruksi di bawah mservo.write(.....,.....) dengan delay(20); untuk memastikan proses gerak servo selesai
udah gan,, cmn klo buat kunci pintu kan musti bolak balik, pngennna 2 password satu untuk 0-180 yg satunya 180-0,, ato nggak 1 password bisa 2x ,, saat pertama password benar d pakai 0-180 lalu saat password benar d tkan lagi jadi 180-0,, bagaimana y?
oh iya untuk arduino 1.0.3 bisanya, mservo.write (180) jd pin g d tulis lg,, mungkin sudah d attach,, trima kasih,, gan
@andrek: thanks koreksinya, betul harusnya mservo.write(sudut)....:-)
untuk passwordnya 1 tapi sekali on (0 - 180) ,lalu sekali off (180 -0) coba tambahkan suatu variabel penanda (variable switch) misalkan nama variabel sw, set awal sw=0 yang menandakan kondisi di 0
buat cek kondisi sbb:
kalau password benar dan sw =0 putar servo 0-180 dan sw diset jadi = 1 (sw=1)
kalau password benar dan sw =1 putar servo 180-0 dan sw diset jadi = 0 (sw=0)
mudah2an membantu ilustrasi ini... selamat eksperimen...
nah itu gan masih bingung penempatan + deklarasinya variable switch,, maklium sangat awam bahasa c,, dr kmaren kepikiran seperti itu cmn servo jalan cmn d 0-180 ,, mau bkn lg ekh malah servo rusak,,, jujur ini buat tugas,,,stlah d pencet lagi baru password malah melanjut kan 180,, mungkin butuh servo yg 360 lebih enak,, bisa 0-180 , 180-360,, mungkin bisa bantu lebi lanjut untuk servo 180,,, trima kash sbanyak2 nya,, gan
mas mau tanya klo ini artinya apa
char keys[ROWS][COLS] = {
{
'1','2','3','A' }
,
{
'4','5','6','B' }
,
{
'7','8','9','C' }
,
{
'*','0','#','D' }
};
char berita[16]={
' ',' ',' ',' ',
' ',' ',' ',' ',
' ',' ',' ',' ',
' ',' ',' ',' '};
char tampil[16]={
' ',' ',' ',' ',
' ',' ',' ',' ',
' ',' ',' ',' ',
' ',' ',' ',' '};
sama yang ini mas
char key = keypad.getKey();
if (key != NO_KEY){
berita[n]=key;
tampil[n]='*';
tone(10, nada[k],250);
n++;
if(n>15){
for(n=1;n<=15;n++)berita[n-1]=berita[n];
n=15;
berita[n]=' ';
}
lcd.setCursor(0, 1);
lcd.print(tampil);
noTone(4);
trimakasih
// mendefinisikan var key sesuai dengan peta posisi keypad
char keys[ROWS][COLS] = {
{
'1','2','3','A' }
,
{
'4','5','6','B' }
,
{
'7','8','9','C' }
,
{
'*','0','#','D' }
};
// var berita untuk menampung data password yang di ketik melalui keypad sedangan var tampil untuk menampilkan ke lcd dalam bentuk char "*"
char berita[16]={
' ',' ',' ',' ',
' ',' ',' ',' ',
' ',' ',' ',' ',
' ',' ',' ',' '};
char tampil[16]={
' ',' ',' ',' ',
' ',' ',' ',' ',
' ',' ',' ',' ',
' ',' ',' ',' '};
sama yang ini mas
// tunggu masukan data dari keypad yg ditekan , kemudian di tampung di var berita (maks 16 karakter) sedangkan untuk ditampilkan di lcd bentuk "*" pakai variabel tampil
char key = keypad.getKey();
if (key != NO_KEY){
berita[n]=key;
tampil[n]='*';
tone(10, nada[k],250);
n++;
if(n>15){
for(n=1;n<=15;n++)berita[n-1]=berita[n];
n=15;
berita[n]=' ';
}
lcd.setCursor(0, 1);
lcd.print(tampil);
noTone(4);
trimakasih
if(key=='#'){
// jawaban 6 digit pertama yang masuk dipindah ke string
for(n=0;n<6;n++)jawab+=berita[n];
if(jawab==kunci){
digitalWrite(13,HIGH);
lcd.setCursor(0, 1);
lcd.print("Access Granted !");
tone(10, nada[7],1000);
}
else {
lcd.setCursor(0, 1);
lcd.print("Access Denied ! ");
tone(10, nada[1],500);
}
delay(1500);
for(n=0;n<=15;n++){
berita[n]=' ';
tampil[n]=' ';
}
lcd.setCursor(0, 1);
lcd.print(tampil);
n=0;
jawab=String();
}
gan mau tanya maksud program diatas saya kurang paham.
@Abdul R: intinya apabila tombol # ditekan maka diambil 6 karakter pertama dari var berita dan disimpan di var jawab , jika isi var jawab sama dengan kunci maka acess granted jika tidak access debnied, setelah itu var berita dan var tampil dikosongkan
Salam gan.
gimana kalomau pake door lock?
circuitnya gimana? sama codenya.
mohon diajarin.
@Najoe: tinggal ganti Rangkain LED+Resistor dengan Rele 5V, on/off door lock nya dikendalikan oleh rele..
Silahkan berkeksperimen... :-)
misi gan, kodingnya udahh dicoba & bisa. tapi mau ditambah pake sms gateway modem wavecom biar bisa buka dari hp, masih bingung kodingnya. mohon pencerahannya
tidak usah bingung, cari topik "arduino dan modem wavecom untuk sms gateway" di paman google, sudah ada yang membahasnya, pelajari.... kemudian eksperimen menggabungkannya.... selamat berkarya...
saya coba ganti outputnya ke selenoid 5volt kok ga bisa ya? mohon dibantu
umumnya selonoid membutuhkan arus besar, jadi harus pakai penguat dulu pada output misalnya pakai transistor atau IC driver uln2803 dan sumber teganganpun harus memadai
Permisi gan... Ane dah coba programnya, ane belom berhasil gan... Denied terus... Ane coba ganti led indikator berhasilnya pake servo tapi belum bisa juga mohon bantuanya dong gan... Apa karena ane pake arduino uno?
@Catur, menggunakan Arduino Uno juga bisa saja, passwordnya 123456 kan? coba cek lagi sketch programnya...
slmt mlm pak, sy mau tny,,
sy cba ganti keypad ini dgn remote kntrol utk kndalikn bbrpa led. pin 13 utk kalibrasi (led kedip 5detik) & pin lainny(misal pin12) utk indikator apbila pasword benar, led di pin12 ON.
Nah, yg jdi prtnyaan sy, knp led di pin13 nyalanya terang tp di pin12(indikatorny) sangat redup y???
dari semua pin yg sy cba(trmasuk analog) jg tdk bsa, ttap redup. hny pin13 yg normal.
:D
Tmksh pak..
@DeBuMi: bisa kirimkan skema dan sketch programnya ke email, agar bisa saya pelajari? kirim ke valfa007@gmail.com
gan, klo ada tanda ini "avrdude: stk500_getsync(): not in sync: resp=0x00" masalahnya apa dan solusinya gimana gan??
cek serial komunikasinya (COM) sudah sinkrond engan setting IDE arduino? biasanya masalah usb to serial yg tidak "match" atau coba saat upload, setelah keluar informasi berapa byte hasil compilenya di layar monitor, tekan tombol reset pada arduino nya.
Pak mau tanya, kalau saya mau sambungin ke Relay yang bisa digunakan untuk menghidupkan perangkat arus AC, seperti Lampu, TV, Kipas, dll. Bagaimana rangkaian Relaynya pak? Lalu relay yang digunakan type apa dan ukuran apa?
Terima Kasih Pak,,
@Galang: saya pernah jawab pertanyaan ini pada post sebelumnya, coba cari post sebelumnya, intinya: ganti Rangkain LED+Resistor dengan Rele 5V, on/off perangkat AC nya dikendalikan lelaui rele
gan, minta library keypad dan password arduino dong, thx
@Denny : Silahkan sedot di
https://www.dropbox.com/s/v2mx3qyj1tjb1yl/kpd_pass.rar
gan, boleh minta list komponen ap saja yang di perlukan ?
@Mhd.Irfan: lihat langsung di wiring diagram di atas, saya rasa sudah jelas... :-)
speaker nya berapa volt ya?
kalau speaker satuannya Ohm, bisa gunakan speaker 4 ohm,8 ohm ataupun 16 ohm kekuatan dayanya bebas, sederhananya pakai saja speaker yg sering digunakan di komputer
maaf gan mau tanya kalo mau buat LED di pin 13 nyala terus dan mati kalau kita tekan "*" gimana caranya?? mohon bantuanya gan. terimakasih
@iwan, awalnya inisialisasi Dengan digitalWrite(13,HIGH) agar Led Nyala, selanjutnya saat menekan '*' set jadi LOW agar padam.
kurang lebih cara untuk memadamkannya sbb:
:
:
char key = keypad.getKey();
if (key=='*'){
digitalWrite(13,LOW);
}
:
:
selamat eksperimen....
mas, mau tanya dong, kalau bikin program biar arduino bisa baca dan kirim lagi data kayak gini, "$GPL,12.000,N,009.98,S,100.90"
gmn? ngambil data nya tiap yg dibatasi ama koma
@Heru: pelajari teknik parsing data (google aja banyak koq yang bahas tentang teknik parsing)
lalu pelajari fungsi String yang ada di IDE arduino, bisa lihat contoh2 nya di menu File->Examples->Strings, saya rasa bisa gunakan fungsi indexof() yang dikombinasikan dengan substring()
Selamat bereksperimen....
pak, mau nanya kalau di sambungkan ke solenoid door lock, butuh relay apa gmn? kalau butuh, tipe relay yg bagaiamana?
terimakasih.
@anggi:betul pakai relay 5V,solenoid relaynya sambungkan ke pin 13 arduino dan ground (paralelkan dengan dioda 1n4002,anodanya hubungkan ke ground,katodanya ke pin 13), kemudian pakai sumber tegangan solenoid doorlock nya terpisah,yang diserikan ke switch relay dalam kondisi Normaly Open.
mas, saya mau nanya? saya tambahkan sebuah code program sensor pir jika password benar, tetapi sensor tersebut tidak membaca mas, kecuali kita menekan tombol *. Pdahal seharusnya sensor itu lngsung mendeteksi secara otomatis. Bagaimana cara mengatasi itu mas? Makasih mas.
@Frisca: coba tampilkan list program tambahannya, supaya bisa kita diskusikan penyelesaiannya.
Permisi agan Aan, mau tanya niih..
Jika suatu waktu kita lupa dengan password yang sudah kita buat, bagaimana cara mengganti password yang lama dengan mengganti password yang baru dan program yang mana yang harus di tambahkan?
Dengan catatan untuk mengubah password yaitu hanya menekan tombol “*” pada keypad dan selanjutnya menekan 6 buah digit kode baru dan diakhiri dengan menekan tombol “#” pada keypad, jadi kelebihan pada alat agan terdapat pada fitur penggantian dan penyimpanan kode password baru, dimana penggantian kode password baru ini tidak diperlukan pemograman ulang melalui komputer namun dapat dilakukan secara langsung dari keypad dan ketika Arduino dimatikan (tidak diberi suplay) kode password yang sudah disimpan tidak akan hilang karena kode password baru disimpan di EEPROM.
Terima kasih.. :)
@Heriyanto, terima kasih atensinya, pertama saya sampaikan saya bukan kaskuser dan blog ini bukan untuk kaskuser saja tapi untuk umum, jadi ga perlu pakai kata agan.
saya hanya membagikan konsepnya saja, jadi silahkan dikembangkan sendiri, betul arah pemikiran anda bahwa memang harus menyimpan data password tersebut ke EEPROM untuk keperluan yg anda inginkan, saya setuju. Silahkan pelajari prinsip penyimpanan data ke EEPROM, kemudian silahan dikembangkan program di atas.
maaf pak, saya mau tanya. klo kita mau hidupkan terus pin 13 saat password benar gimana caranya ya? karna disini ketika password benar led nya hanya menyala beberapa detik saja trus mati.
dan bisakah kita buat perintah, jika password yg kita masukkan salah hingga beberapa kali, alrm akan berbunyi hingga password yg kita masukkan benar. terimakasih banyak
@Sulis, agar alarm bunyi terus, hapus instruksi baris ke 2 dari bawah [hapus instruksi : else digitalWrite(13,LOW); ], kalau untuk agar alarm bunyi terus setelah salah beberapa kali, harus ditambah variabel counter yang menghitung kesalahannya sudah berapa kalinya, selanjutnya gunakan instruksi if untuk menyalakan alarmnya, silahkan berkesperimen.......
Mas saya sudah coba tpi kenapa tampilan di lcd saya ketika di tekan itu nebjadi 789cpassword bukan password saja
@yova: Coba cek lagi koneksi rangkaiannya, atau ada kemungkinan power supply nya kurang kuat.
sudah ketemu pa ternyata masalhnya pada ..
char tampil[16]={
' ',' ',' ',' ',
' ',' ',' ',' ',
' ',' ',' ',' ',
' ',' ',' ',' '};
ketika sketch bagian itu di hapus tampilannya sesuai yg diinginkan.
tapi saya menemukan problem baru lagi pa, bagaimana pa kalau alarm nyala terus ketika pass buka kunci salah dua kali? baru belajar arduino pa mohon pencerahannya.
silahkan baca comment comment sebelumnya
Mau nanya mas..bisa gk password nya diubah dari 6 digit menjadi 12 digit mas? Tanks mas
Mau nanya mas..bisa gk password nya diubah dari 6 digit menjadi 12 digit mas? Tanks mas
@Dino, bisa saja, di ubah saja variabel kunci nya,dan looping penampung jawaban nya, silahkan bereksperimen
Tanks mas
Gan bisa kirmkan ke email sya ngak program nya? Emailnya : vickylovesari@gmail.com
Dan mau tanya ini gan itu kodenya bisa diganti" ngak? Thx artikelnya sangat membntu
list program di atas sudah lengkap, tinggal Copy &Paste saja, kalau yang dimaksud kode adalah password, bisa saja di ganti , silahkan dipelajarai sketch programnya dan diubah; ... selamat bereksperimen..
sketch_sep19a:42: error: 'Keypad' does not name a type
sketch_sep19a.ino: In function 'void loop()':
sketch_sep19a:57: error: 'keypad' was not declared in this scope
sketch_sep19a:58: error: 'NO_KEY' was not declared in this scope
kenapa ya ? newbie kk, bantu ya . .
pastikan file Keypad.h nya sudah terinstall di folder library nya Arduino, kalau belum ada,file bisa dicari via google
mas kalo pengin menggunakan passwordnya dua pake apa ya, seumpama password 1 buat buka pintu password 2 pake buka garasi
tolong bantuannya mas.
banyak cara, contohnya variabel "kunci", dimodifikasi menjadi "kunci1" dan "kunci2" yang masing masing berisi password yg berbeda, kemudian pada pengecekan variabel kunci thd jawaban masing masing di cek , misal if(jawab==kunci1)...... lalu cek lagi if(jawab==kunci2)......
Jangan lupa pada hardware tentukan pin untuk buka garasinya...
Semoga menginspirasi, selamat bereksperimen
mas saya sudah coba program yang di atas tapi masih belum berhasil,minta tolong mas untuk program door lock menggunakan keypad
@Rifqi, error nya di mana, bisa share programnya ?
mas mau tanya utk program arduino ini apabila dikombinasi dengan penguncinya menggunak magnet induksi programnya bagaimana mas? tetap menggunakan password saat masuk dan keluar tinggal emmencet tombol push buton
mas mau tanya utk program arduino ini apabila dikombinasi dengan penguncinya menggunak magnet induksi programnya bagaimana mas? tetap menggunakan password saat masuk dan keluar tinggal emmencet tombol push buton
@Ahmad, salah satu contoh aplikasinya, pin digital 13 disambungkan ke rele 5v dan menggerakan kunci magnet, untuk tombol keluar tambahkan switch di pin digital 18 (analog A4) dan set sebagai Input, modifikasi sketchnya.
Gan mau tanya apakah bisa membuat kunci tersebut tanpa mengunci secara otomatis
@Tama, maaf saya tidak paham apa yang dimaksud kalimat " bisa membuat kunci tersebut tanpa mengunci secara otomatis" ?
Pa bisa ga di program ditambahkan simbol * untuk menghapus angka yg telah dipencet ke password? Mohon bantuannya
@Irfan: bisa saja, idenya sbb:
diatas instruksi if(key=='#'){ ....
buat instruksi mengecek tekan tombol *, kalau tombol * yang ditekan hapus karakter yang terakhir masuk,kurang lebih prog/algoritmanya:
if(key=='*'){
// hapus karakter yang terkahir yg diisi
n=n-1;
berita[n]=" ";
tampil[n]=" ";
// tampilkan display
lcd.setCursor(0,1);
lcd.print(tampil);
}
tinggal disempurnakan sendiri,misal apabila pertama kali belum isi password, terus tekan *, program bagian ini tidak boleh bekerja..
selamat bereksperimen.....
Misi mas, ada project proteusnya kah
Misi numpang tanya. Kalo kita di arduino passwordnya boleh lebih dari 1 kah? Atau memang hanya bisa satu password. Ga bisa pass1, pass2?
Post a Comment