이전에 동영상으로 소개를 드린 비밀번호 시스템 만들기 소스 코드를 공개합니다.

EEPROM을 사용하여 비밀번호를 저장하고,

비밀번호를 확인하는 간단한 MCU 시스템을 만들게 한 c 소스 코드입니다.


#include <avr/io.h> #include <avr/interrupt.h> #include <avr/eeprom.h> // for eeprom #include "EEPROM.h" int main(void) { unsigned char password[4]; unsigned char input[4]; unsigned char i=0; int check = 0; int step = 0; int count = 0; DDRB = 0xFF; DDRG = 0xFF; DDRF = 0x00; DDRE = 0xFF; PORTB = 0x00; PORTG = 0xFF; Init_Timer(); sei(); // 제일 처음에는 FND에 아무것도 표시되지 않는다. digit3=digit2=digit1=digit0=16; while(1) { if(KeyPressed) { KeyPressed = FALSE; switch(key) { case 0x0A: // * 키 // 비밀번호 입력 부분. step = 2; count = 0; digit3=digit2=digit1=digit0=3; // 3333 표시. break; case 0x0C: // # 키 // 비밀번호 설정 부분. step = 1; // 비밀번호 설정 시작! if(check == 0) { digit3=digit2=digit1=digit0=0; // 0000 표시 check = 1; // check가 1이어야 입력 받기 가능. } // 비밀번호 설정이 종료. else { digit3=digit2=digit1=digit0=2; // 2222 표시. /* Write password to eeprom */ write_eeprom(0, password[0]); write_eeprom(1, password[1]); write_eeprom(2, password[2]); write_eeprom(3, password[3]); check = 0; } break; default: // *,# 키 말고 일반 숫자키를 누르는 경우 if(step == 1 && check==1) // 비밀번호 설정시 입력 { password[3] = password[2]; password[2] = password[1]; password[1] = password[0]; password[0] = key; digit3 = digit2; digit2 = digit1; digit1 = digit0; digit0 = 1; } else if(step == 2) // 비밀번호 체크시 입력 { count ++; input[3] = input[2]; input[2] = input[1]; input[1] = input[0]; input[0] = key; if(count == 4) // 4번 눌렀을 때, 비밀번호 체크. { count = 0; // EEPROM에 저장된 비밀번호를 불러옴. for(i=0; i<4; i++) password[i] = read_eeprom(i); /* 이 strcmp는 제가 직접 만든 함수입니다. * 같으면 TRUE를 반환 합니다. */ if(strcmp(input, password)) // 문을 여는 데 성공. digit3=digit2=digit1=digit0=7; // 7777 표시. else // 문을 여는 데 실패. digit3=digit2=digit1=digit0=4; // 4444 표시. } } break; } // switch(key) end } // if(KeyPressed) end } // Infinite loop end. }


EEPROM 기능을 이용해서 구현한 Door Lock 구현 동영상입니다.


선명하게 보이지는 않는데, FND Display 에 숫자가 바뀌어 출력되는 정도는 확인하실 수 있으실 거라고 생각합니다.


아쉽게도 폰에서 찍은 동영상이 왼쪽으로 회전되어서 저장이 되었네요;;;


물론 동영상 인코딩으로 다시 재회전시키는 방법도 있지만... 귀찮아서 ^^;;


다음에 기회가 되면 다시 올리도록 하겠습니다.





영상만 보면 상황이 잘 이해 안갈 수도 있어서 부가 설명을 덧 붙이자면,


1) #키를 눌러서 비밀번호를 설정

2) *키를 눌러서 비밀번호 입력-> 맞으면 7777 틀리면 4444


제일 처음 #키 누르고 1234 입력해 비밀번호 1234로 설정 (비밀번호 입력중에는

어떤 숫자인지 알지 못하게 1이 계속해서 뜹니다. 그리고 비밀 번호 설정 후엔 2222가 뜹니다.)


그 후 *키를 누릅니다. 그러면 3333이 뜹니다. 그리고 1234를 순서대로 누르면 맞다고 7777이 뜨고,

다른 숫자(4444)를 누르면 틀렸다고 4444가 뜹니다.


CPU 리셋 이후에 다시 * 키를 눌러서 1234를 눌러도 그대로 맞다고 7777을 띄우는 것을 보면,

EEPROM에 정확하게 비밀번호가 저장되었음을 확인할 수 있습니다.

+ Recent posts