정보나눔

오픈소스하드웨어 프로젝트에 대한 다양한 정보를 나누는 공간입니다.

아두이노 금고 관련 문의
한우영 | 2016-03-19

일단 제가 쓰는 코드가 저번에 했던 질문에서 봣던 코드인

#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번 까지 핀이 있어서,도와주세요! 고수님!!

 

이전글   |    Dot Matrix 소스 방법 질문이요!! 2016-03-17
다음글   |    아두이노 작품을 만드려고하는데요 조언부탁드립니다!... 2016-03-19