LAMPIRAN A LISTING KODE PROGRAM ARDUINO

  

LAMPIRAN A

LISTING KODE PROGRAM ARDUINO

  #include <Adafruit_Fingerprint.h> #include <SoftwareSerial.h> #include <EEPROM.h> #include <SPI.h> //pustaka SPI #include <MFRC522.h> //pustaka MFRC522 /************************************************* KONFIGURASI & INISIALISASI RFID Reader MF522-AN

  • / #define SS 53 #define RST 42 /* Konfigurasi pin ARDUINO MEGA 2560 ke MFRC522 BOARD Reset 42

  SS 53 MOSI 51 MISO 50 SCK 52

  • / unsigned char uidskrg[7] = {0,0,0,0,0,0,0}; unsigned char uidbru[7] = {0,0,0,0,0,0,0}; int i; MFRC522 mfrc522(SS, RST); /*************************************************

  INISIALISASI EEPROM

  • / // UID and Image address start from 2 // For address 0 and 1 is used for the saving the last address //Variable for accessing EEPROM //Address EEPROM start from 0 uint16_t addr = 0; uint16_t val[] = {0}; uint8_t viDaddr; uint8_t temp[137]; uint8_t valFinger[137]; uint8_t verSign = 0; uint16_t lastaddr = 0; uint16_t lbyte = 0; uint16_t hbyte = 0; //Variable to response MATLAB signal
uint8_t MATSIG = 0; //Signal for REGISTRASI or VERIFIKASI button uint8_t MATsig = 0; //Signal for Scan ID or Scan FP /**************************************************************** KONFIGURASI & INISIALISASI RFID Reader MF522-AN dan Finger Print

  Sensor(ZFM-20)

  • / // pin #10 is IN from sensor (GREEN wire) // pin #11 is OUT from arduino (WHITE wire) SoftwareSerial mySerial(10, 11); Adafruit_Fingerprint finger = Adafruit_Fingerprint(&mySerial); void setup() {

  Serial.begin(9600); Serial.println("Serial COM enabled"); SPI.begin(); // Init SPI bus mfrc522.PCD_Init(); // Init MFRC522 card Serial.println("Found RFID sensor"); /************************************************* DETECT FINGER PRINT SENSOR (ZFM-20)

  • / // set the data rate for the sensor serial port finger.begin(57600); if (finger.verifyPassword()) { Serial.println("Found fingerprint sensor"); } else { Serial.println("Did not find fingerprint sensor :("); //while (1);

  } Serial.println("~"); } void loop() { while(1) { //Check the Last Address hbyte = EEPROM.read(0); // read hy byte EEPROM lastaddr = hbyte; lastaddr <<= 8; lbyte = EEPROM.read(1); // read low byte EEPROM

  //get complete last address lastaddr |= lbyte; addr = lastaddr; if (addr >= 4089){ Serial.println("full capacity ! "); break;} if(lastaddr == 0x0000) {addr = addr +2;} MATSIG = Serial.read(); switch (MATSIG) { //************ //REGISTRASI //************ case '^': { while(MATsig != '!'){MATsig = Serial.read();}

  //Baca UID {RegisterCard();} while(MATsig != '@'){MATsig = Serial.read();}

  //Baca Citra Sidik Jari {RegisterFinger();}

  //Save last address lastaddr = addr; lbyte = 0x00ff & lastaddr; //get low byte lastaddr >>= 8; hbyte = 0x00ff & lastaddr; //get hi byte EEPROM.write(0, hbyte); //save hi byte to address 0 EEPROM.write(1, lbyte); //save lo byte to address 1 } break; //*********** //VERIFIKASI //*********** case '#': {VerifyMember();} break; default: break; } } } //************************* // FUNGSI REGISTER KARTU //************************* void RegisterCard() { while(1) { // Look for new cards if ( ! mfrc522.PICC_IsNewCardPresent()) {continue;} // Select one of the cards if ( ! mfrc522.PICC_ReadCardSerial()) {continue;} for (byte i = 0; i < 7; i++) { if (uidskrg[i] == 0) { if (i >= 6) { for (byte i = 0; i < mfrc522.uid.size; i++) { Serial.print(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " ");

  Serial.print(mfrc522.uid.uidByte[i],HEX); } Serial.println(); for (byte i = 0; i < mfrc522.uid.size; i++) {uidskrg[i] = mfrc522.uid.uidByte[i];} //******************** // SAVE UID to EEPROM //******************** for (byte i = 0; i < 7; i++) { EEPROM.write(addr, uidskrg[i]); addr = addr + 1; } return; } } else if (uidskrg[i] == mfrc522.uid.uidByte[i]) { if (i >= 6){continue;} } else { for (byte i = 0; i < mfrc522.uid.size; i++) {uidbru[i] = mfrc522.uid.uidByte[i];} for (byte i = 0; i < mfrc522.uid.size; i++) { Serial.print(uidbru[i] < 0x10 ? " 0" : " "); Serial.print(uidbru[i],HEX); } Serial.println(); for (byte i = 0; i < mfrc522.uid.size; i++) {uidskrg[i] = uidbru[i];} //******************** // SAVE UID to EEPROM //******************** for (byte i = 0; i < 7; i++) { EEPROM.write(addr, uidskrg[i]); addr = addr + 1; } return; } //else }//for }//while(1) }//void RegisterCard

  //***************************** // REGISTER FINGER PRINT SENSOR //***************************** void RegisterFinger() { uint8_t p = -1; int i; Serial.println("Waiting for valid finger to enroll"); delay(100); while (p != FINGERPRINT_OK) { p = finger.getImage(); switch (p) { case FINGERPRINT_OK: //0x00 finger collection success Serial.println("Image taken"); delay(500); break; case FINGERPRINT_NOFINGER:

  //0x02 can not detect finger Serial.println("Place the finger..."); break; case FINGERPRINT_PACKETRECIEVEERR:

  //0x01 error when receiving package Serial.println("Communication error"); delay(100); break; case FINGERPRINT_IMAGEFAIL:

  //0x03 fail to collect finger Serial.println("Imaging error"); delay(100); break; default:

  Serial.println("Unknown error"); //unknown error delay(100); break; } } byte status; byte buffer[4]; p = finger.UpImage(); switch (p) { case FINGERPRINT_OK: { for (int i = 0; i < 137; i++) temp[i] = (mySerial.read()); valFinger[i] = temp[i];

  } //******************************* // SAVE 80byte to EEPROM

  //******************************* Serial.println("Saving 80 byte to EEPROM..."); for (int i = 9; i < 89; i++) { EEPROM.write(addr, temp[i]); addr = addr + 1; } //******************************* // SAVE 48byte to EEPROM kartu //******************************* Serial.println("Saving 48 byte to EEPROM Card..."); byte status,i = 89; byte buffer[4]; // Tulis memori Mifare UL setiap 4 byte (per 1 page) see datasheet Mifare UL 3.6.7 for (byte page = 4; page < 16; page++) { // Read returns data for 1 page at a time.

  // Write data for (byte offset = 0; offset < 4; offset++) { Serial.println(valFinger[i]); buffer [offset] = valFinger[i]; status = mfrc522.MIFARE_Ultralight_Write(page, buffer, 4); i++; } } }// exit case(!) delay(500); break; default: Serial.println("Unknown error"); delay(500); break; }//exit switch Serial.println("~"); //sign to finish get image }// void RegisterCard() //************************* // FUNGSI VERIFIKASI KARTU //************************* void VerifyMember() { while(1) { // Look for new cards if ( ! mfrc522.PICC_IsNewCardPresent()) {continue;} // Select one of the cards if ( ! mfrc522.PICC_ReadCardSerial()) {continue;} for (byte i = 0; i < 7; i++) { if (uidskrg[i] == 0) { if (i >= 6) { for (byte i = 0; i < mfrc522.uid.size; i++) { Serial.print(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " ");

  Serial.print(mfrc522.uid.uidByte[i],HEX); } Serial.println(); for (byte i = 0; i < mfrc522.uid.size; i++) {uidskrg[i] = mfrc522.uid.uidByte[i];} continue; } else if (uidskrg[i] == mfrc522.uid.uidByte[i]) { if (i >= 6){continue;} } else { for (byte i = 0; i < mfrc522.uid.size; i++) {uidbru[i] = mfrc522.uid.uidByte[i];} for (byte i = 0; i < mfrc522.uid.size; i++) { Serial.print(uidbru[i] < 0x10 ? " 0" : " "); Serial.print(uidbru[i],HEX); } Serial.println(); for (byte i = 0; i < mfrc522.uid.size; i++)

  {uidskrg[i] = uidbru[i];} continue; } //else }//for }//while(1) }//void VerifyMember

  MATLAB function varargout = GUIVerSys(varargin)

  % GUIVERSYS MATLAB code for GUIVerSys.fig % GUIVERSYS, by itself, creates a new GUIVERSYS or raises the existing % singleton*. % % H = GUIVERSYS returns the handle to a new GUIVERSYS or the handle to % the existing singleton*. % % GUIVERSYS('CALLBACK',hObject,eventData,handles,...) calls the local % function named CALLBACK in GUIVERSYS.M with the given input arguments.

  % % GUIVERSYS('Property','Value',...) creates a new GUIVERSYS or raises the % existing singleton*. Starting from the left, property value pairs are % applied to the GUI before GUIVerSys_OpeningFcn gets called. An % unrecognized property name or invalid value makes property application % stop. All inputs are passed to GUIVerSys_OpeningFcn via varargin.

  % % *See GUI Options on GUIDE's Tools menu. Choose "GUI allows only one % instance to run (singleton)". % % See also: GUIDE, GUIDATA, GUIHANDLES % Edit the above text to modify the response to help GUIVerSys % Last Modified by GUIDE v2.5 11-Feb-2015 08:08:52 % Begin initialization code - DO NOT EDIT gui_Singleton = 1; gui_State = struct( 'gui_Name' , mfilename, ...

  'gui_Singleton' , gui_Singleton, ... 'gui_OpeningFcn' , @GUIVerSys_OpeningFcn, ... 'gui_OutputFcn' , @GUIVerSys_OutputFcn, ... 'gui_LayoutFcn' , [] , ... 'gui_Callback' , []); if nargin && ischar(varargin{1})

  gui_State.gui_Callback = str2func(varargin{1});

  end if nargout

  [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});

  else

  gui_mainfcn(gui_State, varargin{:});

  end

  % End initialization code - DO NOT EDIT % --- Executes just before GUIVerSys is made visible.

  function GUIVerSys_OpeningFcn(hObject, eventdata, handles,

  varargin) % This function has no output args, see OutputFcn.

  % hObject handle to figure % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % varargin command line arguments to GUIVerSys (see VARARGIN) % Choose default command line output for GUIVerSys handles.output = hObject; % Update handles structure guidata(hObject, handles);

  % UIWAIT makes GUIVerSys wait for user response (see UIRESUME) % uiwait(handles.figure1); % --- Outputs from this function are returned to the command line.

  function varargout = GUIVerSys_OutputFcn(hObject, eventdata,

  handles) % varargout cell array for returning output args (see VARARGOUT); % hObject handle to figure % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Get default command line output from handles structure varargout{1} = handles.output; set(handles.txtMSG, 'Visible' , 'on' ); checkxls = xls_check_if_open( 'Daftar_Anggota.xlsx' );

  

if checkxls ~= 0 % jika

  xlsx terbuka errormsg = 'file excel is opening, close it first' ; waitfor(msgbox(errormsg, 'Error' )); checkxls = xls_check_if_open( 'Daftar_Anggota.xlsx' );

  if checkxls ~= 0

  xls_check_if_open( 'Daftar_Anggota.xlsx' , 'close' ); % tutup xlsx

  end end global s;

  s = serial( 'com11' , 'timeout' ,1); fopen(s); i = 0; n = 0;

  while i <= 4

  i = i+1; n = fscanf(s) pause(.1); n = strtrim(n); set(handles.txtMSG, 'String' , n);

  if (i==4)

  sz = size(n);

  if (sz <= 1) if (n == '~' ) break else if (ischar(n) == 0 || isempty(n)==1)

  set(handles.txtMSG, 'String' , 'Serial data

  error, unplug and plug or reprogram Arduino' ); break ; end end else

  set(handles.txtMSG, 'String' , 'Serial data error,

  unplug and plug or reprogram Arduino' ); break ; end end end

  set(handles.txtMSG, 'String' , 'Choose Register or Verify...' ); % --- Executes on button press in Registrasi.

  function Registrasi_Callback(hObject, eventdata, handles)

  % hObject handle to Registrasi (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)

  global s;

  status = s.Status;

  if status(1,4) == 's'

  newstatus = char(zeros(1,4));

  for i=1:4

  newstatus(1,i)= status(1,i);

  end

  status = newstatus;

  end if (status == 'open' )

  pause(.01);

  else

  fopen(s); i = 0; n = 0;

  while i <= 4

  i = i+1; n = fscanf(s) pause(.1); n = strtrim(n); set(handles.txtMSG, 'String' , n);

  if (i==4)

  sz = size(n);

  if (sz <= 1) if (n == '~' ) break else if (ischar(n) == 0 || isempty(n)==1)

  set(handles.txtMSG, 'String' , 'Serial data

  error, unplug and plug or reprogram Arduino' ); break ; end end else set(handles.txtMSG, 'String' , 'Serial data error,

  unplug and plug or reprogram Arduino' ); break ; end end end end

  set(handles.txtMSG, 'String' , 'Please, fill member identity' ); set(handles.uipanel5, 'Visible' , 'off' ); set(handles.uipanel1, 'Visible' , 'on' ); pause(.1); fwrite(s, '^' ); %send REGISTRASI command pause(.1); % --- Executes during object creation, after setting all properties.

  function Registrasi_CreateFcn(hObject, eventdata, handles)

  % hObject handle to Registrasi (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % --- Executes on button press in btn_scanID.

  function btn_scanID_Callback(hObject, eventdata, handles)

  % hObject handle to btn_scanID (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)

  global s;

  set(handles.txtMSG, 'String' , 'Register ID Card' ); pause(1); set(handles.txtMSG, 'String' , 'Start scanning card...' ); pause(.1); fwrite(s, '!' ); pause(.1);

  while

  1

  if (s.BytesAvailable == 23)

  pause(.1) uid = fscanf(s); % baca UID(melalui serial COM)

  if (isempty(uid)==1) continue ; end

  uid = strtrim(uid); %membuang karakter selain karakter huruf dan angka sprintf( '%s' ,uid) set(handles.txt_MEMBERID, 'String' ,uid); flushinput(s);

  break ; end end flushinput(s); set(handles.txtMSG, 'String' , 'Finish scanning card...' ); pause(1); set(handles.txtMSG, 'String' , 'Register ID Card complete !' ); pause(2); set(handles.txtMSG, 'String' , 'Register your finger' ); % --- Executes on button press in btn_scanFJ.

  function btn_scanFJ_Callback(hObject, eventdata, handles)

  % hObject handle to btn_scanFJ (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) load( 'IDf.mat' )

  IDf = IDf + 1; %s = serial('com11','timeout',1); %fopen(s);

  global

  IDftemp;

  global s;

  set(handles.txtMSG, 'String' , 'Start scanning finger...' ); pause(.1); fwrite(s, '@' ); pause(1);

  while

  1 pause(.1) finger = fscanf(s); % baca Serial COM finger = strtrim(finger); % membuang karakter selain karakter huruf dan angka sprintf( '%s' ,finger) set(handles.txtMSG, 'String' ,finger);

  if (finger == '~' ) % jika buffer input Matlab sdh kosong,

  keluar

  break ; end end

  flushinput(s); fclose(s); set(handles.txtMSG, 'String' , 'Scan finger completed' );

  IDftemp=IDf;

  IDftemp = sprintf( 'ID %d' ,IDftemp); set(handles.txtFINGER, 'String' ,IDftemp); set(handles.txtMSG, 'String' , 'Identity completed' ); save( 'IDf.mat' , 'IDf' ); % --- Executes on button press in btn_SIMPAN.

  function btn_SIMPAN_Callback(hObject, eventdata, handles)

  % hObject handle to btn_SIMPAN (see GCBO)

  % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)

  global

  IDftemp; load( 'row.mat' ) load( 'sat.mat' ) load( 'pul.mat' ) load( 'ratus.mat' ) load( 'lipat10.mat' ) load( 'lipat100.mat' ) n = 1; msgn = 0; a = get(handles.edtxt_NAMA, 'String' ); b = get(handles.edtxt_ALAMAT, 'String' ); c = get(handles.edtxt_TTL, 'String' ); d = get(handles.edtxt_TELPHP, 'String' ); e = get(handles.edtxt_EMAIL, 'String' ); f = get(handles.txt_MEMBERID, 'String' ); g = IDftemp; identitas = {g,f,a,b,c,d,e}; sat = sat + 1;

  if sat >= lipat10

  pul = pul + 1; sat = 0; lipat10 = lipat10+10;

  if pul >= lipat100

  ratus = ratus + 1; pul = 0; lipat100 = lipat100+100;

  end end

  sat = num2str(sat); pul = num2str(pul); ratus = num2str(ratus); row = sprintf( 'A%c%c%c' ,ratus,pul,sat); sat = str2num(sat); pul = str2num(pul); ratus = str2num(ratus); xlswrite( 'Daftar_Anggota.xlsx' ,identitas,1,row); save( 'row.mat' , 'row' ) save( 'sat.mat' , 'sat' ) save( 'pul.mat' , 'pul' ) save( 'ratus.mat' , 'ratus' ) save( 'lipat10.mat' , 'lipat10' ) save( 'lipat100.mat' , 'lipat100' )

  global dklik;

  dklik = 1;

  % --- Executes during object creation, after setting all properties.

  function text3_CreateFcn(hObject, eventdata, handles)

  % hObject handle to text3 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % --- Executes on button press in btn_OK.

  function btn_OK_Callback(hObject, eventdata, handles)

  % hObject handle to btn_OK (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)

  global dklik; if dklik == 1

  choice = menu( 'Are you sure want to finish the Registration ?

  if not keep filling' , 'Yes' , 'No' ) if (choice == 1)

  set(handles.uipanel1, 'Visible' , 'off' );

  else end else

  msgbox( 'Tekan tombol simpan terlebih

  dahulu' , 'peringatan' , 'modal' ); end

  set(handles.uipanel5, 'Visible' , 'on' ); % --- Executes during object creation, after setting all properties.

  function text2_CreateFcn(hObject, eventdata, handles)

  % hObject handle to text2 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % --- Executes during object creation, after setting all properties.

  function uipanel1_CreateFcn(hObject, eventdata, handles)

  % hObject handle to uipanel1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called

  function edtxt_NAMA_Callback(hObject, eventdata, handles)

  % hObject handle to edtxt_NAMA (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)

  % --- Executes during object creation, after setting all properties.

  function edtxt_NAMA_CreateFcn(hObject, eventdata, handles)

  % hObject handle to edtxt_NAMA (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: edit controls usually have a white background on Windows.

  % See ISPC and COMPUTER.

  if ispc && isequal(get(hObject, 'BackgroundColor' ),

  get(0, 'defaultUicontrolBackgroundColor' )) set(hObject, 'BackgroundColor' , 'white' );

  end function edtxt_ALAMAT_Callback(hObject, eventdata, handles)

  % hObject handle to edtxt_ALAMAT (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % --- Executes during object creation, after setting all properties.

  function edtxt_ALAMAT_CreateFcn(hObject, eventdata, handles)

  % hObject handle to edtxt_ALAMAT (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: edit controls usually have a white background on Windows.

  % See ISPC and COMPUTER.

  if ispc && isequal(get(hObject, 'BackgroundColor' ),

  get(0, 'defaultUicontrolBackgroundColor' )) set(hObject, 'BackgroundColor' , 'white' );

  end function edtxt_TTL_Callback(hObject, eventdata, handles)

  % hObject handle to edtxt_TTL (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: get(hObject,'String') returns contents of edtxt_TTL as text % str2double(get(hObject,'String')) returns contents of edtxt_TTL as a double % --- Executes during object creation, after setting all properties. function edtxt_TTL_CreateFcn(hObject, eventdata, handles)

  % hObject handle to edtxt_TTL (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: edit controls usually have a white background on Windows.

  % See ISPC and COMPUTER.

  if ispc && isequal(get(hObject, 'BackgroundColor' ),

  get(0, 'defaultUicontrolBackgroundColor' )) set(hObject, 'BackgroundColor' , 'white' );

  end function edtxt_TELPHP_Callback(hObject, eventdata, handles)

  % hObject handle to edtxt_TELPHP (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % --- Executes during object creation, after setting all properties.

  function edtxt_TELPHP_CreateFcn(hObject, eventdata, handles)

  % hObject handle to edtxt_TELPHP (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: edit controls usually have a white background on Windows.

  % See ISPC and COMPUTER.

  if ispc && isequal(get(hObject, 'BackgroundColor' ),

  get(0, 'defaultUicontrolBackgroundColor' )) set(hObject, 'BackgroundColor' , 'white' );

  end function edtxt_EMAIL_Callback(hObject, eventdata, handles)

  % hObject handle to edtxt_EMAIL (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: get(hObject,'String') returns contents of edtxt_EMAIL as text % str2double(get(hObject,'String')) returns contents of edtxt_EMAIL as a double % --- Executes during object creation, after setting all properties.

  function edtxt_EMAIL_CreateFcn(hObject, eventdata, handles)

  % hObject handle to edtxt_EMAIL (see GCBO)

  % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: edit controls usually have a white background on Windows.

  % See ISPC and COMPUTER.

  if ispc && isequal(get(hObject, 'BackgroundColor' ),

  get(0, 'defaultUicontrolBackgroundColor' )) set(hObject, 'BackgroundColor' , 'white' );

  end function txt_MEMBERID_Callback(hObject, eventdata, handles)

  % hObject handle to txt_MEMBERID (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: get(hObject,'String') returns contents of txt_MEMBERID as text % str2double(get(hObject,'String')) returns contents of txt_MEMBERID as a double % --- Executes during object creation, after setting all properties.

  function txt_MEMBERID_CreateFcn(hObject, eventdata, handles)

  % hObject handle to txt_MEMBERID (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: edit controls usually have a white background on Windows.

  % See ISPC and COMPUTER.

  if ispc && isequal(get(hObject, 'BackgroundColor' ),

  get(0, 'defaultUicontrolBackgroundColor' )) set(hObject, 'BackgroundColor' , 'white' );

  end

  % --- Executes during object creation, after setting all properties.

  function text8_CreateFcn(~, eventdata, handles)

  % hObject handle to text8 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % --- Executes during object creation, after setting all properties.

  function text9_CreateFcn(hObject, eventdata, handles)

  % hObject handle to text9 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB

  % handles empty - handles not created until after all CreateFcns called % --- Executes during object creation, after setting all properties.

  function text10_CreateFcn(hObject, eventdata, handles)

  % hObject handle to text10 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % --- Executes during object creation, after setting all properties.

  function text11_CreateFcn(hObject, eventdata, handles)

  % hObject handle to text11 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % --- Executes during object creation, after setting all properties.

  function text12_CreateFcn(hObject, eventdata, handles)

  % hObject handle to text12 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % --- Executes during object creation, after setting all properties.

  function text13_CreateFcn(hObject, eventdata, handles)

  % hObject handle to text13 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % --- Executes during object creation, after setting all properties.

  function axes1_CreateFcn(hObject, eventdata, handles)

  % hObject handle to axes1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: place code in OpeningFcn to populate axes1

  % --- Executes during object creation, after setting all properties.

  function btn_scanID_CreateFcn(hObject, eventdata, handles)

  % hObject handle to btn_scanID (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % --- Executes during object creation, after setting all properties.

  function btn_scanFJ_CreateFcn(hObject, eventdata, handles)

  % hObject handle to btn_scanFJ (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % --- Executes during object creation, after setting all properties.

  function uipanel3_CreateFcn(hObject, eventdata, handles)

  % hObject handle to uipanel3 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % --- Executes during object creation, after setting all properties.

  function text18_CreateFcn(hObject, eventdata, handles)

  % hObject handle to text18 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % --- Executes during object creation, after setting all properties.

  function axes2_CreateFcn(hObject, eventdata, handles)

  % hObject handle to axes2 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called img = imread( 'Scan Kartu.jpg' ); imshow(img) % Hint: place code in OpeningFcn to populate axes2

  % --- Executes during object creation, after setting all properties.

  function uipanel4_CreateFcn(hObject, eventdata, handles)

  % hObject handle to uipanel4 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % --- Executes during object creation, after setting all properties.

  function txtMSG_CreateFcn(hObject, eventdata, handles)

  % hObject handle to txtMSG (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % --- Executes during object creation, after setting all properties.

  function uipanel5_CreateFcn(hObject, eventdata, handles)

  % hObject handle to uipanel5 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % --- Executes during object creation, after setting all properties.

  function text23_CreateFcn(hObject, eventdata, handles)

  % hObject handle to text23 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % --- Executes during object creation, after setting all properties.

  function text25_CreateFcn(hObject, eventdata, handles)

  % hObject handle to text25 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % --- Executes during object creation, after setting all properties.

  function text26_CreateFcn(hObject, eventdata, handles)

  % hObject handle to text26 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called

  % --- Executes during object creation, after setting all properties.

  function axes4_CreateFcn(hObject, eventdata, handles)

  % hObject handle to axes4 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % handles empty - handles not created until after all CreateFcns called img = imread( 'front_page.png' ); imshow(img) % Hint: place code in OpeningFcn to populate axes4 % --- Executes on button press in Verifikasi.

  function Verifikasi_Callback(hObject, eventdata, handles)

  % hObject handle to Verifikasi (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)

  global s;

  status = s.Status;

  if status(1,4) == 's'

  newstatus = char(zeros(1,4));

  for i=1:4

  newstatus(1,i)= status(1,i);

  end

  status = newstatus;

  end if (status == 'open' )

  pause(.1);

  else

  fopen(s); delay(.1); i = 0; n = 0;

  while i <= 4

  i = i+1; n = fscanf(s) pause(.1); n = strtrim(n); set(handles.txtMSG, 'String' , n);

  if (i==4)

  sz = size(n);

  if (sz <= 1) if (n == '~' ) break else if (ischar(n) == 0 || isempty(n)==1) set(handles.txtMSG, 'String' , 'Serial data

  error, unplug and plug or reprogram Arduino' ); break ; end end else

  set(handles.txtMSG, 'String' , 'Serial data error,

  unplug and plug or reprogram Arduino' ); break ; end end end end while

  1 axes(handles.axes4); gmb = imread( 'Scan Kartunya.jpg' ); imshow(gmb); set(handles.txtMSG, 'String' , 'Please verify' ); set(handles.uipanel5, 'Visible' , 'off' ); set(handles.uipanel3, 'Visible' , 'on' ); [~,~,UIDx] = xlsread( 'Daftar_Anggota' ,1, 'A4:G50' ); %membaca file database (daftar anggota.xls) dan menyimpannya ke variabel UIDx fwrite(s, '#' ); pause(.1);

  while

  1

  if (s.BytesAvailable == 23)

  uid = fscanf(s); % baca UID(melalui serial COM) pause(.5);

  if (isempty(uid)==1) continue ; end

  uid = strtrim(uid); %membuang karakter selain karakter huruf dan angka sprintf( '%s' ,uid) flushinput(s);

  break ; end end

  set(handles.txtMSG, 'String' , 'Verifying...' ); inow = 1; det=0;

  while (inow<=47 && det~=1)

  %DATA PRIBADI TERDAFTAR

  if uid == UIDx{inow,2}

  %FIGURE DATA PRIBADI axes(handles.axes4); gmb = imread( 'Verifikasi Berhasil.jpg' ); imshow(gmb); pause(3); set(handles.uipanel6, 'Visible' , 'on' ); set(handles.txtVerNama, 'String' ,UIDx{inow,3}); set(handles.txtVerAlmat, 'String' ,UIDx{inow,4}); set(handles.txtVerTTL, 'String' ,UIDx{inow,5}); set(handles.txtVerEmail, 'String' ,UIDx{inow,6}); set(handles.txtVerEmail, 'String' ,UIDx{inow,7}); set(handles.textVerUID, 'String' ,UIDx{inow,2}); set(handles.txtVerIDfin, 'String' ,UIDx{inow,1}); pause(3); set(handles.uipanel6, 'Visible' , 'off' ); pause(1); det=1;

  end

  inow=inow+1;

  end if (det~=1)

  %FIGURE DATA TIDAK TERDAFTAR axes(handles.axes4); gmb = imread( 'Verifikasi Gagal.jpg' ); imshow(gmb); pause(3); gmb = imread( 'Scan Kartunya.jpg' ); imshow(gmb);

  end

  flushinput(s); pause(1);

  end

  % --- Executes during object creation, after setting all properties.

  function Verifikasi_CreateFcn(hObject, eventdata, handles)

  % hObject handle to Verifikasi (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % --- Executes during object creation, after setting all properties.

  function txtVerNama_CreateFcn(hObject, eventdata, handles)

  % hObject handle to txtVerNama (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % --- Executes during object creation, after setting all properties.

  function textResult_CreateFcn(hObject, eventdata, handles)

  % hObject handle to textResult (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB

  % handles empty - handles not created until after all CreateFcns called % --- Executes during object creation, after setting all properties.

  function textVerAlmat_CreateFcn(hObject, eventdata, handles)

  % hObject handle to textVerAlmat (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % --- Executes during object creation, after setting all properties.

  function textVerTTL_CreateFcn(hObject, eventdata, handles)

  % hObject handle to textVerTTL (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % --- Executes during object creation, after setting all properties.

  function textVerTelp_CreateFcn(hObject, eventdata, handles)

  % hObject handle to textVerTelp (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % --- Executes during object creation, after setting all properties.

  function textVerEmail_CreateFcn(hObject, eventdata, handles)

  % hObject handle to textVerEmail (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % --- Executes during object creation, after setting all properties.

  function textVerUID_CreateFcn(hObject, eventdata, handles)

  % hObject handle to textVerUID (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % --- Executes during object creation, after setting all properties.

  function uipanel6_CreateFcn(hObject, eventdata, handles)

  % hObject handle to uipanel6 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % --- Executes during object creation, after setting all properties.

  function btn_OK_CreateFcn(hObject, eventdata, handles)

  % hObject handle to btn_OK (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % --- Executes during object creation, after setting all properties.

  function txtFINGER_CreateFcn(hObject, eventdata, handles)

  % hObject handle to txtFINGER (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % --- Executes during object creation, after setting all properties.

  function figure1_CreateFcn(hObject, eventdata, handles)

  % hObject handle to figure1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % --- Executes on button press in pushbutton12.

  function pushbutton12_Callback(hObject, eventdata, handles)

  % hObject handle to pushbutton12 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)

  global s;

  status = s.Status;

  if status(1,4) == 's'

  newstatus = char(zeros(1,4));

  for i=1:4

  newstatus(1,i)= status(1,i);

  end

  status = newstatus;

  end if (status == 'open' )

  fclose(s);

  else

  pause(.1);

  end

  set(handles.uipanel1, 'Visible' , 'off' ); set(handles.uipanel3, 'Visible' , 'off' ); set(handles.uipanel5, 'Visible' , 'on' ); set(handles.txtMSG, 'String' , 'Choose Register or Verify...' ); % --- Executes during object creation, after setting all properties.

  function pushbutton12_CreateFcn(hObject, eventdata, handles)

  % hObject handle to pushbutton12 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % --- Executes during object creation, after setting all properties.

  function axes5_CreateFcn(hObject, eventdata, handles)

  % hObject handle to axes4 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: place code in OpeningFcn to populate axes4 % --- Executes during object creation, after setting all properties.

  function txtVerTelp_CreateFcn(hObject, eventdata, handles)

  % hObject handle to txtVerTelp (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % --- Executes during object creation, after setting all properties.

  function txtVerIDfin_CreateFcn(hObject, eventdata, handles)

  % hObject handle to txtVerIDfin (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called