Preciso de um código que periodicamente a cada X milisegundos execute uma tarefa com Y milisegundos de duração usando a função millis() .
Qual estrutura básica para isso ?
Estou meio perdido...
Agradeço algum exemplo
Preciso de um código que periodicamente a cada X milisegundos execute uma tarefa com Y milisegundos de duração usando a função millis() .
Qual estrutura básica para isso ?
Estou meio perdido...
Agradeço algum exemplo
#define intervaloX 5000 //5 segundos
#define intervaloY 1000 //1 segundo
unsigned long int X = ;
unsigned long int time_X = 0;
unsigned long int Y = ;
unsigned long int time_Y = 0;
unsigned char run = 0;
if (millis() - time_X > intervaloX){
time_X = millis();
run = 1;
};
if (run == 1){
//executa o código por tempo Y
if (millis() - time_X > intervalo_Y) { //não é um erro usar time_X aqui.
run=0;
}
}
Muito obrigado pela ajuda. Resolveu meu problema. Fiz algumas modificações no código para simplificar o uso.
Assim checando o estado do "run" em qualquer lugar dentro do loop pode se executar uma tarefa ou outra . Veja o código simplificado:
#define intervaloX 1000 // intervalo do evento periodico
#define intervaloY 100 //duração do evento
#define outputPin 3 // pino de saida
unsigned long int timeX = 0;
unsigned char run = 0;
void setup() {
pinMode(outputPin, OUTPUT); // output for a command
digitalWrite(outputPin, LOW);
}
void loop() {
intervalometro(); // inicia o temporizador
if (run == 0) digitalWrite(outputPin, LOW); // pode ser usado para executar uma tarefa
if (run == 1) digitalWrite(outputPin, HIGH); // pode ser usado para executar uma outra tarefa
}
void intervalometro(){
if (millis() - timeX > intervaloX){timeX = millis(); run = 1;} //intervalo periodico
if (run == 1){if (millis() - timeX > intervaloY) {run=0;}}// duraçao do evento
}
This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.