Close

lieg

Vytvořené odpovědi

Aktuálně je na stránce zobrazeno 30 příspěvků - 1,951. až 1,980. (celkem z 2,760)
  • Autor
    Příspěvky
  • odpověď na: Arduino wifi modul ESP8266 ESP-07 #6948
    Aleš
    Účastník

    Modul určitě zničený není. Žádný převodník úrovní nepotřebujete, arduino i esp si s tím poradí. S čím si ale většinou neporadí je napájení. Je minimálně potřeba připojit na 3.3V kondenzátor 470-1500uF, nebo to napájet z externího zdroje. Tomu že nekomunikuje, a neodpovídá na AT příkazy se moc nedivte. Kdoví, co v tom je za firmware. Může tam být NodeMCU, a potom na AT příkazy neodpovídá. Já když koupím ESP8266, tak se s ním ani nesnažím komunikovat, a rovnou do něj nahraju vyzkoušený firmware, o kterém vím, jak s ním komunikovat (rychlost, atd.). Něco málo najdete na mých stránkách http://xanadu.khnet.info/esp8266.php

    odpověď na: Klon Arduino due R3 #6946
    Strojek
    Účastník

    Pouzil jsem instalacni soubor a pri instalaci jsem mel arduino pripojene a nabidlo me to dokonce i nove ovladace a po nainstalovani vse funguje ..
    Ted mam verzi 1.6.9 predtim jsem mel nejaky arduino 1.6.9 Hourly Build 2016/04/08 08:33 (jen rozbalene) a v tom me to neslo nahrat..

    odpověď na: propojení dvou objektů na dálku #6945
    posjirka
    Účastník

    možná toto by ti mohlo pomoci:
    http://makezine.com/2013/04/04/alexandra-deschamps-sonsino-making-the-good-night-lamp/
    aspon pro inspiraci jak je to možné realizovat …

    odpověď na: Arduino wifi modul ESP8266 ESP-07 #6944
    posjirka
    Účastník

    to ti takto na dálku nikdo neřekne. jediná možnost je použít správný převodník úrovní a vyzkoušet. Někdy není nutný ani převodník a pro testování ti spačí 3 odpory:

    Arduino to ESP8266 By Serial Communication

    Jen pozor na napájení 3,3V. Arduino nepokryje svým zdrojem všechny výkonové nároky WIFI modulu. ESP8266 má tuším až 300-400mA odběr a to už zdroje arduina nejsou nejstabilnější a v nekterých klonech začínají omezovat proud = snižovat napětí zdroje až se celé arduino resetne. Resp. samotníé arduino to zvládne, ale nic dalšího už napájet nezvládne. Takže pokud tam máš LCD display s podsvícením a nějáké čidlo tak už ji z ahranici.

    Odpálit jsi to nemusel, tyhle moduly mají ochranné diody a vnitřní zapojení se navrhuje tak aby se neodpálilo hned.

    odpověď na: Klon Arduino due R3 #6943
    posjirka
    Účastník

    dnes jsem na kolegově NTB nahrával program do jeho arduina a stalo se mi to samé.
    Já to tedy vyřešil přechodem na nižší verzi Arduino IDE 1.0.6, kterou jsem měl na FLASH disku a fungovalo vše bez problému. Použil jsi verzi pro instalaci nebo pro rozbalení (portable) ?

    odpověď na: Zaseknutí arduina #6942
    posjirka
    Účastník

    Lepší je asi tento odkaz :
    https://www.arduino.cc/en/Tutorial/ArduinoISP

    Funguje to jednoduše. Na jedno Arduino (řikejme mu master) se standardně nahraje program Arduino as ISP. najdeš jej v Menu – Example ve nižším středu seznamu.
    Až to naprogramuješ tak se resetuje Arduino (Master) a odpojí od PC. Připojí se to, které chceš naprogtramovat (říkejme mu Slave) a to tak spojíš piny
    Master/Slave
    GND/GND
    +5V/+5V
    13/13
    12/12
    11/11
    10/RESET

    a u Master ještě připojíš kondenzátor 10uF mezi GND a RESET (+ přijde na RESET).
    Master připojíš k PC, v Arduino IDE si nastavíš typ desky SLAVE, port vybereš ten, kde je připojený Master a jako typ programátoru vybereš Arduino as ISP.
    No a dáš nahrát program.
    Po nahrání odpojíš master od PC a Slave používáš samostatně v zařízení. Nebude ti fungovat bootloader takže přes USB teď nic nenaprogramuješ, ale USb seriová komunikace by měla fungovat. Kdybys chtěl znovu nahrát bootloader tak postupuješ úplně stejně, jen místo nahrání vlastního programu si vybereš vobu Tools – Burn bootloader. a máš z něj zpět staré arduino.

    Jinak vysvětlení těch pinů:
    SCK – hodinový signál pro komunikaci (udává master)
    MISO – Master input Slave Output = master poslouchá, slave vysílá data
    MOSI – master output Slave input = master vysílá, slavě poslouchá data
    SS – slouží pro aktivacivybraného paralelního zařízení na sběrnici ISP. V tomto případě ovšem slouží pro restování arduina SLAVE. Po resetu totoiž bootloader chvili čeká jestli jej nechce někdo naprogramovat a pokud ano tak mu to dovolí, pokud ne tak spustí interní program.

    Kondenzátor se na master Arduino mezi reset a GND dává proto aby se master neresetoval. Tím by si totiž tvůj program nahrál sám do sebe a slave by neměl nic.

    odpověď na: Klon Arduino due R3 #6941
    Strojek
    Účastník

    Tak uz jsem to vyresil …. problem byl zrejme v tom, ze jsem nemel arduino instalovane ale stazene a rozbalene..
    Stahnul jsem si verzi 1.6.9 instaloval a v ni to jde bez problemu..
    Jsem uplnej laik a zacatecnik, tak se tu urcite jeste budu ptat ..

    odpověď na: Arduino wifi modul ESP8266 ESP-07 #6940
    ArduXPP
    Účastník

    Takže jsem si ten modul zničil, když jsem použil Rx a TX z arduina uno ?

    odpověď na: Arduino wifi modul ESP8266 ESP-07 #6932
    Zbyšek Voda
    Účastník

    Dobrý den,
    Arduino většinou běží na 5V, ESP na 3.3V. ESP můžete napájet z 3.3V pinu arduina, ale také potřebujete úrovně převést na sériové lince (RX, TX).

    Dá se to udělat pomocí děliče napětí, ale spolehlivější je nějaký převodník, například: http://www.hwkitchen.com/products/logic-level-converter/

    odpověď na: Zaseknutí arduina #6929
    Rob
    Účastník

    Bylo by možné, že byste mi posjirka alespoň trochu přiblížil, jak pracovat s těmi piny ICSP ?
    Našel jsem i jednu stránku, ale chápu jenom to, že jedním arduinem naprogramuju to druhé. Ale nevím jestli je na tom vozítku budu potřebovat obě Arduina nebo jen to naprogramované. A také nechápu, jak bych to asi měl dát naprogramovat… a mnoho dalšího.
    Předem velice MOC děkuji za ochotu!
    Odakz na tu stránku

    odpověď na: IR ovladač #6924
    mitch
    Účastník

    Ještě obrázky. Nějak dlouho trvá než se vždy příspěvek odešle 🙂

    odpověď na: IR ovladač #6922
    mitch
    Účastník

    S tím děličem si měl pravdu. Pouze chyba při kreslení. Dělal jsem to z hlavy, ale zapojené jsem to měl dobře 🙂
    Pro jistotu jsem tam přidal ty odpory jak jsi zmiňoval. Vzal jsem co jsem našel v šuplíku 🙂
    Výrobek je hotový a teď už ho jen zamontovat za TV a natahat finálně kabeláž 🙂

    Attachments:
    odpověď na: IR ovladač #6920
    posjirka
    Účastník

    já myslím , že je to dobrý nejen na poprvé 🙂 .
    Pár poznámek:
    – Odpor R3 si myslím, že patří až za R4 (směrem k RX_BT) – předpokládám, že to má být odporový dělič pro konverzi 5V na 3,3V
    – vstup „NAPETI_Z_TV“ bych pro jistotu oddělil odporem 100R až 470R. můžeš odpálit port Arduina (D2)
    – to samé přívod o IR1 (D11)
    – to samé TX_BT (RX0) – vzhledem, k tomu, že odpojuješ BT modul od napájení nikdy nevíš, co se ti kde nakmitne …

    odpověď na: IR ovladač #6918
    mitch
    Účastník

    Tak snad jsem na nic nezapomněl 🙂
    Poprvé co jsem kreslil schéma v Eagle tak snad dobrý 🙂

    Attachments:
    odpověď na: Řízení kotle s akumulací #6908
    krkstex
    Účastník

    Je úplně jedno na čem to poběží. Arduino mi přišlo jako levná platforma.

    odpověď na: IR ovladač #6907
    mitch
    Účastník

    Abych to shrnul 🙂
    Chci poděkovat všem za cenné rady. Prvním problémem bylo skutečně ovlivňování signálů. Čili tam pomohlo vysílaný signál zpozdit o 100ms.
    Ohledně paměti pomohlo přenést vysílací kódy pomocí PROGMEM.
    Nyní jsem s pamětí takto:

    Projekt zabírá 22 790 bytů (74%)  úložného místa pro program. Maximum je 30 720 bytů.
    Globální proměnné zabírají 816 bytů (39%)  dynamické paměti, 1 232 bytů zůstává pro lokální proměnné. Maximum je 2 048 bytů.

    Celé to funguje tak, že při spuštěné TV (signál z USB od TV do Arduina). Automaticky se zapne LED páska za TV a vyšle se Power kód pro STB.
    Jinak mám STB značky Hybroad Z205. Je to kabelový STB pro IPTV. Při vypnutí TV se opět vyšle kód na vypnutí STB.
    Dále to překládá kódy z ovladače pro Samsung TV a posílá je do STB. Na TV jsem nastavil funkci univerzálního dálkového ovladače, ale protože tento můj STB není v seznamu tak jsem zvolil libovolný, aby si TV myslela, že tam je a např. barevný tlačítka nereagovaly a nezobrazovala se hláška „Není k dispozici“.
    Dále tam mám BT modul HC-06, přes který se dá jak TV tak i STB ovládat z telefonu.
    Kód může být pro někoho prasárna, ale je to první funkční projekt 🙂
    Schéma zapojení dodám, až ho nakreslím.

    A nakonec samotný kód, pokud by se někomu hodil 🙂

    #include <IRremote.h>
    
    // Deklarace pinů
    #define RECV_PIN 11
    #define TVpin 2
    #define LEDpin 5
    #define tvLEDpin 13
    
    // STB
    const unsigned int srPower[67] PROGMEM = {8950, 4350, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 1550, 650, 500, 600, 500, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 1550, 650, 500, 600, 500, 600, 1600, 650, 450, 650, 1550, 650, 500, 600, 500, 600, 500, 600, 500, 650, 1550, 650, 450, 650, 1600, 650, 450, 650, 1550, 650, 1600, 600, 1600, 650, 1550, 650}; // NEC 20250AF
    const unsigned int srMute[67] PROGMEM = {8900, 4350, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 1600, 600, 500, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 1550, 650, 500, 600, 500, 650, 450, 650, 1550, 650, 1600, 600, 500, 600, 500, 600, 500, 650, 450, 650, 1550, 650, 1600, 600, 500, 650, 450, 650, 1550, 650, 1600, 600, 1600, 650, 1550, 650}; // NEC 20230CF
    const unsigned int srHelp[67] PROGMEM = {8950, 4350, 600, 500, 600, 500, 600, 500, 650, 450, 650, 450, 650, 450, 650, 1550, 650, 450, 650, 450, 650, 500, 600, 500, 600, 500, 600, 500, 650, 450, 650, 1550, 650, 450, 650, 1600, 650, 1550, 650, 1550, 650, 1600, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 700, 400, 650, 500, 600, 1600, 650, 1550, 650, 1600, 650, 1550, 650}; // NEC 202F00F
    const unsigned int sr1[67] PROGMEM = {8950, 4300, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 1600, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 1600, 650, 450, 650, 1550, 650, 450, 650, 450, 650, 450, 650, 500, 600, 500, 600, 500, 600, 500, 650, 450, 650, 1550, 650, 1600, 650, 1550, 650, 1550, 650, 1600, 650, 1550, 650, 1600, 650}; // NEC 202807F
    const unsigned int sr2[67] PROGMEM = {8950, 4300, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 1600, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 1600, 600, 500, 650, 450, 650, 1550, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 500, 600, 1600, 650, 450, 650, 1550, 650, 1600, 650, 1550, 650, 1600, 650, 1550, 650, 1600, 600}; // NEC 20240BF
    const unsigned int sr3[67] PROGMEM = {8950, 4350, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 1550, 650, 500, 600, 500, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 1550, 650, 500, 600, 1600, 650, 1550, 650, 450, 650, 450, 650, 450, 650, 500, 600, 500, 600, 500, 650, 450, 650, 450, 650, 1550, 650, 1600, 600, 1600, 650, 1550, 650, 1600, 650, 1550, 650}; // NEC 202C03F
    const unsigned int sr4[67] PROGMEM = {8950, 4300, 650, 450, 650, 450, 650, 450, 650, 450, 650, 500, 600, 500, 600, 1600, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 500, 600, 1600, 650, 450, 650, 450, 650, 450, 650, 1600, 600, 500, 650, 450, 650, 450, 650, 450, 650, 450, 650, 1550, 650, 1600, 650, 450, 650, 1550, 650, 1600, 600, 1600, 650, 1550, 650, 1600, 650}; // NEC 20220DF
    const unsigned int sr5[67] PROGMEM = {8950, 4300, 650, 450, 650, 450, 650, 500, 600, 500, 600, 500, 650, 450, 650, 1550, 650, 450, 650, 450, 650, 450, 650, 450, 650, 500, 600, 500, 600, 500, 600, 1600, 650, 450, 650, 1600, 600, 500, 650, 1550, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 1600, 650, 450, 650, 1550, 650, 1600, 650, 1550, 650, 1600, 600, 1600, 650}; // NEC 202A05F
    const unsigned int sr6[67] PROGMEM = {8900, 4350, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 1600, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 1600, 650, 450, 650, 450, 650, 1550, 650, 1600, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 1550, 650, 500, 600, 500, 600, 1600, 650, 1550, 650, 1600, 650, 1550, 650, 1600, 600}; // NEC 202609F
    const unsigned int sr7[67] PROGMEM = {8950, 4300, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 500, 600, 1600, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 1600, 650, 450, 650, 1550, 650, 1600, 650, 1550, 650, 450, 650, 450, 650, 450, 650, 450, 650, 500, 600, 500, 600, 500, 600, 500, 650, 1550, 650, 1600, 600, 1600, 650, 1550, 650, 1600, 650}; // NEC 202E01F
    const unsigned int sr8[67] PROGMEM = {8950, 4350, 600, 500, 600, 500, 600, 500, 650, 450, 650, 450, 650, 450, 650, 1550, 650, 450, 650, 450, 650, 500, 600, 500, 600, 500, 600, 500, 650, 450, 650, 1550, 650, 450, 650, 450, 650, 450, 650, 450, 650, 1600, 600, 500, 650, 450, 650, 450, 650, 450, 650, 1600, 600, 1600, 650, 1550, 650, 450, 650, 1600, 650, 1550, 650, 1600, 600, 1600, 650}; // NEC 20210EF
    const unsigned int sr9[67] PROGMEM = {8900, 4350, 600, 500, 600, 500, 600, 500, 600, 500, 600, 500, 600, 500, 600, 1650, 600, 500, 600, 500, 600, 500, 600, 500, 600, 500, 600, 500, 600, 500, 600, 1600, 650, 500, 600, 1600, 600, 500, 600, 500, 600, 1600, 650, 500, 600, 500, 600, 500, 600, 500, 600, 500, 600, 1600, 650, 1600, 600, 500, 600, 1600, 600, 1600, 650, 1600, 600, 1600, 650}; // NEC 202906F
    const unsigned int sr0[67] PROGMEM = {8950, 4300, 650, 450, 650, 500, 600, 500, 600, 500, 650, 450, 650, 450, 650, 1550, 650, 450, 650, 450, 650, 450, 650, 500, 600, 500, 600, 500, 600, 500, 650, 1550, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 500, 600, 500, 600, 500, 650, 450, 650, 1550, 650, 1600, 600, 1600, 650, 1550, 650, 1600, 650, 1550, 650, 1600, 600, 1600, 650}; // NEC 20200FF
    const unsigned int srDisplay[67] PROGMEM = {8950, 4300, 650, 450, 650, 500, 600, 500, 600, 500, 600, 500, 650, 450, 650, 1550, 650, 450, 650, 450, 650, 450, 650, 450, 650, 500, 600, 500, 600, 500, 650, 1550, 650, 450, 650, 1600, 600, 500, 600, 1600, 650, 450, 650, 450, 650, 450, 650, 1600, 600, 500, 650, 450, 650, 1550, 650, 450, 650, 1600, 650, 1550, 650, 1550, 650, 500, 600, 1600, 650}; // NEC 202A25D
    const unsigned int srClear[67] PROGMEM = {8950, 4350, 600, 500, 600, 500, 600, 500, 600, 500, 600, 500, 600, 500, 600, 1600, 650, 500, 600, 500, 600, 500, 600, 500, 600, 500, 600, 500, 600, 500, 600, 1600, 650, 500, 600, 1600, 600, 500, 600, 1600, 650, 1600, 600, 1600, 650, 450, 650, 450, 650, 450, 650, 450, 650, 1600, 600, 500, 600, 500, 650, 450, 600, 1600, 650, 1600, 600, 1600, 650}; // NEC 202B847
    const unsigned int srPUp[67] PROGMEM = {8900, 4350, 600, 500, 600, 500, 600, 500, 650, 450, 650, 450, 650, 450, 650, 1600, 600, 500, 600, 500, 600, 500, 600, 500, 600, 500, 650, 450, 650, 450, 650, 1600, 600, 500, 600, 500, 600, 1600, 650, 450, 650, 450, 650, 450, 650, 450, 650, 1600, 600, 500, 600, 1600, 650, 450, 650, 1600, 600, 1600, 650, 1600, 600, 1600, 600, 500, 650, 1600, 600}; // NEC 20242BD
    const unsigned int srPDown[67] PROGMEM = {8950, 4350, 650, 450, 600, 500, 650, 450, 650, 450, 650, 450, 650, 450, 650, 1550, 650, 500, 600, 500, 600, 500, 650, 450, 650, 450, 650, 450, 650, 450, 650, 1550, 650, 450, 650, 500, 600, 1600, 650, 450, 650, 1550, 650, 1600, 650, 450, 650, 450, 650, 450, 650, 1550, 650, 450, 650, 1600, 650, 450, 650, 450, 650, 1550, 650, 1600, 650, 1550, 650}; // NEC 20258A7
    const unsigned int srExit[67] PROGMEM = {8900, 4350, 600, 500, 600, 500, 650, 450, 650, 450, 650, 450, 650, 450, 650, 1600, 600, 500, 600, 500, 600, 500, 650, 450, 650, 450, 650, 450, 650, 450, 650, 1550, 650, 500, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 1550, 650, 500, 600, 1600, 650, 1550, 650, 1600, 650, 1550, 650, 1600, 600, 1600, 650, 450, 650, 1550, 650}; // NEC 20202FD
    const unsigned int srBack[67] PROGMEM = {8900, 4350, 650, 450, 650, 450, 650, 450, 600, 500, 650, 450, 650, 450, 650, 1600, 600, 500, 650, 450, 600, 500, 650, 450, 650, 450, 650, 450, 650, 450, 600, 1600, 650, 500, 600, 1600, 600, 500, 650, 450, 600, 500, 600, 500, 650, 450, 650, 1600, 600, 500, 600, 500, 600, 1600, 600, 1650, 600, 1600, 600, 1600, 650, 1600, 600, 500, 650, 1550, 650}; // NEC 202827D
    const unsigned int srUp[67] PROGMEM = {8950, 4350, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 1550, 650, 500, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 1550, 650, 500, 600, 1600, 650, 1550, 650, 450, 650, 1600, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 1600, 600, 500, 600, 1600, 650, 1550, 650, 1600, 650, 1550, 650}; // NEC 202D02F
    const unsigned int srDown[67] PROGMEM = {8950, 4300, 650, 450, 650, 500, 600, 500, 600, 500, 600, 500, 650, 450, 650, 1550, 650, 450, 650, 450, 650, 450, 650, 450, 650, 500, 600, 500, 600, 500, 650, 1550, 650, 450, 650, 450, 650, 1600, 650, 1550, 650, 1550, 650, 500, 600, 500, 600, 500, 600, 500, 650, 1550, 650, 450, 650, 450, 650, 450, 650, 1600, 650, 1550, 650, 1600, 600, 1600, 650}; // NEC 202708F
    const unsigned int srLeft[67] PROGMEM = {8950, 4350, 600, 500, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 1550, 650, 500, 600, 500, 600, 500, 650, 450, 650, 450, 650, 450, 650, 450, 650, 1550, 650, 450, 650, 450, 650, 500, 600, 500, 600, 500, 650, 1550, 650, 450, 650, 450, 650, 450, 650, 1600, 650, 1550, 650, 1600, 600, 1600, 600, 500, 600, 1600, 650, 1600, 600, 1600, 650}; // NEC 20208F7
    const unsigned int srRight[67] PROGMEM = {8950, 4300, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 1600, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 1600, 600, 500, 650, 1550, 650, 450, 650, 450, 650, 450, 650, 1600, 650, 450, 650, 450, 650, 450, 650, 450, 650, 1550, 650, 1600, 650, 1550, 650, 450, 650, 1600, 650, 1550, 650, 1600, 600}; // NEC 2028877
    const unsigned int srOK[67] PROGMEM = {8900, 4350, 600, 500, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 1600, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 600, 500, 650, 450, 650, 1600, 600, 500, 650, 1550, 650, 450, 650, 1600, 600, 1600, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 1600, 650, 450, 650, 450, 650, 1550, 650, 1600, 600, 1600, 650, 1550, 650}; // NEC 202B04F
    const unsigned int srPPlus[67] PROGMEM = {8950, 4350, 600, 500, 600, 500, 650, 450, 600, 500, 650, 450, 650, 450, 650, 1550, 650, 450, 650, 450, 650, 500, 600, 500, 600, 500, 650, 450, 650, 450, 650, 1550, 650, 450, 650, 1600, 650, 450, 650, 1550, 650, 450, 650, 1600, 600, 500, 650, 450, 650, 450, 650, 450, 650, 1550, 650, 450, 650, 1600, 650, 450, 650, 1550, 650, 1600, 600, 1600, 650}; // NEC 202A857
    const unsigned int srPMinus[67] PROGMEM = {8900, 4350, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 1550, 650, 500, 600, 500, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 1550, 650, 500, 600, 500, 600, 500, 600, 1600, 650, 1550, 650, 1600, 650, 450, 650, 450, 650, 450, 650, 1550, 650, 1600, 650, 450, 650, 450, 650, 450, 650, 1550, 650, 1600, 650, 1550, 650}; // NEC 20238C7
    const unsigned int srVPlus[67] PROGMEM = {8950, 4300, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 1600, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 1600, 600, 500, 650, 1550, 650, 1600, 600, 1600, 650, 1550, 650, 1600, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 1600, 650, 1550, 650, 1600, 600}; // NEC 202F807
    const unsigned int srVMinus[67] PROGMEM = {8950, 4300, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 500, 600, 1600, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 1600, 650, 450, 650, 450, 650, 1550, 650, 1600, 650, 1600, 600, 1600, 600, 500, 650, 450, 650, 450, 650, 1550, 650, 450, 650, 450, 650, 450, 650, 450, 650, 1600, 650, 1550, 650, 1600, 650}; // NEC 2027887
    const unsigned int srMenu[67] PROGMEM = {8950, 4300, 650, 450, 700, 400, 650, 500, 650, 450, 650, 450, 650, 450, 650, 1550, 650, 450, 700, 400, 700, 400, 650, 450, 700, 400, 700, 450, 600, 500, 600, 1600, 650, 450, 650, 450, 700, 1550, 650, 450, 650, 450, 650, 1550, 650, 450, 650, 450, 700, 400, 650, 1600, 650, 450, 650, 1550, 650, 1600, 650, 450, 650, 1550, 650, 1600, 600, 1600, 650}; // NEC 20248B7
    const unsigned int srRev[67] PROGMEM = {8950, 4300, 650, 450, 650, 450, 650, 450, 650, 450, 700, 400, 700, 400, 700, 1550, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 1600, 650, 450, 650, 1550, 650, 1600, 600, 500, 600, 500, 650, 1550, 650, 450, 650, 450, 650, 450, 700, 400, 650, 450, 650, 1600, 650, 1550, 700, 400, 700, 1550, 650, 1550, 650, 1600, 600}; // NEC 202C837
    const unsigned int srFwd[67] PROGMEM = {8900, 4350, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 1600, 600, 500, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 1550, 650, 500, 650, 1550, 650, 1550, 650, 450, 650, 1600, 650, 1550, 650, 450, 650, 450, 650, 500, 600, 500, 600, 500, 600, 1600, 650, 450, 650, 450, 650, 1550, 650, 1600, 650, 1550, 650}; // NEC 202D827
    const unsigned int srPlay[67] PROGMEM = {9000, 4300, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 1550, 650, 500, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 1550, 650, 450, 650, 500, 600, 500, 600, 1600, 650, 450, 650, 1550, 650, 450, 650, 500, 600, 500, 650, 1550, 650, 1550, 650, 450, 700, 1550, 650, 450, 650, 1550, 650, 1600, 650, 1550, 650}; // NEC 20228D7
    const unsigned int srStop[67] PROGMEM = {8950, 4300, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 1600, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 1600, 600, 500, 650, 450, 650, 450, 650, 1550, 650, 450, 700, 400, 650, 450, 700, 1550, 650, 450, 650, 1550, 650, 1600, 650, 450, 650, 1550, 650, 1600, 650, 1550, 650, 450, 650, 1600, 600}; // NEC 20222DD
    const unsigned int srSubtitle[67] PROGMEM = {8950, 4300, 650, 450, 650, 450, 650, 450, 650, 500, 650, 450, 600, 500, 600, 1600, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 500, 600, 500, 600, 1600, 650, 450, 650, 1600, 600, 1600, 650, 450, 650, 450, 650, 1550, 650, 450, 650, 1600, 650, 450, 650, 450, 650, 450, 650, 1600, 600, 1600, 650, 450, 650, 1550, 650, 450, 650, 1600, 650}; // NEC 202CA35
    const unsigned int srAudio[67] PROGMEM = {8900, 4350, 600, 500, 600, 500, 600, 500, 600, 500, 600, 500, 600, 500, 600, 1650, 600, 500, 600, 500, 600, 500, 600, 500, 600, 500, 600, 500, 600, 500, 600, 1650, 550, 550, 600, 1600, 600, 1650, 550, 550, 600, 1600, 600, 1600, 600, 500, 600, 1650, 550, 550, 600, 500, 600, 500, 600, 1650, 550, 550, 550, 550, 550, 1650, 600, 500, 600, 1650, 550}; // NEC 202DA25
    const unsigned int srRec[67] PROGMEM = {8950, 4300, 650, 450, 650, 450, 650, 450, 700, 400, 700, 400, 700, 450, 650, 1550, 650, 450, 650, 450, 700, 400, 700, 400, 700, 400, 700, 400, 700, 400, 700, 1550, 650, 450, 650, 1550, 700, 1550, 650, 1550, 650, 450, 700, 1550, 600, 500, 650, 1550, 650, 450, 700, 400, 700, 400, 700, 400, 650, 1600, 650, 450, 650, 1550, 650, 450, 700, 1550, 650}; // NEC 202EA15
    const unsigned int srGoto[67] PROGMEM = {8950, 4300, 700, 400, 700, 400, 700, 450, 650, 450, 650, 450, 650, 450, 650, 1550, 650, 450, 700, 400, 700, 400, 700, 400, 700, 450, 650, 450, 650, 450, 650, 1550, 650, 450, 700, 400, 700, 400, 700, 1550, 650, 450, 650, 1550, 700, 400, 700, 1550, 650, 450, 650, 1550, 700, 1550, 650, 450, 650, 1550, 650, 450, 650, 1550, 700, 450, 650, 1550, 650}; // NEC 2022AD5
    const unsigned int srRed[67] PROGMEM = {8950, 4350, 600, 500, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 1550, 650, 500, 600, 500, 600, 500, 600, 500, 600, 500, 650, 450, 650, 450, 650, 1550, 650, 450, 650, 450, 650, 1600, 650, 1550, 650, 450, 650, 1600, 600, 500, 650, 450, 650, 450, 650, 1550, 650, 450, 650, 450, 650, 1600, 650, 450, 650, 1550, 650, 1600, 650, 1550, 650}; // NEC 2026897
    const unsigned int srGreen[67] PROGMEM = {8900, 4350, 600, 500, 600, 500, 600, 500, 600, 500, 600, 500, 600, 550, 550, 1650, 600, 500, 600, 500, 600, 500, 600, 500, 600, 500, 600, 500, 600, 500, 600, 1650, 600, 500, 600, 1600, 600, 1650, 600, 1600, 650, 450, 650, 1600, 600, 500, 600, 500, 600, 500, 600, 500, 600, 500, 600, 500, 600, 1600, 650, 500, 600, 1600, 650, 1550, 650, 1600, 650}; // NEC 202E817
    const unsigned int srBlue[67] PROGMEM = {8950, 4300, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 1600, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 700, 1550, 650, 450, 650, 450, 650, 450, 650, 450, 650, 1550, 650, 1600, 650, 450, 650, 450, 650, 450, 650, 1600, 600, 1600, 650, 1550, 650, 450, 650, 450, 650, 1600, 650, 1550, 650, 1600, 650}; // NEC 20218E7
    const unsigned int srYellow[67] PROGMEM = {8950, 4300, 650, 450, 650, 450, 700, 400, 650, 450, 650, 450, 700, 400, 650, 1600, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 700, 400, 700, 400, 650, 1600, 650, 450, 650, 1550, 650, 450, 650, 450, 700, 1550, 650, 1550, 650, 450, 700, 400, 700, 400, 650, 450, 650, 1600, 650, 1550, 650, 450, 700, 400, 650, 1600, 650, 1550, 650, 1600, 600}; // NEC 2029867
    
    // TV
    #define tPower 0xE0E040BF
    #define tPowerS 0xE0E007F8
    #define tSource 0xE0E0807F
    #define t1 0xE0E020DF
    #define t2 0xE0E0A05F
    #define t3 0xE0E0609F
    #define t4 0xE0E010EF
    #define t5 0xE0E0906F
    #define t6 0xE0E050AF
    #define t7 0xE0E030CF
    #define t8 0xE0E0B04F
    #define t9 0xE0E0708F
    #define t0 0xE0E08877
    #define tTTX 0xE0E034CB
    #define tPRECH 0xE0E0C837
    #define tMute 0xE0E0F00F
    #define tVUp 0xE0E0E01F
    #define tVDown 0xE0E0D02F
    #define tPUp 0xE0E048B7
    #define tPDown 0xE0E008F7
    #define tCHlist 0xE0E0D629
    #define tMenu 0xE0E058A7
    #define tSmart 0xE0E09E61
    #define tGuide 0xE0E0F20D
    #define tTools 0xE0E0D22D
    #define tInfo 0xE0E0F807
    #define tUp 0xE0E006F9
    #define tDown 0xE0E08679
    #define tLeft 0xE0E0A659
    #define tRight 0xE0E046B9
    #define tOK 0xE0E016E9
    #define tReturn 0xE0E01AE5
    #define tExit 0xE0E0B44B
    #define tRev 0xE0E0A25D
    #define tFwd 0xE0E012ED
    #define tPause 0xE0E052AD
    #define tPlay 0xE0E0E21D
    #define tRec 0xE0E0926D
    #define tStop 0xE0E0629D
    #define tRed 0xE0E036C9
    #define tGreen 0xE0E028D7
    #define tYellow 0xE0E0A857
    #define tBlue 0xE0E06897
    const unsigned int trPower[67] PROGMEM = {4550, 4400, 650, 1550, 650, 1600, 650, 1550, 650, 450, 650, 450, 650, 500, 650, 450, 650, 450, 650, 1600, 650, 1550, 650, 1600, 650, 450, 650, 450, 650, 450, 650, 500, 600, 500, 650, 450, 650, 1550, 650, 500, 650, 450, 650, 450, 650, 450, 650, 500, 650, 450, 650, 1550, 650, 500, 650, 1550, 650, 1550, 650, 1600, 650, 1550, 650, 1600, 650, 1550, 650}; // SAMSUNG E0E040BF
    const unsigned int trSource[67] PROGMEM = {4600, 4350, 650, 1600, 650, 1550, 700, 1550, 650, 450, 650, 450, 650, 450, 650, 500, 600, 500, 650, 1550, 650, 1600, 650, 1550, 650, 450, 650, 500, 650, 450, 650, 450, 650, 450, 650, 1600, 650, 450, 650, 450, 650, 450, 650, 500, 650, 450, 650, 450, 650, 450, 650, 500, 650, 1550, 650, 1550, 650, 1600, 650, 1550, 650, 1600, 650, 1550, 650, 1600, 650}; // SAMSUNG E0E0807F
    const unsigned int trMute[67] PROGMEM = {4550, 4350, 650, 1600, 650, 1550, 650, 1600, 650, 450, 650, 450, 650, 450, 650, 500, 650, 450, 650, 1550, 650, 1600, 650, 1550, 650, 500, 600, 500, 650, 450, 650, 450, 650, 450, 650, 1600, 650, 1550, 650, 1600, 650, 1550, 650, 500, 650, 450, 650, 450, 650, 450, 650, 500, 600, 500, 650, 450, 650, 450, 650, 1600, 600, 1600, 650, 1600, 650, 1550, 650}; // SAMSUNG E0E0F00F
    const unsigned int trVUp[67] PROGMEM = {4600, 4350, 650, 1600, 650, 1550, 650, 1600, 650, 450, 650, 450, 650, 450, 650, 450, 650, 500, 650, 1550, 650, 1600, 650, 1550, 650, 450, 650, 500, 650, 450, 650, 450, 650, 450, 650, 1600, 650, 1550, 650, 1600, 650, 450, 650, 450, 650, 450, 650, 500, 600, 500, 650, 450, 650, 450, 650, 450, 650, 1600, 650, 1550, 650, 1600, 650, 1550, 650, 1600, 650}; // SAMSUNG E0E0E01F
    const unsigned int trVDown[67] PROGMEM = {4600, 4350, 650, 1600, 650, 1550, 650, 1600, 650, 450, 650, 450, 650, 450, 650, 500, 650, 450, 650, 1550, 650, 1600, 650, 1550, 650, 450, 650, 500, 650, 450, 600, 500, 650, 450, 650, 1600, 600, 1600, 650, 450, 650, 1600, 650, 450, 650, 450, 650, 500, 650, 450, 650, 450, 650, 450, 650, 1600, 650, 450, 650, 1600, 600, 1600, 650, 1550, 650, 1600, 650}; // SAMSUNG E0E0D02F
    const unsigned int trMenu[67] PROGMEM = {4550, 4400, 650, 1550, 700, 1550, 650, 1550, 650, 450, 650, 500, 650, 450, 650, 450, 650, 450, 650, 1600, 650, 1550, 650, 1600, 650, 450, 650, 450, 650, 450, 650, 500, 650, 450, 650, 450, 650, 1600, 650, 450, 650, 1550, 650, 1600, 650, 450, 650, 450, 650, 500, 650, 1550, 650, 450, 650, 1600, 650, 450, 650, 450, 650, 1600, 650, 1550, 650, 1600, 650}; // SAMSUNG E0E058A7
    const unsigned int trSmart[67] PROGMEM = {4600, 4350, 650, 1600, 650, 1550, 650, 1550, 650, 500, 650, 450, 650, 450, 650, 450, 650, 500, 650, 1550, 650, 1600, 650, 1550, 650, 450, 650, 500, 650, 450, 650, 450, 650, 450, 650, 1600, 650, 450, 650, 450, 650, 1600, 650, 1550, 650, 1600, 650, 1550, 650, 450, 650, 500, 650, 1550, 650, 1550, 650, 500, 650, 450, 650, 450, 650, 450, 650, 1600, 650}; // SAMSUNG E0E09E61
    const unsigned int trTools[67] PROGMEM = {4550, 4400, 650, 1600, 600, 1600, 650, 1600, 600, 500, 600, 500, 650, 450, 650, 500, 600, 500, 600, 1600, 650, 1600, 600, 1600, 650, 450, 650, 500, 600, 500, 600, 500, 600, 500, 600, 1650, 600, 1600, 650, 500, 550, 1650, 600, 500, 650, 450, 600, 1650, 600, 500, 600, 500, 600, 550, 600, 1600, 600, 500, 600, 1650, 600, 1600, 650, 450, 600, 1650, 600}; // SAMSUNG E0E0D22D
    const unsigned int trUp[67] PROGMEM = {4550, 4400, 600, 1600, 650, 1550, 650, 1600, 650, 450, 650, 450, 650, 500, 650, 450, 650, 450, 650, 1600, 600, 1600, 650, 1550, 650, 500, 650, 450, 650, 450, 650, 450, 650, 500, 650, 450, 650, 450, 650, 450, 650, 500, 650, 450, 650, 1550, 650, 1600, 650, 450, 650, 1550, 650, 1600, 650, 1550, 650, 1600, 650, 1550, 650, 500, 650, 450, 650, 1550, 650}; // SAMSUNG E0E006F9
    const unsigned int trDown[67] PROGMEM = {4550, 4350, 650, 1600, 650, 1550, 650, 1600, 650, 450, 650, 450, 650, 450, 650, 500, 650, 450, 650, 1550, 650, 1600, 600, 1600, 650, 450, 650, 500, 650, 450, 650, 450, 650, 450, 650, 1600, 650, 450, 650, 450, 650, 500, 650, 450, 650, 1550, 650, 1600, 650, 450, 650, 450, 650, 1600, 650, 1550, 650, 1600, 650, 1550, 650, 450, 650, 450, 650, 1600, 600}; // SAMSUNG E0E08679
    const unsigned int trLeft[67] PROGMEM = {4600, 4350, 650, 1550, 650, 1600, 650, 1550, 650, 500, 650, 450, 650, 450, 650, 450, 650, 500, 600, 1600, 650, 1550, 650, 1600, 650, 450, 650, 450, 650, 500, 650, 450, 650, 450, 650, 1600, 650, 450, 650, 1550, 650, 450, 650, 500, 650, 1550, 650, 1600, 650, 450, 650, 450, 650, 1600, 650, 450, 650, 1550, 650, 1600, 650, 450, 650, 450, 650, 1600, 650}; // SAMSUNG E0E0A659
    const unsigned int trRight[67] PROGMEM = {4500, 4450, 600, 1650, 550, 1650, 600, 1650, 550, 550, 550, 550, 550, 550, 600, 500, 600, 550, 550, 1650, 600, 1650, 550, 1650, 600, 500, 600, 550, 550, 550, 550, 550, 600, 500, 550, 600, 550, 1650, 550, 550, 550, 550, 600, 550, 550, 1650, 600, 1650, 550, 550, 550, 1650, 600, 550, 550, 1650, 550, 1700, 550, 1650, 550, 550, 550, 550, 600, 1650, 550}; // SAMSUNG E0E046B9
    const unsigned int trOK[67] PROGMEM = {4550, 4350, 650, 1600, 650, 1550, 650, 1600, 650, 450, 650, 450, 650, 450, 650, 500, 650, 450, 650, 1550, 650, 1600, 650, 1550, 650, 500, 650, 450, 650, 450, 650, 450, 650, 500, 650, 450, 650, 450, 650, 450, 650, 1600, 650, 450, 650, 1550, 650, 1600, 650, 450, 650, 1600, 650, 1550, 700, 1550, 650, 450, 650, 1550, 650, 500, 600, 500, 650, 1550, 650}; // SAMSUNG E0E016E9
    const unsigned int trReturn[67] PROGMEM = {4600, 4350, 650, 1600, 650, 1550, 700, 1550, 650, 450, 650, 450, 650, 450, 650, 500, 650, 450, 650, 1550, 650, 1600, 650, 1550, 650, 450, 650, 500, 650, 450, 650, 450, 650, 450, 700, 450, 650, 450, 650, 450, 700, 1550, 650, 1550, 650, 450, 700, 1550, 650, 450, 650, 1550, 650, 1600, 650, 1550, 650, 500, 650, 450, 650, 1550, 650, 500, 650, 1550, 650}; // SAMSUNG E0E01AE5
    const unsigned int trExit[67] PROGMEM = {4600, 4350, 650, 1600, 600, 1600, 650, 1600, 600, 500, 650, 450, 650, 450, 650, 450, 650, 500, 650, 1550, 650, 1600, 650, 1550, 650, 450, 650, 500, 600, 500, 650, 450, 650, 450, 650, 1600, 650, 450, 650, 1550, 650, 1600, 650, 450, 650, 1600, 650, 450, 650, 450, 650, 450, 650, 1600, 650, 450, 650, 450, 650, 1600, 650, 450, 650, 1550, 650, 1600, 650}; // SAMSUNG E0E0B44B
    const unsigned int trRev[67] PROGMEM = {4550, 4400, 650, 1600, 600, 1600, 650, 1600, 650, 450, 650, 450, 650, 450, 650, 500, 650, 450, 600, 1600, 650, 1600, 650, 1550, 650, 500, 650, 450, 650, 450, 650, 450, 650, 500, 600, 1600, 650, 450, 650, 1600, 650, 450, 650, 450, 650, 450, 650, 1600, 650, 450, 650, 450, 650, 1600, 650, 450, 700, 1550, 650, 1550, 700, 1500, 650, 500, 650, 1550, 700}; // SAMSUNG E0E0A25D
    const unsigned int trFwd[67] PROGMEM = {4550, 4400, 650, 1550, 650, 1550, 650, 1600, 650, 450, 650, 450, 650, 500, 650, 450, 650, 450, 650, 1600, 650, 1550, 650, 1550, 650, 500, 650, 450, 650, 450, 650, 450, 650, 500, 650, 450, 650, 450, 650, 450, 650, 1600, 650, 450, 650, 450, 650, 1600, 650, 450, 650, 1600, 650, 1550, 650, 1550, 650, 500, 650, 1550, 650, 1600, 650, 450, 650, 1550, 650}; // SAMSUNG E0E012ED
    const unsigned int trPause[67] PROGMEM = {4550, 4400, 650, 1600, 600, 1600, 650, 1600, 600, 500, 600, 500, 650, 450, 600, 550, 600, 500, 600, 1600, 650, 1600, 600, 1600, 650, 450, 600, 550, 600, 500, 600, 500, 600, 500, 600, 550, 600, 1600, 600, 500, 600, 1650, 600, 500, 600, 500, 600, 1650, 600, 500, 600, 1600, 600, 550, 600, 1600, 600, 500, 600, 1650, 600, 1600, 600, 550, 550, 1650, 600}; // SAMSUNG E0E052AD
    const unsigned int trPlay[67] PROGMEM = {4600, 4350, 650, 1600, 650, 1550, 650, 1550, 650, 500, 650, 450, 650, 450, 650, 450, 650, 500, 650, 1550, 650, 1600, 650, 1550, 650, 450, 700, 400, 700, 450, 650, 450, 650, 450, 700, 1550, 650, 1550, 700, 1550, 650, 450, 650, 450, 700, 400, 700, 1550, 650, 450, 650, 450, 700, 450, 650, 450, 650, 1550, 650, 1600, 650, 1550, 650, 450, 650, 1600, 650}; // SAMSUNG E0E0E21D
    const unsigned int trStop[67] PROGMEM = {4500, 4400, 650, 1600, 600, 1600, 600, 1650, 550, 550, 550, 550, 600, 500, 600, 550, 550, 550, 550, 1650, 550, 1700, 550, 1650, 550, 600, 550, 550, 550, 550, 550, 550, 550, 550, 600, 550, 550, 1650, 600, 1650, 550, 550, 550, 550, 600, 500, 600, 1650, 550, 550, 600, 1650, 550, 550, 600, 500, 600, 1600, 600, 1650, 600, 1600, 600, 550, 600, 1600, 600}; // SAMSUNG E0E0629D
    
    // Definice IR
    IRrecv irrecv(RECV_PIN);
    IRsend irsend;
    decode_results results;
    
    // Proměnné
    bool doSTB = 1;
    bool doSTBlast = 1;
    bool TVstate = 0;
    long TVstateChange = 0;
    int LEDstate = 0;
    unsigned long LEDdelay = 5 * 60 * 1000;
    String BTin = "";
    boolean BTok = false;
    
    void setup()
    {
      Serial.begin(9600);
      irrecv.enableIRIn(); // Start the receiver
      pinMode(TVpin, INPUT);
      pinMode(LEDpin, OUTPUT);
      analogWrite(LEDpin, LEDstate);
      pinMode(tvLEDpin, OUTPUT);
      digitalWrite(tvLEDpin, LOW);
      BTin.reserve(20);
    
      if (digitalRead(TVpin)) {
        TVstate = 1;
        LEDstate = 255;
        analogWrite(LEDpin, LEDstate);
      }
    }
    
    void loop() {
      // Rozsvítí kontrolku když jde ovládání jen do TV
      // -----------------------------------------------------------------
      if (doSTB != doSTBlast) {
        if (doSTB == 0) {
          digitalWrite(tvLEDpin, HIGH);
        } else {
          digitalWrite(tvLEDpin, LOW);
        }
        doSTBlast = doSTB;
      }
    
      // Detekce vypnuté/zapnuté TV
      // -----------------------------------------------------------------
      if (digitalRead(TVpin) != TVstate) {
        //Serial.print(F("Aktualni stav TV: "));
        //Serial.println(digitalRead(TVpin));
        TVstate = digitalRead(TVpin);
    
        if (digitalRead(TVpin)) {
          LEDstate = 255;
          TVstateChange = 0;
        } else {
          TVstateChange = millis() + LEDdelay;
        }
        Serial.print(TVstate);
        Serial.print(F("|"));
        Serial.println(LEDstate);
        analogWrite(LEDpin, LEDstate);
        Odeslat(srPower, "Vypinam/zapinam STB");
      }
    
      // Zpožděné vypnutí LED
      if (TVstateChange > 0 && millis() > TVstateChange) {
        LEDstate = 0;
        TVstateChange = 0;
        analogWrite(LEDpin, LEDstate);
        Serial.print(TVstate);
        Serial.print(F("|"));
        Serial.println(LEDstate);
      }
    
      if (BTok) {
        //Serial.print(F("Prijaty prikaz z BT: "));
        //Serial.println(BTin);
    
        // Změna intenzity led
        if (BTin.indexOf("led=") > -1) {
          LEDstate = BTin.substring(BTin.indexOf("=") + 1).toInt();
          analogWrite(LEDpin, LEDstate);
        }
    
        if (BTin == "Connected") { // Když se připojí BT
          Serial.print(TVstate);
          Serial.print(F("|"));
          Serial.println(LEDstate);
        } else if (BTin == "Red") {
          Odeslat(srRed, "srRed");
        } else if (BTin == "Green") {
          Odeslat(srGreen, "srGreen");
        } else if (BTin == "Yellow") {
          Odeslat(srYellow, "srYellow");
        } else if (BTin == "Blue") {
          Odeslat(srBlue, "srBlue");
        } else if (BTin == "PowerTV") {
          Odeslat(trPower, "trPower");
        } else if (BTin == "Source") {
          doSTB = 0;
          Odeslat(trSource, "trSource");
        } else if (BTin == "PowerSTB") {
          Odeslat(srPower, "srPower");
        } else if (BTin == "1") {
          Odeslat(sr1, "sr1");
        } else if (BTin == "2") {
          Odeslat(sr2, "sr2");
        } else if (BTin == "3") {
          Odeslat(sr3, "sr3");
        } else if (BTin == "4") {
          Odeslat(sr4, "sr4");
        } else if (BTin == "5") {
          Odeslat(sr5, "sr5");
        } else if (BTin == "6") {
          Odeslat(sr6, "sr6");
        } else if (BTin == "7") {
          Odeslat(sr7, "sr7");
        } else if (BTin == "8") {
          Odeslat(sr8, "sr8");
        } else if (BTin == "9") {
          Odeslat(sr9, "sr9");
        } else if (BTin == "0") {
          Odeslat(sr0, "sr0");
        } else if (BTin == "VUp") {
          Odeslat(trVUp, "trVUp");
        } else if (BTin == "VDown") {
          Odeslat(trVDown, "trVDown");
        } else if (BTin == "PUp") {
          Odeslat(srPUp, "srPUp");
        } else if (BTin == "PDown") {
          Odeslat(srPDown, "srPDown");
        } else if (BTin == "Mute") {
          Odeslat(trMute, "trMute");
        } else if (BTin == "Smart") {
          doSTB = 0;
          Odeslat(trSmart, "trSmart");
        } else if (BTin == "Tools") {
          doSTB = 0;
          Odeslat(trTools, "trTools");
        } else if (BTin == "Menu") {
          doSTB = 0;
          Odeslat(trMenu, "trMenu");
        } else if (BTin == "Return") {
          Odeslat(trReturn, "trReturn");
        } else if (BTin == "Exit") {
          doSTB = 1;
          Odeslat(trExit, "trExit");
    
        } else if (BTin == "Up") {
          if (doSTB) {
            Odeslat(srUp, "srUp");
          } else {
            Odeslat(trUp, "trUp");
          }
        } else if (BTin == "Down") {
          if (doSTB) {
            Odeslat(srDown, "srDown");
          } else {
            Odeslat(trDown, "trDown");
          }
        } else if (BTin == "Left") {
          if (doSTB) {
            Odeslat(srLeft, "srLeft");
          } else {
            Odeslat(trLeft, "trLeft");
          }
        } else if (BTin == "Right") {
          if (doSTB) {
            Odeslat(srRight, "srRight");
          } else {
            Odeslat(trRight, "trRight");
          }
        } else if (BTin == "OK") {
          if (doSTB) {
            Odeslat(srOK, "srOK");
          } else {
            Odeslat(trOK, "trOK");
          }
    
        } else if (BTin == "Rev") {
          if (doSTB) {
            Odeslat(srRev, "srRev");
          } else {
            Odeslat(trRev, "trRev");
          }
        } else if (BTin == "Play") {
          if (doSTB) {
            Odeslat(srPlay, "srPlay");
          } else {
            Odeslat(trPlay, "trPlay");
          }
        } else if (BTin == "Pause") {
          if (doSTB) {
            Odeslat(srPlay, "srPlay");
          } else {
            Odeslat(trPause, "trPause");
          }
        } else if (BTin == "Fwd") {
          if (doSTB) {
            Odeslat(srFwd, "srFwd");
          } else {
            Odeslat(trFwd, "trFwd");
          }
        } else if (BTin == "Stop") {
          if (doSTB) {
            Odeslat(srStop, "srStop");
          } else {
            Odeslat(trStop, "trStop");
          }
        } else if (BTin == "Rec") {
          Odeslat(srRec, "srRec");
        }
    
        BTin = "";
        BTok = false;
      }
    
      // Rozpoznání přijatého kódu
      // -----------------------------------------------------------------
      if (irrecv.decode(&results)) {
        //Serial.print(F("Prijato: "));
        //Serial.println(results.value, HEX);
    
        switch (results.value) {
          case tYellow:
            Odeslat(srYellow, "srYellow");
            break;
          case tBlue:
            Odeslat(srBlue, "srBlue");
            break;
          case tRed:
            Odeslat(srRed, "srRed");
            break;
          case tGreen:
            Odeslat(srGreen, "srGreen");
            break;
          case tUp:
            Odeslat(srUp, "srUp");
            break;
          case tDown:
            Odeslat(srDown, "srDown");
            break;
          case tLeft:
            Odeslat(srLeft, "srLeft");
            break;
          case tRight:
            Odeslat(srRight, "srRight");
            break;
          case tOK:
            Odeslat(srOK, "srOK");
            break;
          case tPUp:
            Odeslat(srPUp, "srPUp");
            break;
          case tPDown:
            Odeslat(srPDown, "srPDown");
            break;
          case tPlay:
            Odeslat(srPlay, "srPlay");
            break;
          case tPause:
            Odeslat(srPlay, "srPlay");
            break;
          case tStop:
            Odeslat(srStop, "srStop");
            break;
          case tRev:
            Odeslat(srRev, "srRev");
            break;
          case tFwd:
            Odeslat(srFwd, "srFwd");
            break;
          case tRec:
            Odeslat(srRec, "srRec");
            break;
          case tPRECH:
            Odeslat(srClear, "srClear");
            break;
          case tPowerS:
            Odeslat(srPower, "srPower");
            break;
          case t1:
            Odeslat(sr1, "sr1");
            break;
          case t2:
            Odeslat(sr2, "sr2");
            break;
          case t3:
            Odeslat(sr3, "sr3");
            break;
          case t4:
            Odeslat(sr4, "sr4");
            break;
          case t5:
            Odeslat(sr5, "sr5");
            break;
          case t6:
            Odeslat(sr6, "sr6");
            break;
          case t7:
            Odeslat(sr7, "sr7");
            break;
          case t8:
            Odeslat(sr8, "sr8");
            break;
          case t9:
            Odeslat(sr9, "sr9");
            break;
          case t0:
            Odeslat(sr0, "sr0");
            break;
    
          case tSource:
            doSTB = 0;
            //Serial.println(F("Vypinam prevod do STB"));
            break;
          case tSmart:
            doSTB = 0;
            //Serial.println(F("Vypinam prevod do STB"));
            break;
          case tMenu:
            doSTB = 0;
            //Serial.println(F("Vypinam prevod do STB"));
            break;
          case tTools:
            doSTB = 0;
            //Serial.println(F("Vypinam prevod do STB"));
            break;
          case tExit:
            doSTB = 1;
            //Serial.println(F("Zapinam prevod do STB"));
            break;
    
          case tGuide:
            if (LEDstate == 0) {
              LEDstate = 255;
            } else {
              LEDstate = 0;
            }
            analogWrite(LEDpin, LEDstate);
            Serial.print(TVstate);
            Serial.print(F("|"));
            Serial.println(LEDstate);
            break;
        }
        irrecv.resume(); // Receive the next value
      }
    }
    
    unsigned int Odeslat(const unsigned int* Kod, char* text) {
      unsigned int raw[67];
      for (int i = 0; i < 67; i++) {
        raw[i] = pgm_read_word_near(Kod + i);
      }
    
      if (doSTB || text[0] == 't') {
        delay(100); // Zpožděné odeslání
        irsend.sendRaw(raw, 67, 38);
        //Serial.print(F("Odesilam kod: "));
        //Serial.println(text);
        irrecv.enableIRIn();
      }
    
    }
    
    void serialEvent() {
      while (Serial.available()) {
        char inChar = (char)Serial.read();
        //Serial.println(inChar);
        if (inChar == ';') {
          BTok = true;
        } else {
          BTin += inChar;
        }
      }
    }
    
    odpověď na: IR ovladač #6906
    posjirka
    Účastník

    není zač. Sice spadne velikost proměnných, ale zvětší se ti velikost programu ! na to pozor. Tady máš místa dost, až budeš na hraně bude to horší. Je lepší používat větší procesor (arduino MEGA není špatná volba)

    odpověď na: IR ovladač #6883
    mitch
    Účastník

    Koukám, že se ohledně Arduina mám ještě hodně co učit 🙂 momentálně jsem spadnul pomocí PROGMEM na nějakých 440bytů 🙂
    Zatím díky moc 🙂

    odpověď na: IR ovladač #6880
    posjirka
    Účastník

    zásadní problém je těch 41 polí po 67 znacích. To že je to integer je 67x41x2 byty = 5494 bytu po optimalizaci kodu od IDE ti pak spadne na konečných cca 3900 bytu.
    máš několik možností:
    – buď použít jiný procesor, který má víc RAM
    – před tyto konstanty použij funkci PROGMEM
    https://www.arduino.cc/en/Reference/PROGMEM
    zjednodušeně : to ti přenese tyto konstanty do paměti pro program (pokud není plná)
    – použij aliasy (pro každé z unikátních hodnot pole přiřaď číslo typu byte a pak se na ně odkaž, sníží ti to zatížení téměř na polovinu) = změn typ pole na byte
    – použij SD kartu pro nahrání těchto vysílacích kodu
    – nejde použít některá z funkcí knihovny irremote?

    odpověď na: IR ovladač #6879
    mitch
    Účastník

    Tak pauza před odeslání je asi to pravé řešení. Stačí dát delay(100); a už to odesílá. Nyní jsem ale narazil na jiný problém a to:

    Projekt zabírá 14 692 bytů (47%)  úložného místa pro program. Maximum je 30 720 bytů.
    Globální proměnné zabírají 3 924 bytů (191%)  dynamické paměti, -1 876 bytů zůstává pro lokální proměnné. Maximum je 2 048 bytů.
    processing.app.debug.RunnerException: Nedostatek peměti;

    Aktuální kód je tento:

    #include <IRremote.h>
    
    // Deklarace pinů
    int RECV_PIN = 11;
    
    // STB
    const unsigned int srPower[67] = {8950, 4350, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 1550, 650, 500, 600, 500, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 1550, 650, 500, 600, 500, 600, 1600, 650, 450, 650, 1550, 650, 500, 600, 500, 600, 500, 600, 500, 650, 1550, 650, 450, 650, 1600, 650, 450, 650, 1550, 650, 1600, 600, 1600, 650, 1550, 650}; // NEC 20250AF
    const unsigned int srMute[67] = {8900, 4350, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 1600, 600, 500, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 1550, 650, 500, 600, 500, 650, 450, 650, 1550, 650, 1600, 600, 500, 600, 500, 600, 500, 650, 450, 650, 1550, 650, 1600, 600, 500, 650, 450, 650, 1550, 650, 1600, 600, 1600, 650, 1550, 650}; // NEC 20230CF
    const unsigned int srHelp[67] = {8950, 4350, 600, 500, 600, 500, 600, 500, 650, 450, 650, 450, 650, 450, 650, 1550, 650, 450, 650, 450, 650, 500, 600, 500, 600, 500, 600, 500, 650, 450, 650, 1550, 650, 450, 650, 1600, 650, 1550, 650, 1550, 650, 1600, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 700, 400, 650, 500, 600, 1600, 650, 1550, 650, 1600, 650, 1550, 650}; // NEC 202F00F
    const unsigned int sr1[67] = {8950, 4300, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 1600, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 1600, 650, 450, 650, 1550, 650, 450, 650, 450, 650, 450, 650, 500, 600, 500, 600, 500, 600, 500, 650, 450, 650, 1550, 650, 1600, 650, 1550, 650, 1550, 650, 1600, 650, 1550, 650, 1600, 650}; // NEC 202807F
    const unsigned int sr2[67] = {8950, 4300, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 1600, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 1600, 600, 500, 650, 450, 650, 1550, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 500, 600, 1600, 650, 450, 650, 1550, 650, 1600, 650, 1550, 650, 1600, 650, 1550, 650, 1600, 600}; // NEC 20240BF
    const unsigned int sr3[67] = {8950, 4350, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 1550, 650, 500, 600, 500, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 1550, 650, 500, 600, 1600, 650, 1550, 650, 450, 650, 450, 650, 450, 650, 500, 600, 500, 600, 500, 650, 450, 650, 450, 650, 1550, 650, 1600, 600, 1600, 650, 1550, 650, 1600, 650, 1550, 650}; // NEC 202C03F
    const unsigned int sr4[67] = {8950, 4300, 650, 450, 650, 450, 650, 450, 650, 450, 650, 500, 600, 500, 600, 1600, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 500, 600, 1600, 650, 450, 650, 450, 650, 450, 650, 1600, 600, 500, 650, 450, 650, 450, 650, 450, 650, 450, 650, 1550, 650, 1600, 650, 450, 650, 1550, 650, 1600, 600, 1600, 650, 1550, 650, 1600, 650}; // NEC 20220DF
    const unsigned int sr5[67] = {8950, 4300, 650, 450, 650, 450, 650, 500, 600, 500, 600, 500, 650, 450, 650, 1550, 650, 450, 650, 450, 650, 450, 650, 450, 650, 500, 600, 500, 600, 500, 600, 1600, 650, 450, 650, 1600, 600, 500, 650, 1550, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 1600, 650, 450, 650, 1550, 650, 1600, 650, 1550, 650, 1600, 600, 1600, 650}; // NEC 202A05F
    const unsigned int sr6[67] = {8900, 4350, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 1600, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 1600, 650, 450, 650, 450, 650, 1550, 650, 1600, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 1550, 650, 500, 600, 500, 600, 1600, 650, 1550, 650, 1600, 650, 1550, 650, 1600, 600}; // NEC 202609F
    const unsigned int sr7[67] = {8950, 4300, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 500, 600, 1600, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 1600, 650, 450, 650, 1550, 650, 1600, 650, 1550, 650, 450, 650, 450, 650, 450, 650, 450, 650, 500, 600, 500, 600, 500, 600, 500, 650, 1550, 650, 1600, 600, 1600, 650, 1550, 650, 1600, 650}; // NEC 202E01F
    const unsigned int sr8[67] = {8950, 4350, 600, 500, 600, 500, 600, 500, 650, 450, 650, 450, 650, 450, 650, 1550, 650, 450, 650, 450, 650, 500, 600, 500, 600, 500, 600, 500, 650, 450, 650, 1550, 650, 450, 650, 450, 650, 450, 650, 450, 650, 1600, 600, 500, 650, 450, 650, 450, 650, 450, 650, 1600, 600, 1600, 650, 1550, 650, 450, 650, 1600, 650, 1550, 650, 1600, 600, 1600, 650}; // NEC 20210EF
    const unsigned int sr9[67] = {8900, 4350, 600, 500, 600, 500, 600, 500, 600, 500, 600, 500, 600, 500, 600, 1650, 600, 500, 600, 500, 600, 500, 600, 500, 600, 500, 600, 500, 600, 500, 600, 1600, 650, 500, 600, 1600, 600, 500, 600, 500, 600, 1600, 650, 500, 600, 500, 600, 500, 600, 500, 600, 500, 600, 1600, 650, 1600, 600, 500, 600, 1600, 600, 1600, 650, 1600, 600, 1600, 650}; // NEC 202906F
    const unsigned int sr0[67] = {8950, 4300, 650, 450, 650, 500, 600, 500, 600, 500, 650, 450, 650, 450, 650, 1550, 650, 450, 650, 450, 650, 450, 650, 500, 600, 500, 600, 500, 600, 500, 650, 1550, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 500, 600, 500, 600, 500, 650, 450, 650, 1550, 650, 1600, 600, 1600, 650, 1550, 650, 1600, 650, 1550, 650, 1600, 600, 1600, 650}; // NEC 20200FF
    const unsigned int srDisplay[67] = {8950, 4300, 650, 450, 650, 500, 600, 500, 600, 500, 600, 500, 650, 450, 650, 1550, 650, 450, 650, 450, 650, 450, 650, 450, 650, 500, 600, 500, 600, 500, 650, 1550, 650, 450, 650, 1600, 600, 500, 600, 1600, 650, 450, 650, 450, 650, 450, 650, 1600, 600, 500, 650, 450, 650, 1550, 650, 450, 650, 1600, 650, 1550, 650, 1550, 650, 500, 600, 1600, 650}; // NEC 202A25D
    const unsigned int srClear[67] = {8950, 4350, 600, 500, 600, 500, 600, 500, 600, 500, 600, 500, 600, 500, 600, 1600, 650, 500, 600, 500, 600, 500, 600, 500, 600, 500, 600, 500, 600, 500, 600, 1600, 650, 500, 600, 1600, 600, 500, 600, 1600, 650, 1600, 600, 1600, 650, 450, 650, 450, 650, 450, 650, 450, 650, 1600, 600, 500, 600, 500, 650, 450, 600, 1600, 650, 1600, 600, 1600, 650}; // NEC 202B847
    const unsigned int srPUp[67] = {8900, 4350, 600, 500, 600, 500, 600, 500, 650, 450, 650, 450, 650, 450, 650, 1600, 600, 500, 600, 500, 600, 500, 600, 500, 600, 500, 650, 450, 650, 450, 650, 1600, 600, 500, 600, 500, 600, 1600, 650, 450, 650, 450, 650, 450, 650, 450, 650, 1600, 600, 500, 600, 1600, 650, 450, 650, 1600, 600, 1600, 650, 1600, 600, 1600, 600, 500, 650, 1600, 600}; // NEC 20242BD
    const unsigned int srPDown[67] = {8950, 4350, 650, 450, 600, 500, 650, 450, 650, 450, 650, 450, 650, 450, 650, 1550, 650, 500, 600, 500, 600, 500, 650, 450, 650, 450, 650, 450, 650, 450, 650, 1550, 650, 450, 650, 500, 600, 1600, 650, 450, 650, 1550, 650, 1600, 650, 450, 650, 450, 650, 450, 650, 1550, 650, 450, 650, 1600, 650, 450, 650, 450, 650, 1550, 650, 1600, 650, 1550, 650}; // NEC 20258A7
    const unsigned int srExit[67] = {8900, 4350, 600, 500, 600, 500, 650, 450, 650, 450, 650, 450, 650, 450, 650, 1600, 600, 500, 600, 500, 600, 500, 650, 450, 650, 450, 650, 450, 650, 450, 650, 1550, 650, 500, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 1550, 650, 500, 600, 1600, 650, 1550, 650, 1600, 650, 1550, 650, 1600, 600, 1600, 650, 450, 650, 1550, 650}; // NEC 20202FD
    const unsigned int srBack[67] = {8900, 4350, 650, 450, 650, 450, 650, 450, 600, 500, 650, 450, 650, 450, 650, 1600, 600, 500, 650, 450, 600, 500, 650, 450, 650, 450, 650, 450, 650, 450, 600, 1600, 650, 500, 600, 1600, 600, 500, 650, 450, 600, 500, 600, 500, 650, 450, 650, 1600, 600, 500, 600, 500, 600, 1600, 600, 1650, 600, 1600, 600, 1600, 650, 1600, 600, 500, 650, 1550, 650}; // NEC 202827D
    const unsigned int srUp[67] = {8950, 4350, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 1550, 650, 500, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 1550, 650, 500, 600, 1600, 650, 1550, 650, 450, 650, 1600, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 1600, 600, 500, 600, 1600, 650, 1550, 650, 1600, 650, 1550, 650}; // NEC 202D02F
    const unsigned int srDown[67] = {8950, 4300, 650, 450, 650, 500, 600, 500, 600, 500, 600, 500, 650, 450, 650, 1550, 650, 450, 650, 450, 650, 450, 650, 450, 650, 500, 600, 500, 600, 500, 650, 1550, 650, 450, 650, 450, 650, 1600, 650, 1550, 650, 1550, 650, 500, 600, 500, 600, 500, 600, 500, 650, 1550, 650, 450, 650, 450, 650, 450, 650, 1600, 650, 1550, 650, 1600, 600, 1600, 650}; // NEC 202708F
    const unsigned int srLeft[67] = {8950, 4350, 600, 500, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 1550, 650, 500, 600, 500, 600, 500, 650, 450, 650, 450, 650, 450, 650, 450, 650, 1550, 650, 450, 650, 450, 650, 500, 600, 500, 600, 500, 650, 1550, 650, 450, 650, 450, 650, 450, 650, 1600, 650, 1550, 650, 1600, 600, 1600, 600, 500, 600, 1600, 650, 1600, 600, 1600, 650}; // NEC 20208F7
    const unsigned int srRight[67] = {8950, 4300, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 1600, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 1600, 600, 500, 650, 1550, 650, 450, 650, 450, 650, 450, 650, 1600, 650, 450, 650, 450, 650, 450, 650, 450, 650, 1550, 650, 1600, 650, 1550, 650, 450, 650, 1600, 650, 1550, 650, 1600, 600}; // NEC 2028877
    const unsigned int srOK[67] = {8900, 4350, 600, 500, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 1600, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 600, 500, 650, 450, 650, 1600, 600, 500, 650, 1550, 650, 450, 650, 1600, 600, 1600, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 1600, 650, 450, 650, 450, 650, 1550, 650, 1600, 600, 1600, 650, 1550, 650}; // NEC 202B04F
    const unsigned int srPPlus[67] = {8950, 4350, 600, 500, 600, 500, 650, 450, 600, 500, 650, 450, 650, 450, 650, 1550, 650, 450, 650, 450, 650, 500, 600, 500, 600, 500, 650, 450, 650, 450, 650, 1550, 650, 450, 650, 1600, 650, 450, 650, 1550, 650, 450, 650, 1600, 600, 500, 650, 450, 650, 450, 650, 450, 650, 1550, 650, 450, 650, 1600, 650, 450, 650, 1550, 650, 1600, 600, 1600, 650}; // NEC 202A857
    const unsigned int srPMinus[67] = {8900, 4350, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 1550, 650, 500, 600, 500, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 1550, 650, 500, 600, 500, 600, 500, 600, 1600, 650, 1550, 650, 1600, 650, 450, 650, 450, 650, 450, 650, 1550, 650, 1600, 650, 450, 650, 450, 650, 450, 650, 1550, 650, 1600, 650, 1550, 650}; // NEC 20238C7
    const unsigned int srVPlus[67] = {8950, 4300, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 1600, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 1600, 600, 500, 650, 1550, 650, 1600, 600, 1600, 650, 1550, 650, 1600, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 1600, 650, 1550, 650, 1600, 600}; // NEC 202F807
    const unsigned int srVMinus[67] = {8950, 4300, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 500, 600, 1600, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 1600, 650, 450, 650, 450, 650, 1550, 650, 1600, 650, 1600, 600, 1600, 600, 500, 650, 450, 650, 450, 650, 1550, 650, 450, 650, 450, 650, 450, 650, 450, 650, 1600, 650, 1550, 650, 1600, 650}; // NEC 2027887
    const unsigned int srRed[67] = {8950, 4350, 600, 500, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 1550, 650, 500, 600, 500, 600, 500, 600, 500, 600, 500, 650, 450, 650, 450, 650, 1550, 650, 450, 650, 450, 650, 1600, 650, 1550, 650, 450, 650, 1600, 600, 500, 650, 450, 650, 450, 650, 1550, 650, 450, 650, 450, 650, 1600, 650, 450, 650, 1550, 650, 1600, 650, 1550, 650}; // NEC 2026897
    const unsigned int srGreen[67] = {8900, 4350, 600, 500, 600, 500, 600, 500, 600, 500, 600, 500, 600, 550, 550, 1650, 600, 500, 600, 500, 600, 500, 600, 500, 600, 500, 600, 500, 600, 500, 600, 1650, 600, 500, 600, 1600, 600, 1650, 600, 1600, 650, 450, 650, 1600, 600, 500, 600, 500, 600, 500, 600, 500, 600, 500, 600, 500, 600, 1600, 650, 500, 600, 1600, 650, 1550, 650, 1600, 650}; // NEC 202E817
    const unsigned int srBlue[67] = {8950, 4300, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 1600, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 700, 1550, 650, 450, 650, 450, 650, 450, 650, 450, 650, 1550, 650, 1600, 650, 450, 650, 450, 650, 450, 650, 1600, 600, 1600, 650, 1550, 650, 450, 650, 450, 650, 1600, 650, 1550, 650, 1600, 650}; // NEC 20218E7
    const unsigned int srYellow[67] = {8950, 4300, 650, 450, 650, 450, 700, 400, 650, 450, 650, 450, 700, 400, 650, 1600, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 700, 400, 700, 400, 650, 1600, 650, 450, 650, 1550, 650, 450, 650, 450, 700, 1550, 650, 1550, 650, 450, 700, 400, 700, 400, 650, 450, 650, 1600, 650, 1550, 650, 450, 700, 400, 650, 1600, 650, 1550, 650, 1600, 600}; // NEC 2029867
    const unsigned int srMenu[67] = {8950, 4300, 650, 450, 700, 400, 650, 500, 650, 450, 650, 450, 650, 450, 650, 1550, 650, 450, 700, 400, 700, 400, 650, 450, 700, 400, 700, 450, 600, 500, 600, 1600, 650, 450, 650, 450, 700, 1550, 650, 450, 650, 450, 650, 1550, 650, 450, 650, 450, 700, 400, 650, 1600, 650, 450, 650, 1550, 650, 1600, 650, 450, 650, 1550, 650, 1600, 600, 1600, 650}; // NEC 20248B7
    const unsigned int srRev[67] = {8950, 4300, 650, 450, 650, 450, 650, 450, 650, 450, 700, 400, 700, 400, 700, 1550, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 1600, 650, 450, 650, 1550, 650, 1600, 600, 500, 600, 500, 650, 1550, 650, 450, 650, 450, 650, 450, 700, 400, 650, 450, 650, 1600, 650, 1550, 700, 400, 700, 1550, 650, 1550, 650, 1600, 600}; // NEC 202C837
    const unsigned int srFwd[67] = {8900, 4350, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 1600, 600, 500, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 1550, 650, 500, 650, 1550, 650, 1550, 650, 450, 650, 1600, 650, 1550, 650, 450, 650, 450, 650, 500, 600, 500, 600, 500, 600, 1600, 650, 450, 650, 450, 650, 1550, 650, 1600, 650, 1550, 650}; // NEC 202D827
    const unsigned int srPlay[67] = {9000, 4300, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 1550, 650, 500, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 1550, 650, 450, 650, 500, 600, 500, 600, 1600, 650, 450, 650, 1550, 650, 450, 650, 500, 600, 500, 650, 1550, 650, 1550, 650, 450, 700, 1550, 650, 450, 650, 1550, 650, 1600, 650, 1550, 650}; // NEC 20228D7
    const unsigned int srStop[67] = {8950, 4300, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 1600, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 1600, 600, 500, 650, 450, 650, 450, 650, 1550, 650, 450, 700, 400, 650, 450, 700, 1550, 650, 450, 650, 1550, 650, 1600, 650, 450, 650, 1550, 650, 1600, 650, 1550, 650, 450, 650, 1600, 600}; // NEC 20222DD
    const unsigned int srSubtitle[67] = {8950, 4300, 650, 450, 650, 450, 650, 450, 650, 500, 650, 450, 600, 500, 600, 1600, 650, 450, 650, 450, 650, 450, 650, 450, 650, 450, 650, 500, 600, 500, 600, 1600, 650, 450, 650, 1600, 600, 1600, 650, 450, 650, 450, 650, 1550, 650, 450, 650, 1600, 650, 450, 650, 450, 650, 450, 650, 1600, 600, 1600, 650, 450, 650, 1550, 650, 450, 650, 1600, 650}; // NEC 202CA35
    const unsigned int srAudio[67] = {8900, 4350, 600, 500, 600, 500, 600, 500, 600, 500, 600, 500, 600, 500, 600, 1650, 600, 500, 600, 500, 600, 500, 600, 500, 600, 500, 600, 500, 600, 500, 600, 1650, 550, 550, 600, 1600, 600, 1650, 550, 550, 600, 1600, 600, 1600, 600, 500, 600, 1650, 550, 550, 600, 500, 600, 500, 600, 1650, 550, 550, 550, 550, 550, 1650, 600, 500, 600, 1650, 550}; // NEC 202DA25
    const unsigned int srRec[67] = {8950, 4300, 650, 450, 650, 450, 650, 450, 700, 400, 700, 400, 700, 450, 650, 1550, 650, 450, 650, 450, 700, 400, 700, 400, 700, 400, 700, 400, 700, 400, 700, 1550, 650, 450, 650, 1550, 700, 1550, 650, 1550, 650, 450, 700, 1550, 600, 500, 650, 1550, 650, 450, 700, 400, 700, 400, 700, 400, 650, 1600, 650, 450, 650, 1550, 650, 450, 700, 1550, 650}; // NEC 202EA15
    const unsigned int srGoto[67] = {8950, 4300, 700, 400, 700, 400, 700, 450, 650, 450, 650, 450, 650, 450, 650, 1550, 650, 450, 700, 400, 700, 400, 700, 400, 700, 450, 650, 450, 650, 450, 650, 1550, 650, 450, 700, 400, 700, 400, 700, 1550, 650, 450, 650, 1550, 700, 400, 700, 1550, 650, 450, 650, 1550, 700, 1550, 650, 450, 650, 1550, 650, 450, 650, 1550, 700, 450, 650, 1550, 650}; // NEC 2022AD5
    
    // TV
    #define tPower 0xE0E040BF
    #define tPowerS 0xE0E007F8
    #define tSource 0xE0E0807F
    #define t1 0xE0E020DF
    #define t2 0xE0E0A05F
    #define t3 0xE0E0609F
    #define t4 0xE0E010EF
    #define t5 0xFFFFFFFF
    #define t6 0xE0E050AF
    #define t7 0xE0E030CF
    #define t8 0xE0E0B04F
    #define t9 0xE0E0708F
    #define t0 0xE0E08877
    #define tTTX 0xE0E034CB
    #define tPRECH 0xE0E0C837
    #define tMute 0xE0E0F00F
    #define tVUp 0xE0E0E01F
    #define tVDown 0xE0E0D02F
    #define tPUp 0xE0E048B7
    #define tPDown 0xE0E008F7
    #define tCHlist 0xE0E0D629
    #define tMenu 0xE0E058A7
    #define tSmart 0xE0E09E61
    #define tGuide 0xE0E0F20D
    #define tTools 0xE0E0D22D
    #define tInfo 0xE0E0F807
    #define tUp 0xE0E006F9
    #define tDown 0xE0E08679
    #define tLeft 0xE0E0A659
    #define tRight 0xE0E046B9
    #define tOK 0xE0E016E9
    #define tReturn 0xE0E01AE5
    #define tExit 0xE0E0B44B
    #define tRed 0xE0E036C9
    #define tGreen 0xE0E028D7
    #define tYellow 0xE0E0A857
    #define tBlue 0xE0E06897
    #define tRev 0xE0E0A25D
    #define tFwd 0xE0E012ED
    #define tPause 0xE0E052AD
    #define tPlay 0xE0E0E21D
    #define tRec 0xE0E0926D
    #define tStop 0xE0E0629D
    
    // Definice IR
    IRrecv irrecv(RECV_PIN);
    IRsend irsend;
    decode_results results;
    
    // Proměnné
    
    void setup()
    {
      Serial.begin(9600);
      irrecv.enableIRIn(); // Start the receiver
    }
    
    void loop() {
    
      // Rozpoznání přijatého kódu
      if (irrecv.decode(&results)) {
        Serial.print("Prijato: ");
        Serial.println(results.value, HEX);
    
        delay(100); // Zpožděné odeslání
        switch (results.value) {
          case tRed:
            irsend.sendRaw(srRed, 67, 38);
            break;
          case tGreen:
            irsend.sendRaw(srGreen, 67, 38);
            break;
          case tYellow:
            irsend.sendRaw(srYellow, 67, 38);
            break;
          case tBlue:
            irsend.sendRaw(srBlue, 67, 38);
            break;
          case tUp:
            irsend.sendRaw(srUp, 67, 38);
            break;
          case tDown:
            irsend.sendRaw(srDown, 67, 38);
            break;
          case tLeft:
            irsend.sendRaw(srLeft, 67, 38);
            break;
          case tRight:
            irsend.sendRaw(srRight, 67, 38);
            break;
          case tOK:
            irsend.sendRaw(srOK, 67, 38);
            break;
          case t1:
            irsend.sendRaw(sr1, 67, 38);
            break;
          case t2:
            irsend.sendRaw(sr2, 67, 38);
            break;
          case t3:
            irsend.sendRaw(sr3, 67, 38);
            break;
          case t4:
            irsend.sendRaw(sr4, 67, 38);
            break;
          case t5:
            irsend.sendRaw(sr5, 67, 38);
            break;
          case t6:
            irsend.sendRaw(sr6, 67, 38);
            break;
          case t7:
            irsend.sendRaw(sr7, 67, 38);
            break;
          case t8:
            irsend.sendRaw(sr8, 67, 38);
            break;
          case t9:
            irsend.sendRaw(sr9, 67, 38);
            break;
          case t0:
            irsend.sendRaw(sr0, 67, 38);
            break;
          case tPUp:
            irsend.sendRaw(srPUp, 67, 38);
            break;
          case tPDown:
            irsend.sendRaw(srPDown, 67, 38);
            break;
          case tPlay:
            irsend.sendRaw(srPlay, 67, 38);
            break;
          case tPause:
            irsend.sendRaw(srPlay, 67, 38);
            break;
          case tStop:
            irsend.sendRaw(srStop, 67, 38);
            break;
          case tRev:
            irsend.sendRaw(srRev, 67, 38);
            break;
          case tFwd:
            irsend.sendRaw(srFwd, 67, 38);
            break;
          case tRec:
            irsend.sendRaw(srRec, 67, 38);
            break;
        }
        irrecv.enableIRIn();
        irrecv.resume(); // Receive the next value
      }
    }
    

    Neřekl bych, že je tam toho moc? Trochu to nechápu. U každého case jsem měl Serial.println(„Nejaky text“); po odstranění těchto debug informací se velikost globálních proměnných snížila, ale nevím jak to snížit dále?

    odpověď na: Arduino nano a laserová gravírka ala čajna #6873
    Vojtěch Vosáhlo
    Účastník

    To se povedlo. 😀

    odpověď na: Arduino nano a laserová gravírka ala čajna #6872
    Rabinjakob
    Účastník
    odpověď na: Arduino nano a laserová gravírka ala čajna #6871
    Rabinjakob
    Účastník

    tady pár fotek z výrobků jak sem slíbil.

    Igi
    Účastník

    Měl bych zájem, můžete sem prosím na sebe nechat nějaký kontakt, ideálně mail/skype. Děkuji.

    odpověď na: displej 5110 #6866
    tribal.cz
    Účastník

    Vyřešeno neuvědomil jsem si že funkce return zastaví běh skriptu

    odpověď na: Webové (stream) radio #6863
    closed
    Účastník

    Není to asi přesně ono, ale pro inspiraci : http://www.serasidis.gr/circuits/Arduino_WebRadio_player/Arduino_WebRadio_player.htm
    Snad pomůže.

    odpověď na: Výpočet HFE #6855
    posjirka
    Účastník

    koukni sem … je to na přelomu stran 2 a 3
    http://robodoupe.cz/wp-content/uploads/2012/01/tranzistor_polopate.pdf

    posjirka
    Účastník

    co má program dělat těch 5s co bude sepnutý relé č.2 ?

    odpověď na: IR ovladač #6853
    posjirka
    Účastník

    navrhoval bych po detekci signálu z DO udělat pauzu třeba 2s a pak terpve vyslat serii nového signálu. A to třeba 3x.

    odpověď na: IR ovladač #6852
    mitch
    Účastník

    Tak máš asi nejspíš pravdu… Problém je, že ten STB má asi nějakou extrémně citlivou přijímací diodu takže budu muset vymyslet dokonalé odstínění abych ověřil tuto teorii, ale dle zběžných pokusů to tak asi je 🙂

Aktuálně je na stránce zobrazeno 30 příspěvků - 1,951. až 1,980. (celkem z 2,760)