일단 제가 쓰는 코드가 저번에 했던 질문에서 봣던 코드인
#include
#include
#include "SoftwareSerial.h"
#include
#include
#include
Servo locker;
LiquidCrystal lcd(13, 12, 11, 9, A1, A0);
char secretCode[4] = {'4', '4', '4', '4'};
char input[4];
char key;
int position = 0;
int wrong = 0;
int i = 0;
int j = 0;
int pos = 0;
int a=0;
int b=0;
const byte rows = 4;
const byte cols = 4;
boolean c=false;
char keys[rows][cols] =
{
{'1', '2', '3', 'A'},
{'4', '5', '6', 'B'},
{'7', '8', '9', 'C'},
{'*', '0', '#', 'D'}
};
byte rowPins[rows] = {8, 7, 6, 5};
byte colPins[cols] = {4, 3, 2, 1};
Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, rows, cols);
void setup()
{
Serial.begin(9600);
lcd.begin(16, 2);
locker.attach(10);
locker.write(90);
pinMode(10,INPUT);
}
void loop()
{
while(a==0)
{
input_key(); // Password Input Mode
password(); // Confirm Password
password_check(); // Display current state
}
if(a==1) // Correct Password & registered Fingerprint
{
lcd.clear();
lcd.setCursor(0, 0);
pinMode(10,OUTPUT);
locker.write(180); // OPENING
lcd.print("perfect complete");
delay(2000);
pinMode(10,INPUT);
key = keypad.waitForKey();
if(key == '*')
{
a=0; // Clear Flag
lcd.clear();
lcd.setCursor(0,0);
pinMode(10,OUTPUT);
locker.write(90); // Closing
lcd.print(" Lock ON");
delay(2000);
pinMode(10,INPUT);
}
}
}
void input_key()
{
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(" Password");
for (i = 0; i < 4; i++)
{
key = keypad.waitForKey();
input[i] = key;
lcd.setCursor(i + 6, 1);
lcd.print("*");
Serial.print(input[i], DEC);
Serial.print("*");
if (i == 3)
{
Serial.println("");
}
}
}
void password()
{
wrong = 0;
for (j = 0; j < 4; j++)
{
if (secretCode[j] == input[j])
{
}
else if (secretCode[j] != input[j])
{
wrong += 1;
}
}
}
void password_check()
{
if (wrong == 0)
{
Serial.println("correct");
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(" PASS");
delay(2000);
a=1;
lcd.clear();
}
else if (wrong != 0)
{
Serial.println("wrong");
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(" wrong");
delay(2000);
a=0;
lcd.clear();
wrong = 0;
}
}
이부분입니다.
그런데 일단 컴파일 까지는 잘 됩니다만.. 제가 사용하는 키페드 모델이
http://item2.gmarket.co.kr/Item/detailview/Item.aspx?goodscode=607401945&GoodsSale=Y&jaehuid=200001169&NaPm=ct%3Dilyk83lk%7Cci%3D02c1c5ae6bfcdb37dcdb30cfff57c42ff696b180%7Ctr%3Dsls%7Csn%3D24%7Chk%3D0051cec9a000c72285a885835162a7d6995c6e82
이 제품입니다만. 아두이노에 올리고 시리얼 모니터로 상황을 보면 예를들어 4 4 4 4 를 입력하면
35*35*35*35*
wrong
이렇게 뜹니다. 그리고 led도 1602제품 사용하는데 밑에줄에는 아무것도 안뜨고 위에줄에모든 픽셀에 불이들어와서 i2c 제품 (커넥터) 뒤에 있는 파란 나사를 돌려 보아도 연해질뿐 글자는 보이지 않습니다. 일단 키패드를 다시사야하는건지...? 참고로 서보모터는 10번 핀에 연결했고 키페드는 원레 링크에 있던 데로 연결했습니다. 이제품도 1~8번 까지 핀이 있어서,도와주세요! 고수님!!
|