{"id":37422,"date":"2019-10-31T22:17:33","date_gmt":"2019-10-31T19:17:33","guid":{"rendered":"https:\/\/prohoster.info\/blog\/shiotiny-uzly-svyazi-i-sobytiya-ili-osobennosti-risovaniya-programm\/"},"modified":"2019-10-31T22:17:33","modified_gmt":"2019-10-31T19:17:33","slug":"shiotiny-uzly-svyazi-i-sobytiya-ili-osobennosti-risovaniya-programm","status":"publish","type":"post","link":"https:\/\/prohoster.info\/cs\/blog\/administrirovanie\/shiotiny-uzly-svyazi-i-sobytiya-ili-osobennosti-risovaniya-programm","title":{"rendered":"ShIoTiny: uzly, vazby a ud\u00e1losti nebo rysy kreslen\u00ed program\u016f","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"ShIoTiny: uzly, vazby a ud\u00e1losti nebo rysy kreslen\u00ed program\u016f\" src=\"\/wp-content\/uploads\/2019\/08\/e5d6a9f6ca0fc445f705a645e5319c06.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h4>Hlavn\u00ed body nebo o \u010dem je tento \u010dl\u00e1nek<\/h4>\n<p>\nT\u00e9ma \u010dl\u00e1nku \u2013 vizu\u00e1ln\u00ed programov\u00e1n\u00ed PLC <b>ShIoTiny<\/b> pro chytrou dom\u00e1cnost, popsanou zde: <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/463107\/\">ShIoTiny: mal\u00e1 automatizace, internet v\u011bc\u00ed nebo \u201ep\u016fl roku p\u0159ed dovolenou\u201c<\/a><\/noindex>.<\/p>\n<p><b>Velmi stru\u010dn\u011b<\/b> jsou prob\u00edr\u00e1ny takov\u00e9 pojmy, jako <b>uzly<\/b>, <b>spojen\u00ed<\/b>, <b>ud\u00e1losti<\/b>, a tak\u00e9 rysy na\u010d\u00edt\u00e1n\u00ed a prov\u00e1d\u011bn\u00ed vizu\u00e1ln\u00edho programu na <b>ESP8266<\/b>, kter\u00fd tvo\u0159\u00ed z\u00e1klad PLC <b>ShIoTiny<\/b>.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h4>\u00davod nebo p\u00e1r organiza\u010dn\u00edch ot\u00e1zek<\/h4>\n<p>\nV p\u0159edchoz\u00edm \u010dl\u00e1nku jsem ohledn\u011b sv\u00e9 v\u00fdvoje poskytl stru\u010dn\u00fd p\u0159ehled mo\u017enost\u00ed \u0159adi\u010de <b>ShIoTiny<\/b>.<\/p>\n<p>Jak p\u0159ekvapiv\u00e9, ve\u0159ejnost projevila docela siln\u00fd z\u00e1jem a polo\u017eila mi spoustu ot\u00e1zek. N\u011bkte\u0159\u00ed lid\u00e9 dokonce hned nab\u00eddli, \u017ee od m\u011b koup\u00ed \u0159adi\u010d. Ne, nem\u00e1m nic proti tomu, abych trochu vyd\u011blal, ale sv\u011bdom\u00ed mi nedovoluje prod\u00e1vat zat\u00edm velmi nedokonalou v\u011bc v programov\u00e9m smyslu.<\/p>\n<p>Proto jsem zve\u0159ejnil na GitHub bin\u00e1rky firmwaru a sch\u00e9ma za\u0159\u00edzen\u00ed: <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/shiotiny\/ShIoTinyBin\">firmware+instrukce nejstru\u010dn\u011bj\u0161\u00ed+sch\u00e9ma+p\u0159\u00edklad<\/a><\/noindex>.<\/p>\n<p>Te\u010f si m\u016f\u017ee ka\u017ed\u00fd nahr\u00e1t firmware do ESP-07 a osobn\u011b si s n\u00edm pohr\u00e1t. Pokud n\u011bkdo opravdu chce p\u0159esn\u011b takovou desku jako na fotce \u2013 m\u00e1m jich n\u011bkolik k dispozici. Napi\u0161te mi na e-mail <b>shiotiny@yandex.ru<\/b>. Ale, jak \u0159\u00edkal nezapomenuteln\u00fd Ogurtsov: \u201eZa nic jsem odpov\u011bdn\u00fd!\u201c.<\/p>\n<p>Tak\u017ee p\u0159ejd\u011bme k j\u00e1dru: co je to \u201e<b>uzel<\/b>\u201e(uzel) a \u201e<b>ud\u00e1lost<\/b>\u201e? Jak se program prov\u00e1d\u00ed?<\/p>\n<p>Jak b\u00fdv\u00e1 zvykem \u2013 za\u010dn\u011bme od za\u010d\u00e1tku: s na\u010d\u00edt\u00e1n\u00edm programu.<\/p>\n<h4>Jak se na\u010d\u00edt\u00e1 program<\/h4>\n<p>\nZa\u010dn\u011bme t\u00edm, co se d\u011bje, kdy\u017e stiskneme tla\u010d\u00edtko <b>Nahr\u00e1t<\/b> v editoru <b>ElDraw<\/b> a n\u00e1\u0161 sch\u00e9ma-program, slo\u017een\u00fd z kr\u00e1sn\u00fdch \u010dtverc\u016f, odlet\u00ed do za\u0159\u00edzen\u00ed.<\/p>\n<p>Jednak se na z\u00e1klad\u011b n\u00e1mi nakreslen\u00e9 sch\u00e9ma vytvo\u0159\u00ed jej\u00ed popis v textov\u00e9 podob\u011b.<br \/>\nZa druh\u00e9, zkontroluje se, zda jsou v\u0161echny vstupy uzl\u016f spojeny s v\u00fdstupy. 'Vis\u00edc\u00ed' vstupy by nem\u011bly b\u00fdt. Pokud se takov\u00fd vstup zjist\u00ed \u2013 sch\u00e9ma se do ShIoTiny nenahr\u00e1v\u00e1 a editor vyhod\u00ed odpov\u00eddaj\u00edc\u00ed upozorn\u011bn\u00ed.<\/p>\n<p>Pokud v\u0161echno prob\u011bhlo \u00fasp\u011b\u0161n\u011b, editor ode\u0161le do ShIoTiny textov\u00fd popis sch\u00e9matu po jednom uzlu. Samoz\u0159ejm\u011b, st\u00e1vaj\u00edc\u00ed sch\u00e9ma ze ShIoTiny se nejprve odstran\u00ed. Z\u00edskan\u00fd textov\u00fd popis je ulo\u017een do FLASH pam\u011bti.<\/p>\n<p>Mimochodem, pokud chcete sch\u00e9ma z za\u0159\u00edzen\u00ed odstranit, sta\u010d\u00ed do n\u011bj nahr\u00e1t pr\u00e1zdn\u00e9 sch\u00e9ma (neobsahuj\u00edc\u00ed \u017e\u00e1dn\u00fd prvek-uzel).<\/p>\n<p>Jakmile je cel\u00e9 sch\u00e9ma-program nahr\u00e1no do PLC ShIoTiny, za\u010dne 'prov\u00e1d\u011bt'. Co to znamen\u00e1?<\/p>\n<p>Upozorn\u00edme, \u017ee procesy na\u010d\u00edt\u00e1n\u00ed sch\u00e9matu z FLASH pam\u011bti p\u0159i zapnut\u00ed a p\u0159i p\u0159ij\u00edm\u00e1n\u00ed sch\u00e9matu z editoru jsou toto\u017en\u00e9.<\/p>\n<p>Nejprve se vytvo\u0159\u00ed objekty uzl\u016f na z\u00e1klad\u011b jejich popisu.<br \/>\nPak se nastav\u00ed vazby mezi uzly. To znamen\u00e1, \u017ee se generuj\u00ed odkazy v\u00fdstup\u016f na vstupy a vstup\u016f na v\u00fdstupy.<\/p>\n<p>A teprve po tom v\u0161em se spust\u00ed hlavn\u00ed cyklus prov\u00e1d\u011bn\u00ed programu.<\/p>\n<p>Psal jsem dlouho, ale cel\u00fd proces - od \"na\u010d\u00edt\u00e1n\u00ed\" sch\u00e9matu z FLASH pam\u011bti a\u017e po spu\u0161t\u011bn\u00ed hlavn\u00edho cyklu - zabere zlomek sekundy pro sch\u00e9ma s 60-80 uzly.<\/p>\n<p>Jak funguje hlavn\u00ed cyklus? Velmi jednodu\u0161e. Nejprve \u010dek\u00e1 na vznik <b>ud\u00e1losti<\/b> v n\u011bkter\u00e9m uzlu, pot\u00e9 zpracov\u00e1v\u00e1 tuto ud\u00e1lost. A tak neust\u00e1le. No, nebo dokud se nenahraje do ShIoTiny nov\u00e9 sch\u00e9ma.<\/p>\n<p>U\u017e n\u011bkolikr\u00e1t jsem zmi\u0148oval takov\u00e9 v\u011bci, jako <b>ud\u00e1losti<\/b>, <b>uzly<\/b> a <b>spojen\u00ed<\/b>. Ale co to vlastn\u011b znamen\u00e1 ze softwarov\u00e9ho hlediska? O tom si dnes pohovo\u0159\u00edme.<\/p>\n<h4>Uzl\u016fm, vazb\u00e1m a ud\u00e1lostem<\/h4>\n<p>\nSta\u010d\u00ed se pod\u00edvat na p\u0159\u00edklady sch\u00e9mat-program\u016f pro <b>ShIoTiny<\/b>, abyste pochopili, \u017ee sch\u00e9ma se skl\u00e1d\u00e1 pouze ze dvou entit - uzl\u016f (nebo prvk\u016f) a vazeb mezi nimi.<\/p>\n<p><b>Uzla<\/b>, <b>uzel<\/b> nebo <b>prvek sch\u00e9matu<\/b> \u2013 to je virtu\u00e1ln\u00ed reprezentace n\u011b\u010deho <b>akce<\/b> nad daty. M\u016f\u017ee to b\u00fdt aritmetick\u00e1 operace, logick\u00e1 operace nebo jak\u00e1koli jin\u00e1 operace, kter\u00e1 n\u00e1s napadne. Hlavn\u00ed je, \u017ee uzel m\u00e1 vstup a v\u00fdstup.<\/p>\n<p><b>P\u0159ihl\u00e1\u0161en\u00ed<\/b> \u2013 to je m\u00edsto, kam uzel p\u0159ij\u00edm\u00e1 data. Zobrazen\u00ed vstup\u016f jsou body, kter\u00e9 jsou v\u017edy na lev\u00e9 stran\u011b uzlu.<\/p>\n<p><b>V\u00fdstup<\/b> \u2013 to je m\u00edsto, odkud se extrahuje v\u00fdsledek pr\u00e1ce uzlu. Zobrazen\u00ed v\u00fdstup\u016f jsou body, kter\u00e9 jsou v\u017edy na prav\u00e9 stran\u011b uzlu.<\/p>\n<p>N\u011bkter\u00e9 uzly nemaj\u00ed vstupy. Takov\u00e9 uzly generuj\u00ed v\u00fdsledek uvnit\u0159 sebe. Nap\u0159\u00edklad uzel konstanty nebo uzel senzoru: nepot\u0159ebuj\u00ed data od jin\u00fdch uzl\u016f, aby ozn\u00e1mily v\u00fdsledek.<\/p>\n<p>Ostatn\u00ed uzly naopak nemaj\u00ed v\u00fdstupy. To jsou uzly, kter\u00e9 zobrazuj\u00ed nap\u0159\u00edklad v\u00fdstupn\u00ed za\u0159\u00edzen\u00ed (rela\u010dn\u00ed nebo podobn\u00e9). P\u0159ij\u00edmaj\u00ed data, ale negeneruj\u00ed v\u00fdsledek v\u00fdpo\u010dt\u016f dostupn\u00e9ho pro ostatn\u00ed uzly.<\/p>\n<p>Krom\u011b toho existuje je\u0161t\u011b unik\u00e1tn\u00ed uzel-koment\u00e1\u0159. Nic ned\u011bl\u00e1, nem\u00e1 ani vstupy ani v\u00fdstupy. Jeho \u00fakolem je b\u00fdt vysv\u011btlen\u00edm na sch\u00e9matu.<\/p>\n<p>Co znamen\u00e1 \u201e<b>ud\u00e1lost<\/b>\u00bb? <b>Ud\u00e1lost<\/b> \u2013 to je vznik nov\u00fdch dat v n\u011bkter\u00e9m uzlu. Nap\u0159\u00edklad mezi ud\u00e1losti pat\u0159\u00ed: zm\u011bna stavu vstupu (uzel <b>Vstup<\/b>), p\u0159\u00edjem dat z jin\u00e9ho za\u0159\u00edzen\u00ed (uzly <b>MQTT<\/b> a <b>UDP<\/b>), vypr\u0161en\u00ed zadan\u00e9ho \u010dasov\u00e9ho intervalu (uzly <b>Timer<\/b> a <b>Zpo\u017ed\u011bn\u00ed<\/b>) a tak d\u00e1le.<\/p>\n<p>K \u010demu jsou ud\u00e1losti? Aby bylo mo\u017en\u00e9 ur\u010dit, v kter\u00e9m uzlu vznikla nov\u00e1 data a jak\u00e9 stavy uzl\u016f je t\u0159eba zm\u011bnit v souvislosti s p\u0159ijet\u00edm nov\u00fdch dat. Ud\u00e1lost jakoby \"proch\u00e1z\u00ed\" \u0159et\u011bzcem uzl\u016f, dokud nezakryje v\u0161echny uzly, jejich\u017e stavy je t\u0159eba zkontrolovat a zm\u011bnit.<\/p>\n<p>V\u0161echny uzly lze rozd\u011blit do dvou kategori\u00ed. <br \/>\nUzly, kter\u00e9 mohou generovat ud\u00e1losti, nazveme \u201e<b>aktivn\u00ed uzly<\/b>\u00bb.<br \/>\nUzly, kter\u00e9 nemohou generovat ud\u00e1losti, nazveme \u201e<b>pasivn\u00ed uzly<\/b>\u00bb.<\/p>\n<p>Kdy\u017e uzel generuje ud\u00e1lost (to znamen\u00e1, \u017ee na jeho v\u00fdstupu se objevuj\u00ed nov\u00e1 data), pak se obecn\u011b m\u011bn\u00ed stav cel\u00e9ho \u0159et\u011bzce uzl\u016f p\u0159ipojen\u00fdch k v\u00fdstupu uzlu-gener\u00e1toru ud\u00e1lost\u00ed.<\/p>\n<p>Aby to bylo jasn\u00e9, pod\u00edvejme se na p\u0159\u00edklad na obr\u00e1zku.<\/p>\n<p><img decoding=\"async\" alt=\"ShIoTiny: uzly, vazby a ud\u00e1losti nebo rysy kreslen\u00ed program\u016f\" src=\"\/wp-content\/uploads\/2019\/08\/41b53ae925e85c3f272adec876ab3151.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAktivn\u00ed uzly zde jsou \u2014 Input1, Input2 a Input3. Ostatn\u00ed uzly jsou pasivn\u00ed. Zjist\u00edme, co se stane, kdy\u017e se uzav\u00edr\u00e1 ten \u010di onen vstup. V\u00fdsledky jsou pro pohodl\u00ed shrnuty v tabulce.<\/p>\n<p><img decoding=\"async\" alt=\"ShIoTiny: uzly, vazby a ud\u00e1losti nebo rysy kreslen\u00ed program\u016f\" src=\"\/wp-content\/uploads\/2019\/08\/0a8435184f85e919f763048120e6e780.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nJak vid\u00edme, p\u0159i vzniku ud\u00e1losti se vytv\u00e1\u0159\u00ed \u0159et\u011bzec od uzlu-zdroje ud\u00e1losti a\u017e k c\u00edlov\u00e9mu uzlu. Stavy uzl\u016f, kter\u00e9 nespadnou do \u0159et\u011bzce, se nem\u011bn\u00ed.<\/p>\n<p>Vznik\u00e1 opr\u00e1vn\u011bn\u00e1 ot\u00e1zka, co se stane, pokud vznikne dv\u011b nebo dokonce v\u00edce ud\u00e1lost\u00ed sou\u010dasn\u011b?<\/p>\n<p>Jak milovn\u00edk kreativity Gleb Anfilov, m\u00e1m tendenci poslat zv\u011bdav\u00e9ho tazatele k jeho knize \u201eUt\u00edk\u00e1n\u00ed od p\u0159ekvapen\u00ed\u201c. Je to takov\u00e1 \u201eteorie relativity pro nejmen\u0161\u00ed\u201c, ve kter\u00e9 je dob\u0159e vysv\u011btleno, co je \u201esou\u010dasn\u011b\u201c a jak s t\u00edm \u017e\u00edt.<\/p>\n<p>Ale \u010dist\u011b prakticky je v\u0161e mnohem jednodu\u0161\u0161\u00ed: p\u0159i vzniku dvou nebo dokonce v\u00edce ud\u00e1lost\u00ed se postupn\u011b vytv\u00e1\u0159ej\u00ed a zpracov\u00e1vaj\u00ed v\u0161echny \u0159et\u011bzce od ka\u017ed\u00e9ho zdroje ud\u00e1losti po sob\u011b a \u017e\u00e1dn\u00e9 z\u00e1zraky.<\/p>\n<p>Dal\u0161\u00ed zcela opr\u00e1vn\u011bn\u00e1 ot\u00e1zka zv\u011bdav\u00e9ho \u010dten\u00e1\u0159e \u2014 co se stane, pokud uzly spoj\u00edme do kruhu? Nebo, jak se to v t\u011bchto va\u0161ich chytr\u00fdch kruz\u00edch \u0159\u00edk\u00e1 \u2014 zav\u00e9st zp\u011btnou vazbu. To znamen\u00e1 spojit v\u00fdstup jednoho z uzl\u016f s vstupem p\u0159edchoz\u00edho uzlu tak, aby stav v\u00fdstupu tohoto uzlu ovliv\u0148oval stav jeho\u017e vstupu. P\u0159\u00edmo spojit v\u00fdstup uzlu s jeho\u017e vstupem v\u00e1m editor nedovol\u00ed. <b>ElDraw<\/b>. A p\u0159itom, jak je zn\u00e1zorn\u011bno n\u00ed\u017ee \u2014 to ud\u011blat lze.<\/p>\n<p>Tak\u017ee, co se vlastn\u011b stane v tomto p\u0159\u00edpad\u011b? Odpov\u011b\u010f bude velmi \"jednozna\u010dn\u00e1\": z\u00e1le\u017e\u00ed na tom, jak\u00e9 uzly. Pod\u00edvejme se na p\u0159\u00edklad na obr\u00e1zku.<\/p>\n<p><img decoding=\"async\" alt=\"ShIoTiny: uzly, vazby a ud\u00e1losti nebo rysy kreslen\u00ed program\u016f\" src=\"\/wp-content\/uploads\/2019\/08\/7a640c3abfd4868b87f415bce93e4918.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nKdy\u017e jsou kontakty vstupu Input1 otev\u0159en\u00e9 na horn\u00edm vstupu uzlu A \u2014 0. Na v\u00fdstupu uzlu A, tak\u00e9 0. Na v\u00fdstupu uzlu B \u2014 1. A nakonec, na doln\u00edm vstupu uzlu A \u2014 1. V\u0161echno jasn\u00e9. A kdo nem\u00e1 jasno \u2014 pod\u00edvejte se n\u00ed\u017ee na popis toho, jak funguj\u00ed uzly \"A\" a \"NE\".<\/p>\n<p>Te\u010f uzav\u0159eme kontakty vstupu Input1, to znamen\u00e1, \u017ee na horn\u00ed vstup uzlu A p\u0159i\u0159ad\u00edme jedni\u010dku. Ti, kdo znaj\u00ed elektroniku, v\u011bd\u00ed, \u017ee ve skute\u010dnosti dostaneme klasickou sch\u00e9ma gener\u00e1toru na logick\u00fdch prvc\u00edch. A podle teorie by takov\u00e1 sch\u00e9ma m\u011bla nekone\u010dn\u011b vyhazovat na v\u00fdstupu prvk\u016f A a B sekvence 1-0-1-0-1-0\u2026. a 0-1-0-1-0-1-\u2026. V\u017edy\u0165 ud\u00e1lost by m\u011bla neust\u00e1le m\u011bnit stav uzl\u016f A a B, b\u011bh\u00e1n\u00edm v kruhu 2-3-2-3-\u2026!<\/p>\n<p>Ale ve skute\u010dnosti se to ned\u011bje. Sch\u00e9ma upadne do n\u00e1hodn\u00e9ho stavu \u2014 bu\u010f rel\u00e9 z\u016fstane zapnut\u00e9 nebo vypnut\u00e9, nebo m\u016f\u017ee i lehce zabzu\u010det, zap\u00ednaj\u00edc\u00ed a vyp\u00ednaj\u00edc\u00ed se n\u011bkolikr\u00e1t za sebou. V\u0161e z\u00e1vis\u00ed na po\u010das\u00ed na ji\u017en\u00edm p\u00f3lu Marsu. A tak je to, pro\u010d se to d\u011bje.<\/p>\n<p>Ud\u00e1lost s uzlem Input1 m\u011bn\u00ed stav uzlu A, pot\u00e9 uzlu B a tak dokola n\u011bkolikr\u00e1t. Program ur\u010duje \"cyklov\u00e1n\u00ed\" ud\u00e1losti a nucen\u011b p\u0159eru\u0161uje tento karneval. Po tom, co se stav uzl\u016f A a B zm\u011bn\u00ed, je zablokov\u00e1n a\u017e do vzniku nov\u00e9 ud\u00e1losti. Okam\u017eik, kdy program rozhodne \u2014 \"sta\u010d\u00ed se to\u010dit dokola!\" \u2014 obecn\u011b z\u00e1vis\u00ed na mnoha faktorech a m\u016f\u017ee b\u00fdt pova\u017eov\u00e1n za n\u00e1hodn\u00fd.<\/p>\n<blockquote><p>Bu\u010fte opatrn\u00ed, kdy\u017e spojujete uzly do kruhu \u2014 efekty nebudou v\u017edy z\u0159ejm\u00e9! Dob\u0159e si p\u0159edstavte, co a pro\u010d d\u011bl\u00e1te!<\/p><\/blockquote>\n<p> Ale je mo\u017en\u00e9 p\u0159ece jen postavit gener\u00e1tor na dostupn\u00fdch uzlech? Ano, je mo\u017en\u00e9! Ale k tomu je nezbytn\u00fd uzel, kter\u00fd um\u00ed generovat ud\u00e1losti s\u00e1m. A takov\u00fd uzel existuje \u2014 to je \"zpo\u017e\u010fovac\u00ed linie\". Pod\u00edvejme se, jak funguje gener\u00e1tor s periodou 6 sekund na obr\u00e1zku n\u00ed\u017ee.<\/p>\n<p><img decoding=\"async\" alt=\"ShIoTiny: uzly, vazby a ud\u00e1losti nebo rysy kreslen\u00ed program\u016f\" src=\"\/wp-content\/uploads\/2019\/08\/7dc1babedec97fb8177b846c760ff44e.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nHlavn\u00edm prvkem gener\u00e1toru je uzel A \u2014 zpo\u017ed\u011bc\u00ed linie. Pokud se zm\u011bn\u00ed stav vstupu zpo\u017ed\u011bc\u00ed linie z 0 na 1, tak na v\u00fdstupu se 1 neobjev\u00ed okam\u017eit\u011b, ale a\u017e po ur\u010dit\u00e9m \u010dase. V na\u0161em p\u0159\u00edpad\u011b je to 3 sekundy. Stejn\u011b tak, pokud se stav vstupu zpo\u017ed\u011bc\u00ed linie zm\u011bn\u00ed z 1 na 0, tak se 0 na v\u00fdstupu objev\u00ed po stejn\u00fdch 3 sekund\u00e1ch. \u010cas zpo\u017ed\u011bn\u00ed se ud\u00e1v\u00e1 v desetin\u00e1ch sekundy. Tedy hodnota 30 znamen\u00e1 \u2014 3 sekundy.<\/p>\n<p>Specifikem zpo\u017ed\u011bc\u00ed linie je, \u017ee generuje ud\u00e1lost po uplynut\u00ed zpo\u017ed\u011bn\u00e9ho \u010dasu.<\/p>\n<p>P\u0159edpokl\u00e1dejme, \u017ee na v\u00fdstupu zpo\u017ed\u011bc\u00ed linie bylo zjistiteln\u011b 0. Po pr\u016fchodu uzlem B \u2014 invertorem \u2014 se tento 0 zm\u011bn\u00ed na 1 a dostane se na vstup zpo\u017ed\u011bc\u00ed linie. Okam\u017eit\u011b se nic ned\u011bje. Na v\u00fdstupu zpo\u017ed\u011bc\u00ed linie z\u016fst\u00e1v\u00e1 0, ale z\u00e1rove\u0148 za\u010d\u00edn\u00e1 odpo\u010det \u010dasu zpo\u017ed\u011bn\u00ed. Uplynou 3 sekundy. A pak zpo\u017ed\u011bc\u00ed linie generuje ud\u00e1lost. Na v\u00fdstupu se objev\u00ed 1. Tato jedni\u010dka po pr\u016fchodu uzlem B \u2014 invertorem \u2014 se m\u011bn\u00ed na 0 a dost\u00e1v\u00e1 se na vstup zpo\u017ed\u011bc\u00ed linie. Uplynou dal\u0161\u00ed 3 sekundy\u2026 a proces se opakuje. Tedy ka\u017ed\u00e9 3 sekundy se stav v\u00fdstupu zpo\u017ed\u011bc\u00ed linie m\u011bn\u00ed z 0 na 1 a pot\u00e9 z 1 na 0. Rel\u00e9 cvak\u00e1. Gener\u00e1tor pracuje. Perioda impuls\u016f \u010din\u00ed 6 sekund (3 sekundy na v\u00fdstupu 0 a 3 sekundy \u2014 1).<\/p>\n<p>Ale v re\u00e1ln\u00fdch sch\u00e9matech obvykle nen\u00ed pot\u0159eba pou\u017e\u00edt ani tento p\u0159\u00edklad. Existuj\u00ed speci\u00e1ln\u00ed uzly-timery, kter\u00e9 skv\u011ble a bez pomoci generuj\u00ed sekvenci impuls\u016f se stanovenou periodou. D\u00e9lka \u201enuly\u201c a \u201ejedni\u010dky\u201c v t\u011bchto impulsech je rovna polovin\u011b periody.<\/p>\n<blockquote><p>Pro zad\u00e1n\u00ed periodick\u00fdch akc\u00ed pou\u017e\u00edvejte uzly-timery.<\/p><\/blockquote>\n<p> Upozor\u0148uji, \u017ee takov\u00e9 digit\u00e1ln\u00ed sign\u00e1ly, kde je d\u00e9lka \u201enuly\u201c a \u201ejedni\u010dky\u201c shodn\u00e1, se naz\u00fdvaj\u00ed \u201emeandrem\u201c. <\/p>\n<p>Douf\u00e1m, \u017ee jsem trochu objasnil ot\u00e1zku, jak prob\u00edh\u00e1 \u0161\u00ed\u0159en\u00ed ud\u00e1lost\u00ed mezi uzly a co byste nem\u011bli d\u011blat?<\/p>\n<h4>Z\u00e1v\u011br a odkazy<\/h4>\n<p>\n\u010cl\u00e1nek je kr\u00e1tk\u00fd, ale je to \u010dl\u00e1nek-odpov\u011b\u010f na vznesen\u00e9 ot\u00e1zky ohledn\u011b uzl\u016f a ud\u00e1lost\u00ed.<\/p>\n<p>Jak se vyv\u00edjej\u00ed firmwary a objevuj\u00ed nov\u00e9 p\u0159\u00edklady, budu ps\u00e1t o tom, jak programovat <b>ShIoTiny<\/b> kr\u00e1tk\u00e9 \u010dl\u00e1nky, pokud to bude lidem zaj\u00edmav\u00e9.<\/p>\n<p>Jak u\u017e d\u0159\u00edve, sch\u00e9ma, firmware, p\u0159\u00edklady, popisy uzl\u016f a v\u0161e <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/shiotiny\/ShIoTinyBin\">ostatn\u00ed je zde<\/a><\/noindex>.<\/p>\n<p>Ot\u00e1zky, p\u0159\u00e1n\u00ed, kritika \u2014 sem: <b>shiotiny@yandex.ru<\/b><br \/>\n<br \/>Zdroj: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/463285\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u0442\u0435\u0437\u0438\u0441\u044b \u0438\u043b\u0438 \u043e \u0447\u0435\u043c \u044d\u0442\u0430 \u0441\u0442\u0430\u0442\u044c\u044f \u0422\u0435\u043c\u0430 \u0441\u0442\u0430\u0442\u044c\u0438 \u2014 \u0432\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u043e\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u041f\u041b\u041a ShIoTiny \u0434\u043b\u044f \u0443\u043c\u043d\u043e\u0433\u043e \u0434\u043e\u043c\u0430, \u043e\u043f\u0438\u0441\u0430\u043d\u043d\u043e\u0433\u043e \u0442\u0443\u0442: ShIoTiny: \u043c\u0430\u043b\u0430\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u044f, \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442 \u0432\u0435\u0449\u0435\u0439 \u0438\u043b\u0438 \u00ab\u0437\u0430 \u043f\u043e\u043b\u0433\u043e\u0434\u0430 \u0434\u043e \u043e\u0442\u043f\u0443\u0441\u043a\u0430\u00bb. \u041e\u0447\u0435\u043d\u044c \u043a\u0440\u0430\u0442\u043a\u043e \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u044b \u0442\u0430\u043a\u0438\u0435 \u043f\u043e\u043d\u044f\u0442\u0438\u044f, \u043a\u0430\u043a \u0443\u0437\u043b\u044b, \u0441\u0432\u044f\u0437\u0438, \u0441\u043e\u0431\u044b\u0442\u0438\u044f, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0432\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u043d\u0430 ESP8266, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043e\u0441\u043d\u043e\u0432\u043e\u0439 \u041f\u041b\u041a ShIoTiny. \u0412\u0441\u0442\u0443\u043f\u043b\u0435\u043d\u0438\u0435 \u0438\u043b\u0438 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":28078,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-37422","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.3 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u0442\u0435\u0437\u0438\u0441\u044b \u0438\u043b\u0438.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/cs\/blog\/administrirovanie\/shiotiny-uzly-svyazi-i-sobytiya-ili-osobennosti-risovaniya-programm\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"cs_CZ\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47ShIoTiny: \u0443\u0437\u043b\u044b, \u0441\u0432\u044f\u0437\u0438 \u0438 \u0441\u043e\u0431\u044b\u0442\u0438\u044f \u0438\u043b\u0438 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u0440\u0438\u0441\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u0442\u0435\u0437\u0438\u0441\u044b \u0438\u043b\u0438.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/cs\/blog\/administrirovanie\/shiotiny-uzly-svyazi-i-sobytiya-ili-osobennosti-risovaniya-programm\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T19:17:33+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T19:17:33+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47ShIoTiny: uzly, vazby a ud\u00e1losti nebo vlastnosti kreslen\u00ed program\u016f | ProHoster","description":"Hlavn\u00ed my\u0161lenky nebo.","canonical_url":"https:\/\/prohoster.info\/cs\/blog\/administrirovanie\/shiotiny-uzly-svyazi-i-sobytiya-ili-osobennosti-risovaniya-programm","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"cs_CZ","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47ShIoTiny: \u0443\u0437\u043b\u044b, \u0441\u0432\u044f\u0437\u0438 \u0438 \u0441\u043e\u0431\u044b\u0442\u0438\u044f \u0438\u043b\u0438 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u0440\u0438\u0441\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c | ProHoster","og:description":"\u041e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u0442\u0435\u0437\u0438\u0441\u044b \u0438\u043b\u0438.","og:url":"https:\/\/prohoster.info\/cs\/blog\/administrirovanie\/shiotiny-uzly-svyazi-i-sobytiya-ili-osobennosti-risovaniya-programm","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T19:17:33+00:00","article:modified_time":"2019-10-31T19:17:33+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"37422","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-23 17:45:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 01:27:24","updated":"2026-01-23 17:45:19","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/posts\/37422","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/comments?post=37422"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/posts\/37422\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/media\/28078"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/media?parent=37422"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/categories?post=37422"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/tags?post=37422"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}