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);
}
Tags:
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 |
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por