Skocz do zawartości

Skrzynki dla pracowników otwierane brelokami RFID


adammatuszewski

Pomocna odpowiedź

Chwilę mi zajęło, żeby kupić drobiazgi potrzebne do budowy prototypu. Na razie mam to, co na zdjęciach:

79689910_2503156116449934_6605771748354818048_n.thumb.jpg.0e71bd9d922e9a54fd8da8ee5e6c4df9.jpg79894501_446208042995884_5600964815175548928_n.thumb.jpg.0768d0d825ba83e74a104d4666f89f21.jpg

 

Skrzynka bardziej przypomina pocztową, a oprócz tranzystorów kupiłem na razie po prostu moduł przekaźników. Zamek i moduł RFID chyba powinny byc już docelowe.

Moduł jest taki:

https://botland.com.pl/pl/grove-moduly-do-komunikacji/4417-grove-czytnik-rfid-125khz-z-antena.html

Aktualnie próbuję napisać program do Arduino i mam problem ze zrozumieniem biblioteki ściągniętej do modułu. Poniżej cały kod:

#include "Suli.h"
#include "Wire.h"
#include "SoftwareSerial.h"

#include "Rfid_Reader_Arduino.h"


SoftwareSerial mySerial(A5, A4);

Rfid_Reader_Arduino rfid(&mySerial, -1);

void setup()
{
    Serial.begin(115200);

}

int len;
unsigned char dta[50];

void loop()
{
    if(rfid.isData())
    {
        len = rfid.getData(dta);
    }
    
    if(len>0)
    {
        for(int i=0; i<len; i++)
        {
            Serial.write(dta[i]);
        }
        len = 0;
    }
}

Program działa prawidłowo - pokazuje w monitorze protu szeregowego numer breloka w formacie "02002428CBC5", przez co wnioskuje, że wszystko dobrze podłączyłem.

Mam natomiast problem z uchwyceniem zmiennej która przechowuje odczytany kod. Kiedy próbuje konstruować funkcję if w oparciu o zmienną len lub dta, to program pokazuje błąd lub układ po prostu nie działa. Chciałbym, aby działało to w ten sposób, że przy odczytaniu kodu x na pin 1 kontroler podaje napięcie wysokie, a jak kod y to wysokie na pin 2 itd.

Czy wie ktoś jak to zrobić?

 

Link do komentarza
Share on other sites

13 minut temu, adammatuszewski napisał:

Kiedy próbuje konstruować funkcję if w oparciu o zmienną len lub dta, to program pokazuje błąd lub układ po prostu nie działa.

Wiesz - to całkiem prawdopodobne, ale dopiero gdy pokażesz te próby to będziemy w stanie Ci powiedzieć co robisz źle.

 

Link do komentarza
Share on other sites

Czyli napisałeś coś takiego:

if (dta[i] = " 02002428CBC5 ");

Co w przełożeniu na polski brzmi:

Jeśli pojedynczy znak o numerze i z tablicy dta jest równy " 01002428CBC5 " to nie rób nic.

Jak myślisz, ma to jakikolwiek sens?

Zapoznaj się, proszę, z podstawami języka. Są tu bardzo pomocne kursy, w sieci możesz znaleźć dużo materiałów na temat C/C++ (na przykład tutaj). Próba napisania jakiegokolwiek programu nie mając zielonego pojęcia o języku, w jakim się to pisze przypomina próbę pisania haiku po japońsku nie znając ani japońskiego, ani zasad tworzenia poezji w jakimkolwiek języku.

Nie obraź się, ale nikt Ci tu nie będzie tłumaczył od podstaw tego, co napisano setki razy w kursach, tutorialach, książkach i przeróżnych innych materiałach.

 

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

Dzięki za linka, pewnie mi się przyda. Pewnie powinienem się doszkolić bardziej przed pierwszym projektem, ale nic tak nie motywuje jak udane zbudowanie czegokolwiek co zadziała.

Może myślę błędnie, ale wydaje mi się, że jeśli odnajdę zmienną która przechowuje odczytany kod z breloka to będę mógł z jej użyciem zbudować prostą funkcję if.

Jeśli jest to ponad moje siły to odpuszczę, natomiast jeśli jest to kilka linijek, które załatwi sprawę, to byłbym wdzięczny za wskazówkę.

Tak, czy inaczej dzięki za pomoc.

Link do komentarza
Share on other sites

7 minut temu, adammatuszewski napisał:

Może myślę błędnie, ale wydaje mi się, że jeśli odnajdę zmienną która przechowuje odczytany kod z breloka to będę mógł z jej użyciem zbudować prostą funkcję if.

Ale przecież nie istnieje taka zmienna (tablica nie jest zmienną). Musiałbyś albo taką zmienną typu String stworzyć (czyli nauczyć się jak to się robi) albo posłużyć się bezpośrednio tablicą którą już masz (i też się tego nauczyć). Tak przy okazji - if to nie funkcja tylko instrukcja... to już nawet nie język a alfabet!!!

A żebyś nie stracił chęci do pisania... jest to faktycznie kilka linijek. Tyle, że na dzisiaj te linijki są pisane w języku którego nie rozumiesz, w dodatku alfabetem którego nie znasz. Przejrzyj sobie np. ten kurs który Ci podrzuciłem (drugi o C++ też), poczytaj o tablicach, pętlach[1], wtedy wróć to będziemy mogli gadać. I na 100% nie jest to ponad Twoje siły, wymaga jedynie nieco cierpliwości.

--

[1] Jeśli nie zauważyłeś to to była wskazówka o którą prosiłeś 🙂

Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.