• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Pomoc w programie do odczytu kart rfid
#1
Dzień dobry. Program czyta mi kartę. Wyświetla kod. Nie potrafię porównać nr kary odczytanego z nr zapisanym w programie i np. zmianę stanu na pinie.

void receivedData(uint8_t* data, uint8_t bits, const char* message) {
    Serial.print(message);
    Serial.print(bits);
    Serial.print("bits / Nr karty: ");
    //Print value in HEX
    uint8_t bytes = (bits+7)/8;
    for (int i=0; i<bytes; i++) {
        Serial.print(data[i] >> 4, 16);
        Serial.print(data[i] & 0xF, 16);
    }
    Serial.println();

}


Wyświetla coś takiego:

Card readed: 24bits / Nr karty: 1AD169
Card readed: 24bits / Nr karty: 1AD169
Card readed: 24bits / Nr karty: 1AD169



Jak to zrobić ?
if nr_karty = 1AD169 to pin = HIGH 
 
Odpowiedź
#2
W data[] masz numery, czyli tablica, zapisz sobie numer karty w takiej tablicy i porównaj i-te elementy, wszystkie zgodne to pin = HIGH .
Miło być decenianym https://buycoffee.to/kaczakat
 
Odpowiedź
#3
Czy ktoś pomoże to uprościć?
..........
if ((wg.getCode() == 1757545) || (wg.getCode() == 8741141) || (wg.getCode() == 9211837) || itd..........) 
{
  digitalWrite(PIN_P1, LOW);

.............

Będę wdzięczny za pomoc.
 
Odpowiedź
#4
Rozumiem, że tak otrzymujesz liczbę zamiast tablicy bajtów, to sobie ją zapisz przed if do zmiennej uint32 i porównuj do zmiennej, będzie trochę szybciej niż wywoływać funkcję X razy, a samego ifa nie mam pomysłu jak uprościć, dla mnie wygląda OK.
Miło być decenianym https://buycoffee.to/kaczakat
 
Odpowiedź
#5
(14-01-2023, 16:52)kaczakat napisał(a): Rozumiem, że tak otrzymujesz liczbę zamiast tablicy bajtów, to sobie ją zapisz przed if do zmiennej uint32 i porówój do zmiennej, będzie trochę szybciej niż wywoływać funkcję X razy, a samego ifa nie mam pomysłu jak uprościć, dla mnie wygląda OK.
Dzięki wielkie. Wygląda że działa i się nie myli. Potestuje i chyba zostawię tak jak jest. Fajnie by było mieć kartę matkę po odczytaniu której można by było dodawać nowe - ale to już wyższa szkoła jazdy Smile
 
Odpowiedź
#6
Wystarczy napisać funkcję w switch case, po wykryciu wybranej karty program przechodzi przez np. 10s casem, gdzie odczyt innej karty, nie zapisanej na liście dodaje ją do tablicy kart uprawnionych.
Miło być decenianym https://buycoffee.to/kaczakat
 
Odpowiedź
  


Skocz do:


Przeglądający: 1 gości