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