
Piloty wysyłają komendy w znanych im standardach. Do takich najpopularniejszych należą RC5, RC6. Są jeszcze standardy wysyłania opracowane przez firmy dla swoich produktów, lecz my zajmiemy się RC5. Potrzebujemy zatem pilota który nadaje w takim standardzie, ja mam pilot firmy Goldstar, który w takim standardzie nadaje (Jeżeli nie masz takiego to musisz kupić „pilot nadający w standardzie RC5”, czasami piloty uniwersalne nadają w RC5). Sygnał jest wysyłany za pomocą promieniowania podczerwonego, jest modulowany co oznacza, że komendy są wysyłane za pomocą impulsów prostokątnych o częstotliwości 36kHz.
Nadajnik, który pracujące według standardu RC5 transmituje 14-bitowe słowa danych, kodowane w formacie bi-phase, zwanym także kodem Manchester. Pierwsze dwa bity słowa są zawsze jedynkami i tworzą razem sygnał startu.
Następny bit jest bitem kontrolnym (toggle bit), zmienianym w kolejnych nadawanych słowach, gdy użytkownik przytrzyma klawisz pilota ? umożliwia to powtarzanie komend.
Kolejne 5 bitów reprezentuje adres urządzenia, które ma być właściwym odbiornikiem transmisji. Dla przykładu: odbiorniki telewizyjne maja zazwyczaj adres 0, a magnetowidy adres 5.
Ostatnie 6 bitów reprezentuje jedną z 64 możliwych komend. Żeby to wszystko sprawnie działało to musimy wykorzystać odbiornik podczerwieni, taki który odbiera sygnał o częstotliwości 36kHz. W moim układzie jest zamontowany TSOP1736.
Skoro wiemy jak to działa w teorii to nie pozostaje nic innego jak przejść do praktyki ;). Program standardowo zaczynamy instrukcjami deklaracji procesora i jego prędkości:
- $regfile „attiny2313.dat” ‚procesor Attiny2313
- $crystal = 4000000 ‚kwarc 4MHz
Teraz należy zadeklarować piny wejścia i wyjścia, czyli nasze diody to wyjścia a odbiornik podczerwieni to wejście. TSOP’a możemy zadeklarować na dwa sposoby:
- Config Portb.0 = Input
- ‚albo
- Config RC5 = Portb.0
Jednak ja wybiorę ten co jest w 3.linijce ze względów estetycznych, co prawda to nie jest duży program ale jakby było potrzeba zadeklarowania większej ilości wejść to byłoby widać, które wejście to odbiornik podczerwieni. Diody deklarujemy jak w Bascom: Pierwszy program.
W tym momencie musimy zdefiniować zmienne jako bajty używając intrukcji Dim, działa on na takiej zasadzie :
- Dim nazwa as typ
- ‚nazwa- nazwa zmiennej
- ‚typ- typ zmiennej, np. byte, bit, word, string itd.
lecz jeśli nasza deklaracja zmiennych jest większa niż jedna zmienna to następne piszemy obok oddzielając przecinkiem. Także nasza definicja wygląda tak:
- Dim Adres As Byte , Komenda As Byte ‚definicja zmiennych
potrzebujemy jeszcze włączyć globalne przerwania za pomocą instrukcji:
- Enable Interrupts ‚włączenie globalnych przerwań
Zakończyliśmy już ustawienie podstawowych parametrów pracy procesora, pozostało nam zacząć główną pętle używając intrukcji Do, teraz musimy zasygnalizować mikokontrolerowi, że „jest gotowy” na odbieranie sygnału Rc5 przy pomoc instrukcji GetRC5:
- Getrc5(adres , Komenda) ‚gotowy do odbioru adresu
- Komenda = Komenda And &B01111111 ‚i komendy
Jak już wiemy, adres jest wysłany wraz z komendą, co nam ułatwia zadanie- musimy tylko zadeklarować jaką komendę chcemy odbierać i tutaj musimy użyć instrukcji IF oraz zmienną komenda, którą wcześniej zdefiniowaliśmy:
- If Komenda = 1 Then
- Pinb.4 = 1 ‚jezeli odberana komenda
- Waitms 150 ‚to 1 to wlacz diode
- ‚i czekaj 150ms
- Elseif Komenda = 2 Then ‚jeżeli zostanie wcisiniety
- Pinb.3 = 1 ‚ten sam przycisk na
- Waitms 150 ‚na pilocie to stan
- ‚wyprowadzenia zostanie
- Elseif Komenda = 3 Then ‚zanegowany
- Pinb.2 = 1 ‚czyli w tym przypadku dioda zgasnie
- Waitms 150
- Elseif Komenda = 4 Then
- Pinb.1 = 1
- Waitms 150
Skąd wiedzieć za co jaka komenda odpowiada ?
Pozostało nam już tylko zakończyć instrukcję IF, zamknąć pętle i zakończyć program:
- End If
- Loop ‚zamkniecie petli
- End ‚koniec programu
Dzięki za uwagę, jak chcesz być na bieżąco z postami to kliknij ‚Lubię to !‚.
Pozdrawiam ;)