Boa tarde.

Gostaria de transformar esta função de acionamento de motor DC, que utiliza delay e uma função em millis. Segue a função abaixo:

void navegarAvanteNavio01 ()
{
//Gira o Motor A no sentido horario ( A vante)
//Incluir na função NavegarAvanteNavio01()
digitalWrite(IN1, HIGH);
digitalWrite(IN2, LOW);
delay(1000);
//Para o motor A
digitalWrite(IN1, HIGH);
digitalWrite(IN2, HIGH);
delay(1000);
}

Exibições: 724

Responder esta

Respostas a este tópico

Oi SCS, boa tarde.

É isto que você precisa?

http://pastebin.com/njm2TSbq

Rui

Rui boa noite.

Vou testar em casa com os equipamentos ligados e te retorno.

A principio muito obrigado.

Rui, valeu a intenção mas não rodou!

No caso estou programando todas as funções em abas dentro do Scketch, será que isto influi?Se bem que eu retirei a rotina de sua respectiva aba e a coloque na rotina principa como uma função a parte.Também notei que as variaveis de armazenamento do tempo estão como int, eu fiz um teste colocando-as como long mas mesmo assim não rodou.Será que não esta faltando umas variáveis auxiliares de controle de status?Pq no exemplo do link abaixo, eu as coloque (BuzzerState, Led1State...) e funcionou.

http://labdegaragem.com/forum/topics/contador-atrav-s-da-fun-o-mill...

SCS, bom dia.

Como o code que postou era somente um fragmento do seu code eu não

entendi o objetivo da substituição de delay() por millis(), e posso ter feito errado.

.

Rui

Sem problemas Rui.

No caso é uma função que esta em uma aba no sketch do Arduino. Eu Pesquisei sobre a função millis e vi que as variáveis de tempo tem que ser necessariamente long senão a variável não suporta além do que eu mencionei acima.

Oi SCS, 

as variáveis para o millis() não necessariamente tem que ser long.

se o valor for menor que 32.767 pode ser int;

Se for menor que  65.535 pode ser unsigned int;  (2 Bytes)

Se for menor que 2.147.483.648 pode ser long;

Se for menor que 4.294.967.296 pode ser unsigned long, (4bytes)

 e mais "On the Arduino Due, doubles have 8-byte (64 bit) precision."

Rui

Sim, mas vc concorda que enquanto eu tiver meu arduino ligado, eu tenho a função millis correndo em milisegundos e acumulando valores! Quanto mais tempo o Arduino ficar ligado, mais eu tenho a necessidade de ter uma variável que armazene um maior valor do tempo.A escolha da minha variável esta em função de quanto tempo eu irei rodar o sketch do meu arduino e consequentemente maior tempo este estará ligado.

Oi SCS, bom dia.

Correto. O máximo que o millis() atinge é  próximo à 432.000.000.

Rui

        432.000.000 

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço