Skocz do zawartości
robo1238

Podczerwień

Pomocna odpowiedź

Witam, chciałbym się dowiedzieć jak wygląda sterowanie podczerwienią. Zastosuje procesor attiny2313 i język programowania bascom. Z programem sobie poradzę, nie wiem jednak jak odczytać kod z pilota od tv. Wiem że każdy przycisk w pilocie ma swój adres i komendę,

Zastosował bym polecenie;

If Address = 10 And Command = 107 Then

Toggle Portb.0

Proszę o pomoc, jak odczytać adres i komendę dla dowolnego przycisku w pilocie?, tak jak w tym przypadku jest, 10 i 107.

__________

Komentarz dodany przez: Treker

Udostępnij ten post


Link to post
Share on other sites

Przeczytaj co to RC5, a następnie otwórz help-a do Bascoma. Znajdziesz tam polecenie GetRc5 wraz z przykładowym kodem.

Udostępnij ten post


Link to post
Share on other sites

Tą pomoc bascoma widziałem, jednak tam nie pisze jak odczytać komendę z pilota, dlatego pytam was.

Udostępnij ten post


Link to post
Share on other sites

A co niby robi ten kod?

'Wyjście detektora podłącz do PIND.2
'Funkcja GETRC5 używa licznika TIMER0 i jego przerwania.
'Ustawienia licznika są zapamiętywane i odtwarzane po wykonaniu
funkcji.
'Nie dotyczy to jednak obsługi przerwań!
'ustawiamy linię wejściową dla danych RC5
Config Rc5 = Pind.2
'Procedura przerwania TIMER0 jest wstawiana automatycznie.
'Należy tylko włączyć system przerwań!
Enable Interrupts
'określamy zmienne
Dim Address As Byte , Command As Byte
Do
'teraz sprawdzamy czy jakiś klawisz pilota został naciśnięty
'Uwaga! Po włączeniu zasilania wszystkie linie portów pracują
'jako wejścia. Dlatego nie używamy tutaj instrukcji określających
'kierunki portów.
'Jeśli wymagane jest określenie kierunku końcówki portu usuń
'komentarz z poniższej linii.
'Config Pind.2 = Input
Getrc5(address , Command)
'sprawdzamy czy adres jest równy 0 (korzystamy z pilota TV)
If Address = 0 Then
'zerujemy znacznik w słowie RC5
'bit znacznika jest zmieniany podczas każdej transmisji
Command = Command And &B10111111
Print Address ; " " ; Command
End If
Loop
End

Udostępnij ten post


Link to post
Share on other sites

Nic z tego nie rozumiem, mógłby ktoś to opisać swoimi słowami?

Słyszałem że komendę z pilota można odczytać za pomocą programu Girder, tylko nie wiem jak.

Udostępnij ten post


Link to post
Share on other sites

W kodzie, który Ci podałem masz przecież bardzo dokładnie komentarze. Czego konkretnie nie rozumiesz?

P.S. Jeśli nie chcesz otrzymać ostrzeżenia popraw temat oraz pole "skąd" w Twoim profilu.

Udostępnij ten post


Link to post
Share on other sites

Chciałbym sterować kilkoma urządzeniami, np. takim kodem

If Address = 10 And Command = 107 Then

Toggle Portb.0

If Address = 10 And Command = 108 Then

Toggle Portb.1

If Address = 10 And Command = 109 Then

Toggle Portb.2

Tylko jak sprawdzić np, jaką komendę ma przycisk 1, 2, 3 itd. na pilocie.

Tego nie rozumiem.

Udostępnij ten post


Link to post
Share on other sites
Tutaj jest opisane jak sprawdzić jaki adres i komendę mają poszczególne przyciski pilota.

Udostępnij ten post


Link to post
Share on other sites

Koledzy się tutaj rozwodzą nad RC5, tylko jest jeden warunek, ów pilot z TV posiadany przez autora wątku musi jeszcze nadawać w RC5, który to nie jest znowu tak popularny jakby można było myśleć.

Ja w domu sprawdzałem wszystkie piloty jakie mam (łącznie 8) i żaden nie nadje w RC5 (Nawet stary PHILIPS, a teoretycznie powinien bo to oni ten standard opracowali), albo jest to standard SONY SIRC, albo danego producenta LG, lub JVC.

Pierwszy problem jaki trzeba rozwiązać to zidentyfikować pilot i jego kod, potem dopiero można próbować cokolwiek dekodować.

Udostępnij ten post


Link to post
Share on other sites

Z tym nie będzie problemu bo mam pilot ze standardem RC5. Jest to pilot firmy ELEMIS NZS2040. Zresztą można kupić pilot za 15zł na allegro.

Udostępnij ten post


Link to post
Share on other sites

Właśnie niedawno znalazłem tablicę, nie wiem czy o to chodziło.

http://www.easy-soft.net.pl/artykuly/jezyk-c/dekoder-kodu-rc5

To w takim razie mam pytanie, czy takie komendy będą działać?

If Address = 10 And Command = 1 Then

Toggle Portb.0

If Address = 10 And Command = 2 Then

Toggle Portb.1

If Address = 10 And Command = 3 Then

Toggle Portb.2

Czy jeśli do portów 0,1,2 podepnę np. diody a na pilocie wcisnę 1,2,3 to diody się zapalą ?

Udostępnij ten post


Link to post
Share on other sites
Czy jeśli do portów 0,1,2 podepnę np. diody a na pilocie wcisnę 1,2,3 to diody się zapalą ?

I tak i nie, diody zaczną migać z dość dużą częstotliwością, dopóki będziesz trzymał wciśnięty przycisk na pilocie. W momencie gdy go puścisz dioda będzie albo świecić dalej albo zgaśnie. Dlaczego tak będzie? To chyba logiczne, ponieważ dałeś zmianę stanu pinu gdy jest odbierany ten kod z pilota, a procesor będzie sprawdzał ten warunek kilka do kilkunastu milionów razy na sekundę 🙂.

Udostępnij ten post


Link to post
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!

Gość
Napisz odpowiedź...

×   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...