{"id":17095,"date":"2021-10-05T17:33:53","date_gmt":"2021-10-05T20:33:53","guid":{"rendered":"https:\/\/arduxop.com.br\/loja\/?p=17095"},"modified":"2022-11-19T07:27:33","modified_gmt":"2022-11-19T11:27:33","slug":"delay-com-millis-multitarefas","status":"publish","type":"post","link":"https:\/\/arduxop.com.br\/loja\/delay-com-millis-multitarefas\/","title":{"rendered":"Delay com Millis() &#8211; Multitarefas"},"content":{"rendered":"<h3 class=\"post-title entry-title\">Delay com Millis() &#8211; Multitarefas<\/h3>\n<div class=\"post-header\">\n<div class=\"post-header-line-1\"><\/div>\n<\/div>\n<div id=\"post-body-2475847565987309021\" class=\"post-body entry-content\">\n<div>Quando \u00e9 necess\u00e1rio executarmos v\u00e1rias tarefas ao mesmo tempo, precisamos limitar a utiliza\u00e7\u00e3o do <i>delay()<\/i> no c\u00f3digo fonte, e utilizarmos mais a fun\u00e7\u00e3o <i>millis()<\/i>.<\/div>\n<div><\/div>\n<div class=\"separator\"><iframe class=\"BLOG_video_class\" src=\"https:\/\/www.youtube.com\/embed\/g3y2QJkVEUE\" width=\"320\" height=\"266\" allowfullscreen=\"allowfullscreen\" data-mce-fragment=\"1\"><\/iframe><\/div>\n<div><\/div>\n<div>A fun\u00e7\u00e3o <i>millis()<\/i> retorna o tempo que o microcontrolador est\u00e1 ligado, em milissegundos.<\/div>\n<div>Guardando o valor de tempo que o processo foi executado e comparando com o valor de tempo atual, poderemos calcular quando deve ser executado novamente.<\/div>\n<div><\/div>\n<div>Para facilitar a l\u00f3gica, fiz a biblioteca <b><a href=\"https:\/\/github.com\/fellipecouto\/MillisTimer\" target=\"_blank\" rel=\"noopener\">MillisTimer<\/a><\/b> que faz o gerenciamento das vari\u00e1veis para cada processo que for utilizar.<\/div>\n<div><\/div>\n<p><a name=\"more\"><\/a><\/p>\n<div>A l\u00f3gica \u00e9 simples, mas com a biblioteca, o c\u00f3digo fonte fica mais limpo e mais f\u00e1cil de se trabalhar.<\/div>\n<div><\/div>\n<div>Biblioteca dispon\u00edvel em:<\/div>\n<div><a href=\"https:\/\/github.com\/fellipecouto\/MillisTimer\" target=\"_blank\" rel=\"noopener\">https:\/\/github.com\/fellipecouto\/MillisTimer<\/a><\/div>\n<div><\/div>\n<div>Refer\u00eancias:<\/div>\n<div><span style=\"font-size: small;\"><a href=\"https:\/\/www.arduino.cc\/reference\/pt\/language\/functions\/time\/millis\/\" target=\"_blank\" rel=\"noopener\">https:\/\/www.arduino.cc\/reference\/pt\/language\/functions\/time\/millis<\/a><\/span><\/div>\n<div><\/div>\n<div>Segue o esquema el\u00e9trico e o c\u00f3digo fonte:<\/div>\n<div><\/div>\n<div class=\"separator\"><a href=\"https:\/\/1.bp.blogspot.com\/-JgJ-_1m5mh4\/Xt5P84x1iOI\/AAAAAAAAa-U\/vu7RmJF6QGszYrrvdtpoXfAkpSIwEVUVQCK4BGAsYHg\/s1031\/DelayMillis_esquema.jpg\"><img fetchpriority=\"high\" decoding=\"async\" src=\"https:\/\/1.bp.blogspot.com\/-JgJ-_1m5mh4\/Xt5P84x1iOI\/AAAAAAAAa-U\/vu7RmJF6QGszYrrvdtpoXfAkpSIwEVUVQCK4BGAsYHg\/w400-h269\/DelayMillis_esquema.jpg\" width=\"400\" height=\"269\" border=\"0\" data-original-height=\"694\" data-original-width=\"1031\" \/><\/a><\/div>\n<div><\/div>\n<div><\/div>\n<div>\n<table>\n<tbody>\n<tr>\n<td>\n<pre> 1\r\n 2\r\n 3\r\n 4\r\n 5\r\n 6\r\n 7\r\n 8\r\n 9\r\n10\r\n11\r\n12\r\n13\r\n14\r\n15\r\n16\r\n17\r\n18\r\n19\r\n20\r\n21\r\n22\r\n23\r\n24\r\n25\r\n26\r\n27\r\n28\r\n29\r\n30\r\n31\r\n32\r\n33\r\n34\r\n35\r\n36\r\n37\r\n38\r\n39\r\n40\r\n41\r\n42\r\n43\r\n44\r\n45\r\n46\r\n47\r\n48\r\n49\r\n50\r\n51\r\n52\r\n53\r\n54\r\n55<\/pre>\n<\/td>\n<td>\n<pre>\/*----------------------------------------------------------------------------------------------\r\n  Programa  : DELAY COM MILLIS - MULTITAREFAS\r\n  Descri\u00e7\u00e3o : Exemplo de uso da biblioteca para usar a fun\u00e7\u00e3o Millis() como agendador de tarefas\r\n              (Cuidado ao usar a fun\u00e7\u00e3o Delay em outras partes do programa)\r\n  Autor     : Fellipe Couto [ http:\/\/www.efeitonerd.com.br ]\r\n  GitHub    : https:\/\/github.com\/fellipecouto\/MillisTimer\r\n  Data      : 07\/06\/2020\r\n  ----------------------------------------------------------------------------------------------*\/\r\n#include &lt;MillisTimer.h&gt; \/\/https:\/\/github.com\/fellipecouto\/MillisTimer [ http:\/\/www.efeitonerd.com.br ]\r\n\r\n#define LED_1  2\r\n#define LED_2  3\r\n#define LED_3  4\r\n#define LED_4  5\r\n#define BUTTON 6\r\n\r\n\/\/Inicializa\u00e7\u00e3o da biblioteca passando o valor do delay em milissegundos\r\nMillisTimer timer_led1(100);  \/\/Led 1 pisca com intervalo de 100 ms\r\nMillisTimer timer_led2(250);  \/\/Led 2 pisca com intervalo de 250 ms\r\nMillisTimer timer_led3(1000); \/\/Led 3 pisca com intervalo de 1000 ms (1 segundo)\r\n\r\nvoid setup() {\r\n  pinMode(LED_1, OUTPUT);\r\n  pinMode(LED_2, OUTPUT);\r\n  pinMode(LED_3, OUTPUT);\r\n  pinMode(LED_4, OUTPUT);\r\n  pinMode(BUTTON, INPUT_PULLUP);\r\n}\r\n\r\nvoid loop() {\r\n  \/\/Enquando os leds 1, 2 e 3 permanecem piscando, cada um no seu tempo,\r\n  \/\/o led 4 acende somente quando o bot\u00e3o estiver pressionado\r\n  \r\n  \/\/A cada 100ms a fun\u00e7\u00e3o timer() da biblioteca retornar\u00e1 true\r\n  if (timer_led1.timer()) {\r\n    digitalWrite(LED_1, !digitalRead(LED_1));\r\n  }\r\n\r\n  \/\/A cada 250ms a fun\u00e7\u00e3o timer() da biblioteca retornar\u00e1 true\r\n  if (timer_led2.timer()) {\r\n    digitalWrite(LED_2, !digitalRead(LED_2));\r\n  }\r\n\r\n  \/\/A cada 1000ms (1 segundo) a fun\u00e7\u00e3o timer() da biblioteca retornar\u00e1 true\r\n  if (timer_led3.timer()) {\r\n    digitalWrite(LED_3, !digitalRead(LED_3));\r\n  }\r\n\r\n  \/\/Se o bot\u00e3o for pressionado, liga o led\r\n  if (digitalRead(BUTTON) == LOW) {\r\n    digitalWrite(LED_4, HIGH);\r\n  } else {\r\n    digitalWrite(LED_4, LOW);\r\n  }\r\n}\r\n<\/pre>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<div><\/div>\n<\/div>\n<div class=\"post-footer\">\n<div class=\"post-footer-line post-footer-line-1\">\n<div class=\"post-share-buttons goog-inline-block\"><\/div>\n<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Delay com Millis() &#8211; Multitarefas Quando \u00e9 necess\u00e1rio executarmos v\u00e1rias tarefas ao mesmo tempo, precisamos limitar a utiliza\u00e7\u00e3o do delay() no c\u00f3digo fonte, e utilizarmos mais a fun\u00e7\u00e3o millis(). A fun\u00e7\u00e3o millis() retorna o tempo que o microcontrolador est\u00e1 ligado, em milissegundos. Guardando o valor de tempo que o processo foi executado e comparando com [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":17774,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[569,1],"tags":[],"class_list":["post-17095","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-artigos","category-sem-categoria","entry","has-media","owp-thumbs-layout-horizontal","owp-btn-normal","owp-tabs-layout-horizontal","has-no-thumbnails","has-product-nav"],"_links":{"self":[{"href":"https:\/\/arduxop.com.br\/loja\/wp-json\/wp\/v2\/posts\/17095","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/arduxop.com.br\/loja\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/arduxop.com.br\/loja\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/arduxop.com.br\/loja\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/arduxop.com.br\/loja\/wp-json\/wp\/v2\/comments?post=17095"}],"version-history":[{"count":0,"href":"https:\/\/arduxop.com.br\/loja\/wp-json\/wp\/v2\/posts\/17095\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/arduxop.com.br\/loja\/wp-json\/wp\/v2\/media\/17774"}],"wp:attachment":[{"href":"https:\/\/arduxop.com.br\/loja\/wp-json\/wp\/v2\/media?parent=17095"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/arduxop.com.br\/loja\/wp-json\/wp\/v2\/categories?post=17095"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/arduxop.com.br\/loja\/wp-json\/wp\/v2\/tags?post=17095"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}