Sou novo em programação e gostaria de desenvolver em codigo a seguinte lógica...por exemplo:
Tenho 6 entradas e 1 saida no arduino, então gostaria de programa-lo para a seguinte tarefa: quando em qualquer entrada tiver nivel alto independentemente da sequencia das entradas, terei um pulso de 1 segundo na saida...alguém sabe a solução para isso?
Tags:
Oi SGF,
escrevi este code para vc testar.
Ele não é o ideal mas funciona e serve para vc aperfeiçoa-lo.
Rui
Olá Rui Viana muito obrigado era mais ou menos isso que queria, não estava conseguindo porque não sabia como setar esses comandos como o contador e também funçoes como void Pulse(), ainda não tinha visto isso, tento aprender quase tudo sozinho. Preciso dessa lógica para acionar um CI de gravação de voz que é o ISD1820 para reproduzir um determinado som quando um nivel lógico de entrada esta alto, ai então é que eu uso o pulso de saida para ativar-lo e assim reproduzir o som, tipo...um CI vai "dizer" "Sistema ligado" e outro "Sistema desligado", ainda estou estudando programação vou tentar entender esse seu código.
Muito Obrigado mesmo
SGF, este código temo seguinte problema:
Exemplo:
Se o nivel na Porta 2, 3, etc. ficar HIGH, quando chegar no final da rotina, ele vai disparar o Pulso e aguardar por um Segundo.
Neste ínterim, se uma porta de numero mais baixo ficar HIGH, por menos de 1 segundo, ele não vai perceber.
Entendeu?
Se for usado para proteção, tenha muito cuidado ao fazer a solução, e teste exaustivamente para que tenha certeza que não haverá possibilidade de falhas.
Rui
Rui, acho que entendi, mas acredito que não vai ter problema porque meu hardware que estou tentando desenvolver não vai dar pulsos com menos de 1 segundo. Mas ainda tenho que entender melhor esse seu código.
Muito legal, ainda estou comprando os componentes ja tenho um monte deles. Estou projetando no Eagle cad. Basicamente é uma placa eletrônica para controle residencial a distancia por meio de um celular, nessa parte da programação que não conseguia resolver serve para ativar os CI's ISD1820 para enviar o audio via celular, a cada tecla do celular corresponde a um relay, por exemplo aperto na tecla 1, liga o relay, aperto novamente desliga o relay e então a cada vez que teclo um número recebo uma mensagem de "sistema ligado ou sistema desligado", ainda estou a espera de todos os componentes
Obrigado Rui
Olá Rui Viana boa tarde, seu codigo está funcionando como esperado mas gostaria de entede-lo melhor.
Podes me explicar o que faz o comando boolean "Flag_BOT1; " " void Pulse() "e no caso do contador ele está ali para contar 1s e desligar o led certo, porque o contator é igual a zero? E essa condição
if (Contador >0) // Se o Contador é maior que 0
Pulse();
o que significa?
Obrigado
O seu problema não é de logica do código, apesar dos erros apontados pelos colegas estarem certos, o problema é que você não esta colocando um resistor de pull donw nas entradas, vou subir um vídeo, segue código.
const int entrada8 = 2;
const int entrada9 = 3;
const int entrada2 = 4;
const int entrada3 = 5;
const int entrada4 = 6;
const int entrada5 = 7;
const int entrada6 = 8;
const int entrada7 = 9;
const int saida0 = 13;
int estadoentrada8 = 0;
int estadoentrada9 = 0;
int estadoentrada2 = 0;
int estadoentrada3 = 0;
int estadoentrada4 = 0;
int estadoentrada5 = 0;
int estadoentrada6 = 0;
int estadoentrada7 = 0;
void setup() {
pinMode(saida0, OUTPUT);
pinMode(entrada8, INPUT);
pinMode(entrada9, INPUT);
pinMode(entrada2, INPUT);
pinMode(entrada3, INPUT);
pinMode(entrada4, INPUT);
pinMode(entrada5, INPUT);
pinMode(entrada6, INPUT);
pinMode(entrada7, INPUT);
}
void loop() {
estadoentrada8 = digitalRead( entrada8 );
estadoentrada9 = digitalRead( entrada9 );
estadoentrada2 = digitalRead( entrada2 );
estadoentrada3 = digitalRead( entrada3 );
estadoentrada4 = digitalRead( entrada4 );
estadoentrada5 = digitalRead( entrada5 );
estadoentrada6 = digitalRead( entrada6 );
estadoentrada7 = digitalRead( entrada7 );
if (estadoentrada8 || estadoentrada9 || estadoentrada2 || estadoentrada3 || estadoentrada4 || estadoentrada5 || estadoentrada6 || estadoentrada7 == HIGH)
{
// do Thing A
digitalWrite (saida0,HIGH);
delay (1000);
}
else if (estadoentrada8 || estadoentrada9 || estadoentrada2 || estadoentrada3 || estadoentrada4 || estadoentrada5 || estadoentrada6 || estadoentrada7 == LOW)
{
// do Thing B
digitalWrite (saida0,LOW);
}
}
Olá Carlos vou testar com os resistores de pulldown mas nesse seu video a simulação não iria dar certo porque eu não tenho um pulso na entrada e sim nivel lógico alto continuo em qualquer entrada e então preciso de um pulso na saída. O código que o Rui Viana me forneceu Funcionou e fez mais ou menos o que eu esperava.
Obrigado pela atenção
Agora entendi o que pretende, ok.
Abs.
Veja se este atende:
const int entrada8 = 2;
const int entrada9 = 3;
const int entrada2 = 4;
const int entrada3 = 5;
const int entrada4 = 6;
const int entrada5 = 7;
const int entrada6 = 8;
const int entrada7 = 9;
const int saida0 = 13;
int estadoentrada8 = 0;
int estadoentrada9 = 0;
int estadoentrada2 = 0;
int estadoentrada3 = 0;
int estadoentrada4 = 0;
int estadoentrada5 = 0;
int estadoentrada6 = 0;
int estadoentrada7 = 0;
byte comando;
void setup() {
pinMode(saida0, OUTPUT);
pinMode(entrada8, INPUT);
pinMode(entrada9, INPUT);
pinMode(entrada2, INPUT);
pinMode(entrada3, INPUT);
pinMode(entrada4, INPUT);
pinMode(entrada5, INPUT);
pinMode(entrada6, INPUT);
pinMode(entrada7, INPUT);
}
void loop() {
estadoentrada8 = digitalRead( entrada8 );
estadoentrada9 = digitalRead( entrada9 );
estadoentrada2 = digitalRead( entrada2 );
estadoentrada3 = digitalRead( entrada3 );
estadoentrada4 = digitalRead( entrada4 );
estadoentrada5 = digitalRead( entrada5 );
estadoentrada6 = digitalRead( entrada6 );
estadoentrada7 = digitalRead( entrada7 );
if (estadoentrada8 || estadoentrada9 || estadoentrada2 || estadoentrada3 || estadoentrada4 || estadoentrada5 || estadoentrada6 || estadoentrada7 == HIGH)
{comando=0;}
switch(comando)
{
case 0:
digitalWrite (saida0,HIGH);
delay (1000);
digitalWrite (saida0,LOW);
break;
}
}
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por