Zarówno w celach edukacyjnych jak i praktycznych, napisałem bibliotekę umożliwiającą wykorzystanie w swoim projekcie odbiór danych z pilota podczerwieni pracującego w protokole NEC. Piloty tego typu można dziś spotkać bardzo często do sterowania urządzeniami domowymi, jest też wiele bardzo tanich i nieustępujących ładnym designem pilotów do nabycia na znanych portalach aukcyjnych, czy w sklepach internetowych.
Ukazana tutaj biblioteka zawiera się w trzech plikach:
- IR_config.h - służący do wyboru standardu jaki obsługujemy (oprócz standardu NEC, można dodać także innych, a wszystkie linkowane będą tylko jednym plikiem nagłówkowym)
- NEC.c - gdzie zostały zawarte wszystkie funkcje i procedury realizujące dekodowanie sygnału oraz inicjalizację sprzętu)
- NEC.h - którego przeznaczeniem jest wybór funkcji z jakich chcemy korzystać w obrębie standardu. Zawiera również kilka istotnych parametrów definiujących standard NEC.
- Możliwość obsługi wielu standardów
- Możliwość dodawania standardów (po ówczesnym napisaniu odpowiednich procedur oczywiście)
- Możliwość wybiórczej kompilacji wybranych funkcji/opcji
- Obsługa oparta na zdarzeniach
- Licznik odebranych ramek
- Redundancja odebranego adresu i komendy (weryfikacja poprawności ramki)
- Możliwość rozszerzenia pola danych do rozmiaru 32 bitów w jednej ramce
Wymaga scalonego odbiornika podczerwieni typu TSOP lub podobnego.
Do obliczania ilości odebranych ramek zostało wykorzystane przerwanie od przepełnienia licznika (tego samego, który odpowiedzialny jest za dekodowanie sygnału i jest związany z trybem Input Capture). Wobec tego wymagany jest tylko jeden timer. Być może w przyszłości powstaną aktualizację tej biblioteki, również na inne procesorki nie posiadające takiej konfiguracji. Jest ona dokładnie opisana więc nie powinno być problemu z jej zrozumieniem. Z racji wykorzystania przerwań, konieczne jest uruchomienie przerwań globalnych. Biblioteka dostępna na GitHub'ie: