if ¹®Á» ºÁÁÖ¼¼¿ä...

   Á¶È¸ 2539   Ãßõ 0    

MFRC522.ino (4.6K), Down : 2, 2019-08

 아두이노 소스인데...


하기 (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;

  }

ªÀº±Û Àϼö·Ï ½ÅÁßÇÏ°Ô.
ȲÁø¿ì 2019-08
if        then
els if      then
      else if      then
              else
end if
´ëÃæ ÀÌ·¸°Ô ÇÕ´Ï´Ù¸¸.
if º¯¼ö°ª = ºñ±³°ª(0). then ¹®¿ÀÇÂ
    else if º¯¼ö°ª = ºñ±³°ª(1).  then ¹®¿ÀÇÂ
              else if º¯¼ö°ª = ºñ±³°ª(2). then ¹®¿ÀÇÂ
                        else  ¸ðµçº¯¼ö ÃʱâÈ­
end if
À§ 2¹ø Äڵ忡¼­ ù¹ø° ID(6°³Ç׸ñ)ÀÌ ¸Â´Â°æ¿ì ¾ÈÀÇ if¹®À¸·Î µé¾î°¡´Âµ¥ ´ç¿¬È÷ uidByte[0]°ªÀÌ 0x04°¡ ¾Æ´Ï¾î¼­ Incorrect UID·Î ºüÁ³À» °ÍÀÔ´Ï´Ù. ±×¸®°í ´Ù¸¥ Ä«µå¸¦ ´ë¸é ¾Æ¹«·± °ªÀÌ ¾È³ª¿Ã°Çµ¥¿ä. ¹®¹ýÀ¸·Î º¸¸é ù¹ø° if¹®ÀÌ °ýÈ£°¡ ¾ø´Âµ¥, ÀÌ·²¶§´Â Àû¿ëµÇ´Â ¹üÀ§°¡ µÎ¹ø° if¹®ÀÌ µÇ°í, else´Â µÎ¹ø° if¹®¿¡¼­ Àû¿ëµÇ´Â else ÀÔ´Ï´Ù.

°ªÀ» ¿©·¯°³ ÀÎÁöÇÏ°í ½ÍÀ¸½Ã¸é 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 À϶§ ¸ÂÀ½À¸·Î µé¾î°¡°í, ¾Æ´Ï¸é Ʋ¸²À¸·Î ºüÁý´Ï´Ù.
ÂùÀÌ 2019-08
int check_card(const unsigned char *input) {
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¹®À¸·Î´Â ³Ê¹« ±æ¾îÁý´Ï´Ù.
     
±è°Ç¿ì 2019-08
¾Ë·ÁÁּż­ °¨»çÇѵ¥...±×·¯¸é ¹Ø¿¡ else¿¡ ÀÇÇÑ ÀÀ´ä󸮴 ¾î¶»°Ô µÇ³ª¿ä?

¿©±â¼­ º¸¸é ÀԷµǾîÀÖ´Â Ä«µå°ªÀ» ÂÞ¿í ...³¡±îÁö ºñ±³ÇÏ°í ¸ÂÀ¸¸é return 1, ¾Æ´Ï¸é return 0 ¸¦ Ãâ·ÂÇÑ´Ù´Â °Ç°¡¿ä?

±×¸®°í Á¤ÀÛ À§ ÄÚµå ³Ö°í ÄÄÆÄÀÏ Çغ¸´Ï ºê·¹À̽º { »ç¿ë ¿À·ù³ª¿À±â¿¡ ( ·Î ¹Ù²ãÁÖ°í ½ÇÇàÇߴµ¥

ÀÌÁ¦´Â int i; ºÎºÐ¿¡¼­ ; »ç¿ë¿À·ù³ª¿Í¼­ ¿øº»¼Ò½º ¾È¿¡ ÀÖ´Â int ¼±¾ðÇϴ´ë·Î int i = 7; ÀÌ·¸°Ô ÇØÁ൵ ¿À·ù..TT

¹º°¡ ¹®¹ýÀÌ ¸¹ÀÌ ´Ù¸¥°Å °°³×¿ä..
          
ÂùÀÌ 2019-08
Ȥ½Ã ÀÌ ¼Ò½º¸¦ À§ ¼Ò½º¸¦ ´ëüÇؼ­ ÇÔ¼ö ¾È¿¡ ³ÖÀ¸½Å°Ç°¡¿ä? ±×·¯½ÃÁö ¾ÊÀºÀÌ»ó ¼ÕÄÚµùÀ̱ä ÇÏÁö¸¸ Á¦ ´«¿¡ Ʋ¸°°Ç Àß º¸ÀÌÁö ¾Ê½À´Ï´Ù.
ÀÌ°É ÇÔ¼ö ±×´ë·Î ³ÖÀ¸½Ã°í ¿øÇϽô ºÎºÐ¿¡

if(check_card(mfrc522.uid.uidByte)) {
¸ÂÀ»¶§
}else{
Ʋ¸±¶§
}

ÀÌ·¸°Ô »ç¿ëÇÏ½É µË´Ï´Ù.
ÀÌõdz 2019-08
int i; ¹®ÀåÀ» 1¶óÀÎÀ¸·Î º¸³»°Å³ª, ¾Æ´Ï¸é for ¹® ¹Ù·Î ¾ÕÀ¸·Î º¸³»¸é µË´Ï´Ù.
i¿Í j °°Àº Ä«¿îÆÃ¿ë º¯¼ö´Â ±×¶§±×¶§ ¼±¾ðÇϰųª, ¹Ý´ë·Î ÄÚµå ¸Ç À§¿¡¼­ ¼±¾ðÇÏ´Â °Ô ³´½À´Ï´Ù.


óÀ½À¸·Î (238,648)
Á¦¸ñ
2CPU : »ýÈ° 2CPU 09-27   5321   ¿ÀÀ̵µ½½·¹¡¦
¿Ï·á (3)
2CPU : ÆǸŠ09-27   211   ÃÖÀçÁ¤2cpu
2CPU : ÆǸŠ09-27   332   Á¶¿ëÁÖ2cpu
2CPU : QnA 09-27   1999   Á¦¶óµåTN
2CPU : ÆǸŠ09-27   399   ´ã´ã´ã
2CPU : ÆǸŠ09-27   565   ÃÖÀçÁ¤2cpu
2CPU : ÆǸŠ09-27   534   ÀüÇö±Ô
2CPU : QnA 09-27   4144   ±¸Â÷´Ï
2CPU : ÀÚÀ¯°Ô½ÃÆÇ 09-27   561   ³ª¿ì¸¶Å©
2CPU : ÆǸŠ09-27   578   ±¤ÁÖµ¿Å°È£Å×
2CPU : QnA 09-27   2701   ±¤ÁÖµ¿Å°È£Å×
2CPU : ÀÚÀ¯°Ô½ÃÆÇ 09-27   370   ¸ÞÀκ¸µå
2CPU : QnA 09-27   2795   »ç¶ûÇ϶ó
2CPU : °ßÀû 09-27   286   Àϱ¹
2CPU : ÀÚÀ¯°Ô½ÃÆÇ 09-27   449   ¼­¿ïl°­ÇѸð