Skocz do zawartości

Pomocna odpowiedź

Napisano

Dzień dobry!

Pobieżnie przejrzalem forum i nie znalazlem odpowiedzi na moje pytanie, wiec moze ktos bedzie umial mi pomoc. Od razu zaznaczam, ze jestem slaby w elektronice i programowaniu, wiec pytanie moze byc dla niektorych banalne, jednak ja mam z tym problem. Chodzi o odczyt wielu kart RFID, jedna po drugiej, z tym ze musza byc one przylozone w odpowiedniej kolejnosci (jest to jedna z zagadek w escape roomie). W zalaczniku znajduje sie kod, jakim probowalem zrobic to w arduino - jest to przerobiony kod z filmiku będącego instrukcją do zakupionego modulu ( https://botland.com.pl/rfid/6765-modul-rfid-mf-rc522-1356mhz-spi-karta-i-brelok.html - link do modulu i filmiku). Generalnie moduł bez problemu odczytuje pierwszą karte - i to niezaleznie od tego, ktora z nich ustale jako numer jeden. Jednakze przy probie odczytu drugiej karty za kazdym razem wyswietlana jest informacja o niepoprawnosci karty. Czy ktos ma moze jakis pomysl ,jak sprawe rozwiazac? Z gory dziekuje za odpowiedzi i pozdrawiam

rfid.txt

Postaram się pomóc, najwyżej ktoś bardziej znający się na temacie będzie musiał pomóc.

Problem leży w tej linijce:

     if (rfid.uid.uidByte[0] == UID2[0] && 
         rfid.uid.uidByte[1] == UID2[1] &&
         rfid.uid.uidByte[2] == UID2[2] &&
         rfid.uid.uidByte[3] == UID2[3])
         { karta2 = true;
         if (karta1==true&&karta2==true)

W tym momencie zagnieździłeś if'a w if'ie, a powinny być to moim zdaniem dwa osobne if'y.

Jeżeli odczytuje karty, to może kwestia logiki?

odczytajKarte();

if (karta1 == false && karta2 == false) {
     if (UID karty == UID karta1) {
     karta1 == true;
   }

i ten warunek już się nie wykona przy kolejnym przejściu przez loop().

Jezeli dopiszesz kolejny warunek

 
if (karta1 == true && karta2 == false) {
     if (UID karty == UID karta2) {
         karta2 == true; 
     } else {
         karta2 == false;
         karta1 == false; // i sekwencje powtarzasz od początku (lub zostawiasz true)

i pozostaje sprawdzenie:

 
if (karta1 && karta2) {
     otworzDrzwi();
}

Sorry za pseudo kod - ale pewnie próbowałbym to zrobić w ten sposób.

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...