Ajuda com código de tempo
3 participantes
Página 1 de 1
Ajuda com código de tempo
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!
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!
rocborges- Mensagens : 4
Data de inscrição : 11/12/2012
Idade : 47
Localização : Vitória-ES
Re: Ajuda com código de tempo
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
Re: Ajuda com código de tempo
Olá Admin.
O código desse temporizador ainda não tenho escrito. Fiz um esboço que acho que pode ajudar.
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!
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!
rocborges- Mensagens : 4
Data de inscrição : 11/12/2012
Idade : 47
Localização : Vitória-ES
possível resposta
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!
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
Re: Ajuda com código de tempo
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!
http://code.google.com/p/ebl-arduino/wiki/TimedEvent
Abraço a todos!
rocborges- Mensagens : 4
Data de inscrição : 11/12/2012
Idade : 47
Localização : Vitória-ES
Re: Ajuda com código de tempo
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.
É isso...
Abraço 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!
rocborges- Mensagens : 4
Data de inscrição : 11/12/2012
Idade : 47
Localização : Vitória-ES
Tópicos semelhantes
» Ajuda na programação de um robô
» Receber uma mensagem e acionar um dispositivo com o celular ( sim900/908 )
» SIM908 GPS GSM GPRS
» ajuda com app inventor
» Ajuda com a programação para tcc no arduino uno
» Receber uma mensagem e acionar um dispositivo com o celular ( sim900/908 )
» SIM908 GPS GSM GPRS
» ajuda com app inventor
» Ajuda com a programação para tcc no arduino uno
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos