Witam, na potrzeby projektu wymyśliłem, że sterowanie będzie się odbywało podczerwienią za pomocą uniwersalnego pilota. Poczytałem to i tamto o podczerwieni i myślałem, że jest ona na tyle prosta, że nie będzie problemu z jej implementacją. Ale byłem w błędzie...
Kupiłem czujnik podczerwieni TSOP1736 i podłączyłem go(prawidłowo). Nogę danych podłączyłem do INT1 i przygotowałem to przerwanie do pracy na zboczu opadającym. W ten sposób wykrywam start. W obsłudze przerwania odczekuje 0.4ms(na stabilizację stanu). Po tym czasie sprawdzam stan i jeżeli L to do danych bit na H i odwrotnie(testuję drugą część bitu, a transmisja jest zanegowana przez czujnik). Następnie w pętli 13 razy odczekuje 1.8ms i sprawdzam stany zapisując dane. Na końcu sprawdzam czy odebrano dwa razy z rzędu tą samą daną i jeżeli tak to neguje stan dla diody LED.
Sposób prosty, ale czasem dioda nie chciała zmienić stanu, lub miało to miejsce tylko dla określonego przycisku pilota lub samego pilota.
Większość tego typu problemów jest oparta o liczniki, ale moim zdaniem ich używanie nie jest konieczne, a na prędkości wykonywania kodu mi nie zależy.
Elektrodę przeszukałem, ale tylko BASCOM'a znalazłem
Czy może ktoś podpowiedzieć jak napisać poprawny odczyt podczerwieni? Co robię źle? W ostateczności gotową bibliotekę dla C bym prosił...
Kupiłem czujnik podczerwieni TSOP1736 i podłączyłem go(prawidłowo). Nogę danych podłączyłem do INT1 i przygotowałem to przerwanie do pracy na zboczu opadającym. W ten sposób wykrywam start. W obsłudze przerwania odczekuje 0.4ms(na stabilizację stanu). Po tym czasie sprawdzam stan i jeżeli L to do danych bit na H i odwrotnie(testuję drugą część bitu, a transmisja jest zanegowana przez czujnik). Następnie w pętli 13 razy odczekuje 1.8ms i sprawdzam stany zapisując dane. Na końcu sprawdzam czy odebrano dwa razy z rzędu tą samą daną i jeżeli tak to neguje stan dla diody LED.
Sposób prosty, ale czasem dioda nie chciała zmienić stanu, lub miało to miejsce tylko dla określonego przycisku pilota lub samego pilota.
Większość tego typu problemów jest oparta o liczniki, ale moim zdaniem ich używanie nie jest konieczne, a na prędkości wykonywania kodu mi nie zależy.
Elektrodę przeszukałem, ale tylko BASCOM'a znalazłem
Czy może ktoś podpowiedzieć jak napisać poprawny odczyt podczerwieni? Co robię źle? W ostateczności gotową bibliotekę dla C bym prosił...