Skocz do zawartości

Pierwszy robot.


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

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

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

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...