Olá pra todos.

Acabo de chegar nesse fantástico fórum..e também com um fantástico problema com programação no Arduino.Digo fantástico problema porque sou iniciante em Arduino...mas para a maioria aqui será um problema ridículo...fácil de resolver...por isso lanço meu problema e conto com a ajuda da comunidade:

Primeiro: Aciono uma entrada.

Segundo: se essa entrada ficar acionada por mais de 10 segundos, uma saída é acionada de forma intermitente.(um LED piscando, por exemplo)

Terceiro: Se o acionamento da entrada permanecer por mais de 20 segundos, a saída que estava intermitente fica contínua. (o LED que piscava fica acesso).

Quarto: A qualquer momento que a entrada for desacionada, minha saída volta a nível zero (LED apaga).

Parece fácil...mas pra mim não está sendo...já perdi várias horas horas tentando simular o funcionamento com while...swith case...if e else..mas até agora nada.

Algum bom Samaritano ou Programador pra me ajudar?

Ouvi dizer que aqui tem muitos feras em Arduino...

Abração e obrigado pessoal!!!!

Exibições: 481

Responder esta

Respostas a este tópico

http://arduino.cc/en/Reference/Millis

basta usar o comando millis (leia a postagem)

se millis() > 10000 faça....

senao  se millis() > 20000 faça....

Já o ponto 4 nao faz sentido

Obrigado pela ajuda Matheus.

O quarto ponto é o seguinte:

Suponha que um alarme dispare depois de um determinado tempo...após o disparo (que foi acidental), você "reseta" o alarme...mas obrigatoriamente pelo mesmo canal em que o alarme foi acionado.

Valeu pelas dicas, vou tentar sua sugestão e depois te falo.

Abração

Bem vindo ao LDG

Eu recomendo que você estude e teste os tutoriais do arduino, vai encontrar eles em http://arduino.cc/en/Tutorial/HomePage

Lá tem explicado o que você quer fazer, saídas digitais, entradas digitais, temporização, e mais uma porrada de coisas.

A referência das funções também é um link importante (se não obrigatório), http://arduino.cc/en/Reference/HomePage

Agora, pra poder te ajudar é necessário olhar o seu código.

Happy hack ;)

Valeu pelas dicas Daniel.

Vou estudar o que você recomendou e assim que eu tiver mais informações tentarei novamente fazer meu programa.

Caso você queira e também possa me ajudar, tente fazer um programa conforme eu descrevi no algoritmo, não importa a entrada e saída que usará...eu estudo seu programa e adequo a minha necessidade.

Abração e assim que eu conseguir algo eu retorno.

Valeu!!!!

Boa noite, segue abaixo um código simples que provavelmente atende sua necessidade. Um abraço.

void setup()
{
  pinMode(13, OUTPUT);
  pinMode(10, INPUT);
}

void loop()
{
  int vLoop = 0;
  digitalWrite(13,LOW);
  while (digitalRead(10)==HIGH)
  {
    delay(1000);
    vLoop++;
    if (vLoop >= 10 && vLoop < 20)
    {
      digitalWrite(13,!digitalRead(13));
    }
    else if (vLoop >= 20)
    {
      digitalWrite(13,HIGH);
    }
    else
    {
     digitalWrite(13,LOW);
    }
  }
}

Perfeito Ismael!!!!

Muito obrigado pela disposição em me ajudar.

Ví que estou no lugar certo...boas pessoas com certeza.

Vou estudar o código e aprender mais um pouco..esse "vLoop" eu nem sabia que existia...heheheeh

Abração e muito sucesso meu caro!!!!

Esse"vLoop" é uma variável que ele declarou e poderia ter qualquer outro nome tipo:

int  PowerRanger=0; /*declarada uma variável do tipo inteira com o valor igual a zero*\

Estude mais sobre variáveis e você verá que existe muitas outras e cada uma tem fui função na programação. 

Valeu cara.

Obrigado pelo esclarecimento.

Abração

Boa tarde Ismael.

Testei o código que você propôs...mas não funcionou muito bem...o Arduino acaba tendo uns acionamentos involuntários (como ruído)... e também quando a entrada é acionada por alguns segundos...o Arduino faz parte do acionamento...não respeitando o algoritmo do seu código...que parece perfeito..

O que pode ser Ismael e comunidade?

O acionamento é por um botão certo? Ele tem um resistor de pull down? Se é acionado por botão também seria conveniente escrever um delay no código para a prevenção de bounce.

Link abaixo, simulando o Sketch do Ismael, parece que é isso mesmo, só copiar e colar, depois estudar o porque.

https://www.youtube.com/watch?v=c2LPqzxm4-I&feature=youtu.be

Abraço.

Sem palavras!!!!

Muitíssimo obrigado pela ajuda Carlos.

Agora é só estudar o código e aprender mais.

Abração e muito sucesso!!!!

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço