Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki

KURS HOME ASSISTANT

Chcesz zautomatyzować swój dom bez skomplikowanego kodowania?
Zastanawiasz się nad wyborem sprzętu, oprogramowania i aplikacji?
Od czego zacząć przygodę z HA? Co będzie najlepsze na start?

Nasz kurs Home Assistant nauczy Cię krok po kroku, jak łatwo zautomatyzować swój dom i oszczędzić na rachunkach za prąd i ogrzewanie. Bez chmur, bez zbędnych abonamentów. Twoja przygoda z Home Assistant zaczyna się tutaj!

↓↓↓

    Szanujemy Twoją prywatność. Możesz wypisać się w dowolnym momencie.




    Teraz jest 31 maja 2025, o 18:58


    Strefa czasowa: UTC + 1





    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 3 ] 
    Autor Wiadomość
    PostNapisane: 7 paź 2018, o 13:41 
    Offline
    Nowy

    Dołączył(a): 20 sty 2015
    Posty: 6
    Pomógł: 0

    Witem znalazłem bibliotekę nec która za bardzo nie chcę działać próbuję uruchomi i coś mi to nie wychodzi potrzebował bym pomocy w uruchomieniu tej biblioteki albo napisaniu nowej dla pilota jak na zdjęciu

    main.c

    Składnia: [ Pobierz ] [ Ukryj ] [ Zaznacz wszystko ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


    ir.c
    Składnia: [ Pobierz ] [ Ukryj ] [ Zaznacz wszystko ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


    ir.h
    Składnia: [ Pobierz ] [ Ukryj ] [ Zaznacz wszystko ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


    pilot
    ObrazekObrazek



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 7 paź 2018, o 14:19 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 17 lip 2013
    Posty: 208
    Lokalizacja: Kielce
    Pomógł: 15

    Do zrobienia jest obsługa dłużej przytrzymywanego przycisku.

    Oryginał pochodzi ze strony firmy Lispol, przy okazji oferty sprzedaży pilota NEC.

    W miejscach gdzie ingerowałem w kod, oryginalna częśc jest zakomentowana.

    Dodałem callbacki i wydaje mi się, że w oryginale był błąd:
    Standard NEC mówi, że bity address i command są ustawione tak, że bit najmłodszy LSB powinien
    być po lewej stronie, najstarszy po prawej. Źródło:

    http://techdocs.altium.com/display/FPGA ... n+Protocol

    Tak więc ramkę z załącznika powinien odczytywać: address 0x04; command 0x72

    Natomiast odczytywana była jako: address 0x20, command 0x4E


    nec.h
    Składnia: [ Pobierz ] [ Ukryj ] [ Zaznacz wszystko ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



    nec.c
    Składnia: [ Pobierz ] [ Ukryj ] [ Zaznacz wszystko ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


    main.c
    Składnia: [ Pobierz ] [ Ukryj ] [ Zaznacz wszystko ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


    Załączniki:

    Aby zobaczyć załączniki musisz się zalogować. Tylko zalogowani użytkownicy mogą oglądać i pobierać załączniki.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 19 paź 2018, o 22:28 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 24 cze 2012
    Posty: 414
    Lokalizacja: Oborniki
    Pomógł: 5

    Napisz ją sam :)

    Wystarczy użyć przerwania sprzętowego oraz jednego z TIMERów :)

    Ja robię to tak:
    1. W przerwaniu wyzwalanym na zboczu opadającym odczytuję z TIMERa czas jaki minął od ostatniego przerwania. Licznik tyka co 0,1ms.
    2. pierwszy impuls powinien trwać 155 tyknięć (wartość +/- ustawiłem na 3 tyknięcia [0,3ms])
    jeśli jest poprawny, to zwiększam licznik poprawnych bitów, jeśli nie, to zeruję licznik i znów czekam na impuls przynajmniej 155 tk
    3. kolejne impulsy to:
    a) 12 tyknięć (+/- 3tk) - logiczne 0
    b) 22 tyknięcia (+/- 3tk) - logiczne 1
    4. Z każdym tyknięciem inkrementuję licznik i w przypadku logicznej jedynki, ustawiam odpowiedni bit w 32 bitowej zmiennej
    5. Jeśli cała ramka zostanie odebrana poprawnie, to wywołuję zarejestrowaną funkcję. Jeśli nie, zeruję licznik i czekam na impuls startowy.

    Z każdym przerwaniem zeruję timer. Należy zawrzeć w programie możliwość wystąpienia impulsu startu nawet w trakcie liczenia bitów, w razie gdyby w trakcie transmisji coś zawiodło ( w praktyce często tak jest) - czyli za każdym razem jak przyjdzie impuls 155 tk należy przerwać odbiór, wyzerować licznik i czekać na kolejne dane.

    Kod tak naprawde na kilka linijek :) Dodatkowo trzeba jeszcze opanować przytrzymywanie przycisku - ja tego nie robiłem, ale z analizatorem stanów nie powinien to być problem.

    Powodzenia :)

    btw. polecam stronę:
    https://exploreembedded.com/wiki/NEC_IR_Remote_Control_Interface_with_8051

    _________________
    Pozdrawiam:
    Mikołaj



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    Wyświetl posty nie starsze niż:  Sortuj wg  
    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 3 ] 

    Strefa czasowa: UTC + 1


    Kto przegląda forum

    Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 0 gości


    Nie możesz rozpoczynać nowych wątków
    Nie możesz odpowiadać w wątkach
    Nie możesz edytować swoich postów
    Nie możesz usuwać swoich postów
    Nie możesz dodawać załączników

    Szukaj:
    Skocz do:  
    cron
    Sitemap
    Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
    phpBB SEO