Skocz do zawartości

Pierwszy robot.


Danielos01

Pomocna odpowiedź

Robocik ma na razie przerwę. Zamówiłem parę rzeczy żeby był w pełni gotowy do jazdy(bez prowizorek).

A pro po zczytania kodu pilota to w bibliotece jest przykład, załadowalem i zczytał takie wartości z pilota od TV(przycisk POWER):

Encoding : NEC

Code : 20DF10EF (32 bits)

Timing[67]:

+8950, -4450 + 600, - 500 + 600, - 550 + 550, -1650

+ 600, - 500 + 600, - 550 + 550, - 550 + 600, - 500

+ 600, - 550 + 550, -1650 + 600, -1650 + 550, - 550

+ 600, -1650 + 550, -1650 + 600, -1650 + 550, -1650

+ 600, -1650 + 600, - 500 + 600, - 550 + 550, - 550

+ 550, -1650 + 600, - 550 + 550, - 550 + 600, - 500

+ 600, - 550 + 550, -1650 + 600, -1650 + 550, -1650

+ 600, - 550 + 550, -1650 + 600, -1650 + 550, -1650

+ 600, -1650 + 600

unsigned int rawData[67] = {8950,4450, 600,500, 600,550, 550,1650, 600,500, 600,550, 550,550, 600,500, 600,550, 550,1650, 600,1650, 550,550, 600,1650, 550,1650, 600,1650, 550,1650, 600,1650, 600,500, 600,550, 550,550, 550,1650, 600,550, 550,550, 600,500, 600,550, 550,1650, 600,1650, 550,1650, 600,550, 550,1650, 600,1650, 550,1650, 600,1650, 600}; // NEC 20DF10EF

unsigned int data = 0x20DF10EF;

Mój problem polega na tym że nie wiem jak napisać kod żeby Arduino przez diodę IR wysyłało ten kod do TV.

Chodzi mi o to że jak jest komunikacja Sony to kod trzeba przesłać trzykrotnie, nie mogę znaleźć jak przesyłać kod NEC. Tutaj jest opisany ten protokół ale za bardzo nic nie rozumiem z niego: https://translate.googleusercontent.com/translate_c?depth=1&hl=pl&prev=search&rurl=translate.google.pl&sl=en&sp=nmt4&u=http://www.sbprojects.com/knowledge/ir/nec.php&usg=ALkJrhiLPt0ZvpKkB9wrlVa9O3P7nFqJgw

Link do komentarza
Share on other sites

To wygląda dobrze. Jeśli diodka IR zaświeca, to pewnie nawet do dobrego pinu jest podłączona. W formacie NEC kody są wysyłane jednorazowo. Potem, gdy trzymasz wciśnięty przycisk nadajnik powtarza tylko takie specjalne coś (rozbiegówkę ramki) o długości 0 bitów. Ten pierwszy program był niezły, ale spróbuj wysłać swój kod tylko raz albo w odstępach np. co 5 sekund, żeby dla telewizora to wyglądało jak osobne wciśnięcia przycisku.

W kodzie funkcji sendNEC widzę, że ona poprawnie zadziała i wyśle samą rozbiegówkę gdy wywołasz ją tak: irsend.sendNEC(0, 0);

tak więc niech Twoja pętla składa się z:

  irsend.sendNEC(0x20DF10EF, 32);
 delay(40);
 irsend.sendNEC(0, 0);
 delay(100);
 irsend.sendNEC(0, 0);
 delay(100);
 irsend.sendNEC(0, 0);
 delay(5000);

Czasy opóźnień dobrałem tak, by początki nadawania każdej ramki były oddalone od siebie o ok. 110ms - tyle przewiduje ten standard. Ostatnie 5s to czas między kolejnymi "wciśnięciami" tego samego przycisku. Daj znać czy ruszyło.

  • Lubię! 1
Link do komentarza
Share on other sites

kolejny raz dzięki wielkie, wszystko działa bez zarzutów nawet zasięg diody jest duża. Mam jeszcze takie pytanko jak i co musiałbym zakupić żeby sterować Arduino telefonem z androidem. Chodzi mi o to żeby wysyłać sygnały do Arduino, a Arduino do telewizora czy innego urządzenia przez podczerwień.

Link do komentarza
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ść
Dołącz do dyskusji! Kliknij i zacznij pisać...

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

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.