Kurs Arduino #14: Obsługa modułu nRF24L01+

3. Pierwszy program- transmisja zmiennej typu int

Jeżeli wystąpią jakieś problemy z transmisją lub jej brakiem to należy podłączyć, jak najbliżej pinów zasilących modułu nRF24L01+ kondensator elektrolityczny 10uF albo ceramiczny 100nF (należy wybrać jeden z nich)

Pierwszy program będzie prosty bo będzie polegać jedynie na przesłaniu zmiennej boolowskiej i zinterpretowanie jej po stronie odbiornika.

Schemat nadajnika:

kurs14.1nadajnik

Program nadajnika:

Jak widać kod jest stosunkowo prosty.  Na samym początku definiujemy biblioteki, z których będziemy korzystać. Następnie tworzymy kod naszej transmisji. Gdy już to mamy to musimy stworzyć instancję komunikacji, podporządkowaną pinom 9 (dla CE ) i 10 dla (CS). Teraz w void setup uruchamiamy moduł oraz rozpoczynamy transmisję. W pętli głównej programu przypisujemy zmiennej dla liczb całkowitych odczyt z przycisku. Tutaj ważna uwaga. Przy obsłudze tych modułów musimy prawidłowo rozróżniać typy jakie musimy wykorzystać. Jak np. w naszym programie korzystamy z liczb całkowitych to musimy dać typ int, a jak np. zmiennoprzecinkowe (odczytując temperaturę) to musimy użyć float. Następnie tak przygotowane dane wysyłamy poprzez funkcję radio.write() podając najpierw jaką zmienną wysyłam, a po przecinku jaką ta zmienna ma długość (wyrażoną typem zmiennej). Program naszego nadajnika jest gotowy. Teraz pozostał nam odbiornik.

Schemat odbiornika:

kurs14.1odbiornik

Program odbiornika:

Do void setup() robimy tak samo jak dla nadajnika. Następnie ustawiamy diodę jak wyjście. Ustawiamy, aby przy uruchomieniu Arduino, program poczekał 1s, nie jest to wymagane ale bez tego czasem były problemy z modułem. Następnie uruchamiamy moduł, zaczynamy odczyt z pierwszego zdefionowanego kanału o kodzie przez nas ustalonym, a następnie zaczynamy odczyt danych. W pętli głównej programu sprawdzamy, czy są jakieś dane do odbioru. Jeśli są to je odczytaj a następnie zapisz do zmiennej stan. Nazwy zmiennej nie muszą być takie same w nadajniku i odbiorniku. Najważniejsze, żeby typ był taki sam, albo kompatybilny względem tego w nadajniku. Okej, mamy już nasze dane. W tym przypadku z nadajnika zostało wysłane zero (stan przycisku odczytany przy pomocy digitalRead() ) więc chcemy aby było to jakoś zinterpretowane, więc tworzymy funkcję warunkową (na potrzeby kursu jest to prosta funkcja, ale w jej miejsce możesz wstawić cokolwiek chcesz). która dla wartości zero wykona jakiś program. W tym przypadku zapali diodę. Jeżeli wartość zmiennej jest inna od zera to zgaś diodę.

Po wgraniu programów powinniśmy otrzymać taki efekt: