아두이노 소스인데...
하기 (1) 모듈내 if ~ else 문은 rfid 태그(카드, 키홀더형 태그 등등)에 대한 내부 인식값입니다. 즉 하기 모듈에 적힌 [0]~[6] 까지의 값이
1개의 태그카드값이되는데 여기서는 한개의 카드밖에 인식시키지 못하므로
추가의 카드값을 입력하여 여러사람 혹은 각각 다른 카드를 태그해서 로긴되도록 해야하는데요...
(2)번과 같이 if 문 블록을 하나 완전 복사해서 [0] ~ [6] 값을 다르게 하니
이상하게 맨 마지막으로 입력된 카드값만([0]~[3]까지만 있는 인식태그값만 인식하고 이전것들은 다 incorrect uid로 나옵니다.
즉, 한개만 썼을때는 어떤것이든 ok인데..두개이상 쓰면 맨 마지막 한개만 ok가 되네요.
제가 if문을 잘못쓴거 같은데...
어떻게 고치면 될까요?
원본소스는 첨부로하겠습니다.
(1) rfid 각 카드별 인식값
if (mfrc522.uid.uidByte[0] == 0x04 &&
mfrc522.uid.uidByte[1] == 0xDA &&
mfrc522.uid.uidByte[2] == 0x75 &&
mfrc522.uid.uidByte[3] == 0x02 &&
mfrc522.uid.uidByte[4] == 0x30 &&
mfrc522.uid.uidByte[5] == 0x4D &&
mfrc522.uid.uidByte[6] == 0x80
)
{Serial.println("Correct UID");
}
else {
Serial.println("Incorrect UID");
delay(5000);
return;
}
(2) if 블럭을 복사해서 적용한 --- 오류나는 코드
//red point of ring
if (mfrc522.uid.uidByte[0] == 0x04 &&
mfrc522.uid.uidByte[1] == 0xDA &&
mfrc522.uid.uidByte[2] == 0x75 &&
mfrc522.uid.uidByte[3] == 0x02 &&
mfrc522.uid.uidByte[4] == 0x30 &&
mfrc522.uid.uidByte[5] == 0x4D &&
mfrc522.uid.uidByte[6] == 0x80
)
if (mfrc522.uid.uidByte[0] == 0xC9 &&
mfrc522.uid.uidByte[1] == 0xF0 &&
mfrc522.uid.uidByte[2] == 0xC6 &&
mfrc522.uid.uidByte[3] == 0x63
)
{Serial.println("Correct UID");
}
else {
Serial.println("Incorrect UID");
delay(5000);
return;
}
els if then
else if then
else
end if
´ëÃæ ÀÌ·¸°Ô ÇÕ´Ï´Ù¸¸.
if º¯¼ö°ª = ºñ±³°ª(0). then ¹®¿ÀÇÂ
else if º¯¼ö°ª = ºñ±³°ª(1). then ¹®¿ÀÇÂ
else if º¯¼ö°ª = ºñ±³°ª(2). then ¹®¿ÀÇÂ
else ¸ðµçº¯¼ö ÃʱâÈ
end if
°ªÀ» ¿©·¯°³ ÀÎÁöÇÏ°í ½ÍÀ¸½Ã¸é if¹® ¾È¿¡¼ or ó¸®(||)·Î ºñ±³ÇØ º¸½Ã¸é ¾î¶³±î ÇÕ´Ï´Ù.
//red point of ring
if (
(mfrc522.uid.uidByte[0] == 0x04 &&
mfrc522.uid.uidByte[1] == 0xDA &&
mfrc522.uid.uidByte[2] == 0x75 &&
mfrc522.uid.uidByte[3] == 0x02 &&
mfrc522.uid.uidByte[4] == 0x30 &&
mfrc522.uid.uidByte[5] == 0x4D &&
mfrc522.uid.uidByte[6] == 0x80)
|| (mfrc522.uid.uidByte[0] == 0xC9 &&
mfrc522.uid.uidByte[1] == 0xF0 &&
mfrc522.uid.uidByte[2] == 0xC6 &&
mfrc522.uid.uidByte[3] == 0x63
)
)
{
Serial.println("Correct UID");
}
else {
Serial.println("Incorrect UID");
delay(5000);
return;
}
½ÄÀ¸·Î if ( (Á¶°Ç1) || (Á¶°Ç2)) { ¸ÂÀ½ } else {Ʋ¸²} ÆÐÅÏÀ» Áֽøé Á¶°Ç1 ¶Ç´Â Á¶°Ç2 À϶§ ¸ÂÀ½À¸·Î µé¾î°¡°í, ¾Æ´Ï¸é Ʋ¸²À¸·Î ºüÁý´Ï´Ù.
int i;
unsigned char cards[][7] = {
{7 /* len */, 0x04, 0xda, 0x75, 0x02, 0x30, 0x4d, 0x80},
{4, 0xc9, 0xf0, 0xc6, 0x63, }
};
for(i=0; i<2; i++) {
int j;
const unsigned char *card = cards[i];
for(j=0; j<card[0]; j++) {
if(card[j+1] != input[j]) break;
}
if(j==card[0]) return 1;
}
return 0;
}
ÀÌ·±½ÄÀ¸·ÎÇϸé Á»´õ ÆíÇÏÁö ¾ÊÀ»±î¿ä?
2°³¸é ¸ô¶óµµ ´õ ¿©·¯°³ÀÇ Ä«µå¸¦ Ãß°¡Çϸé if¹®À¸·Î´Â ³Ê¹« ±æ¾îÁý´Ï´Ù.
¿©±â¼ º¸¸é ÀԷµǾîÀÖ´Â Ä«µå°ªÀ» ÂÞ¿í ...³¡±îÁö ºñ±³ÇÏ°í ¸ÂÀ¸¸é return 1, ¾Æ´Ï¸é return 0 ¸¦ Ãâ·ÂÇÑ´Ù´Â °Ç°¡¿ä?
±×¸®°í Á¤ÀÛ À§ ÄÚµå ³Ö°í ÄÄÆÄÀÏ Çغ¸´Ï ºê·¹À̽º { »ç¿ë ¿À·ù³ª¿À±â¿¡ ( ·Î ¹Ù²ãÁÖ°í ½ÇÇàÇߴµ¥
ÀÌÁ¦´Â int i; ºÎºÐ¿¡¼ ; »ç¿ë¿À·ù³ª¿Í¼ ¿øº»¼Ò½º ¾È¿¡ ÀÖ´Â int ¼±¾ðÇϴ´ë·Î int i = 7; ÀÌ·¸°Ô ÇØÁ൵ ¿À·ù..TT
¹º°¡ ¹®¹ýÀÌ ¸¹ÀÌ ´Ù¸¥°Å °°³×¿ä..
ÀÌ°É ÇÔ¼ö ±×´ë·Î ³ÖÀ¸½Ã°í ¿øÇϽô ºÎºÐ¿¡
if(check_card(mfrc522.uid.uidByte)) {
¸ÂÀ»¶§
}else{
Ʋ¸±¶§
}
ÀÌ·¸°Ô »ç¿ëÇÏ½É µË´Ï´Ù.
i¿Í j °°Àº Ä«¿îÆÃ¿ë º¯¼ö´Â ±×¶§±×¶§ ¼±¾ðÇϰųª, ¹Ý´ë·Î ÄÚµå ¸Ç À§¿¡¼ ¼±¾ðÇÏ´Â °Ô ³´½À´Ï´Ù.