Ajuda com código de tempo

Ver o tópico anterior Ver o tópico seguinte Ir em baixo

Ajuda com código de tempo

Mensagem  rocborges em Ter 11 Dez - 14:53

Olá galera.

Preciso escrever um código que após entrar em uma condicional execute um comando, inicie a contagem de um tempo e continue rodando o restante do programa normalmente.

Até aí tudo bem. Mas daí vem a dúvida: preciso que o programa só volte a entrar nessa mesma condicional (mesmo que a condição seja verdadeira) após finalizado esse tempo que se iniciou da primeira vez que entrou na condicional e executou o comando.

É um tipo de alarme. Preciso fazer isso para que ele dispare quando a variável assumir um valor, mas só volte a disparar após esse tempo, mesmo que a variável continue com o referido valor.

É importante que a medida que o temporizador conta o tempo o programa continue rodando normalmente.

Será que consegui explicar direito?

Agradeço quem puder ajudar.

Abraço a todos! Very Happy
avatar
rocborges

Mensagens : 4
Data de inscrição : 11/12/2012
Idade : 40
Localização : Vitória-ES

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Re: Ajuda com código de tempo

Mensagem  Admin em Ter 11 Dez - 16:51

Amigo eu li duas vezes mas fica difícil pra quem tá de fora entender dá pra postar o código mesmo que o mesmo não esteja funcionando para eu ter uma noção
avatar
Admin
Admin

Mensagens : 560
Data de inscrição : 07/04/2009
Idade : 36
Localização : Franca

Ver perfil do usuário http://projetoarduino.forum-livre.com

Voltar ao Topo Ir em baixo

Re: Ajuda com código de tempo

Mensagem  rocborges em Qua 12 Dez - 7:58

Olá Admin.

O código desse temporizador ainda não tenho escrito. Fiz um esboço que acho que pode ajudar.

Código:
int botao = 9; 
int alarme = 8;
int variaveltempo = 0;

void setup (){
 
  pinMode(alarme, OUTPUT);         
  pinMode(botao, INPUT);
  digitalWrite(alarme, LOW);
  digitalWrite(botao, HIGH);
 
}

void loop(){

  // aqui outras rotinas do programa
  // leitura e escrita na serial
  // leitura e escrita em pinos analógicos e digitais
  // etc... que devem continuar funcionando mesmo com o
  // temporizador contanto o tempo
 
  if(variaveltempo == 1){
    if(digitalRead(botao) == LOW){
      digitalWrite(alarme, HIGH);
      variaveltempo = 0;
      // aqui inicia a contagem do temporizador
      // configura um tempo
      // após esse tempo seta uma variável:
      // variaveltempo = 1;
    }
    else{
    digitalWrite(alarme, LOW);
    }
  } 
}

Nesse código, quando a entrada digital 9 é acionada o arduino joga HIGH na saída digital 8 e começa a contar um tempo. Se o tempo não atingir o final da contagem pré estabelecida o a entrada 9 pode ser acionada que não acionará a saída 8. A saída 8 só será novamente acionada se o temporizador acabar sua contagem e a entrada 9 for acionada.

Enquanto o temporizador conta o tempo o restante do programa dentro do loop continua rodando.

É isso.

Agradeço a ajuda.

Abraço!
avatar
rocborges

Mensagens : 4
Data de inscrição : 11/12/2012
Idade : 40
Localização : Vitória-ES

Ver perfil do usuário

Voltar ao Topo Ir em baixo

possível resposta

Mensagem  marcelgrando em Qua 19 Dez - 8:49

cara, sou hobista, mas estou lutando com uma arduino tb.
acho que a solução mais simples para você é uma "máquina de estado"
da uma olhadinha pelo "sr. google" sobre o funcionamento, mas no geral no loop vc fará
um verificador de estado tipo switch case; e no estado "alarme ligado" você coloca o verificador do tempo (millis() ou outra solução).
na verdade teria que esplorar os "estados" possíveis da máquina!!!

Boa Sorte!

marcelgrando

Mensagens : 1
Data de inscrição : 19/12/2012

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Re: Ajuda com código de tempo

Mensagem  rocborges em Qua 19 Dez - 9:01

Encontrei esse projeto que parece ser bem completo, mas tenho que tentar entender o código para ver se, com algumas modificações, serve para minha necessidade.

http://code.google.com/p/ebl-arduino/wiki/TimedEvent

Abraço a todos! Very Happy
avatar
rocborges

Mensagens : 4
Data de inscrição : 11/12/2012
Idade : 40
Localização : Vitória-ES

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Re: Ajuda com código de tempo

Mensagem  rocborges em Qua 19 Dez - 10:55

Olá a todos.

Como não tenho necessidade de precisão na contagem desse tempo a qual me referi nos posts anteriores, implementei uma contagem de tempo usando o próprio "scan" da função loop.

No final do loop tenho um delay de 1000ms (1 segundo), então cada loop leva um pouco mais de 1 segundo para acontecer. Como preciso de um temporizador de aproximadamente 5 minutos escrevi um código que verifica uma condição e se verdadeira incrementa uma variável e compara seu valor até chegar a 300.

Código:
if  (condição esperada){                    // Verifica validação do envio do SMS
    j++;                                                      // Incrementa variável de contagem de tempo
    // executa outros comandos;
    if (j == 300){                                        // Verifica se variável de contagem atingiu o tempo configurado
      // executa  comandos;
      j = 0;                                                  // Reseta variável de contagem de tempo
    }
}

É isso...

Abraço a todos! Very Happy
avatar
rocborges

Mensagens : 4
Data de inscrição : 11/12/2012
Idade : 40
Localização : Vitória-ES

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Re: Ajuda com código de tempo

Mensagem  Conteúdo patrocinado


Conteúdo patrocinado


Voltar ao Topo Ir em baixo

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo

- Tópicos similares

 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum