Estou tendo dificuldade em desenvolver a seguinte lógica no arduino.....RESOLVIDO....

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?

Exibições: 793

Responder esta

Respostas a este tópico

Oi SGF, boa tarde.

como você mesmo disse, você é novo em programação.

Então que tal tentar escrever este código você mesmo, e postar aqui o que você conseguir 

(mesmo que não funcione) aqui,para que possamos então indicar o que pode ser corrigido/melhorado.?

Pense em uma solução bem simples, usando if, or e delay, assim:  

Se a portaU ou a portaV ou a portaW ou a portaX ou a portaY ou a portaZ for HIGH,

ponha a portaK em HIGH por 1seg

Rui

Ola Rui Viana, boa tarde e muito obrigado por responder.Eu fiz o codigo mas não funcionou, ja pesquisei bastante a solução pra isso mais não achei e sei que tenho que estudar mais programação tambem, no entanto vou por aqui para voce dar uma olhada.Eu apaguei o codigo vou refazer...

Ola Rui esta ai o codigo, mas acho que também não lhe expliquei bem porque nas entradas não são pulsos, são 5 volts direto e então quero na saida só um pulso de 1s por exemplo, a cada momento que receber nivel alto em qualquer entrada a qualeur hora, quero um pulso de 1s na saida. Nesse caso a saida fica ligado direto...

const int entrada0 = 2; 
const int entrada1 = 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 estadoentrada0 = 0; 
int estadoentrada1 = 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(entrada0, INPUT); 
pinMode(entrada1, INPUT);
pinMode(entrada2, INPUT);
pinMode(entrada3, INPUT);
pinMode(entrada4, INPUT);
pinMode(entrada5, INPUT);
pinMode(entrada6, INPUT);
pinMode(entrada7, INPUT);

}

void loop() {

estadoentrada0 = digitalRead( entrada0 ); 
estadoentrada1 = digitalRead( entrada1 );
estadoentrada2 = digitalRead( entrada2 );
estadoentrada3 = digitalRead( entrada3 );
estadoentrada4 = digitalRead( entrada4 );
estadoentrada5 = digitalRead( entrada5 );
estadoentrada6 = digitalRead( entrada6 );
estadoentrada7 = digitalRead( entrada7 );

if (estadoentrada0 || estadoentrada1 || estadoentrada2 || estadoentrada3 || estadoentrada4 || estadoentrada5 || estadoentrada6 || estadoentrada7 == HIGH)


digitalWrite (saida0,HIGH);

delay(1000);


digitalWrite (saida0,LOW);

}

Muito obrigado pela atenção

vc nao esta colocando {} (chaves) no if...

const int entrada0 = 2; 
const int entrada1 = 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 estadoentrada0 = 0; 
int estadoentrada1 = 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(entrada0, INPUT); 
pinMode(entrada1, INPUT);
pinMode(entrada2, INPUT);
pinMode(entrada3, INPUT);
pinMode(entrada4, INPUT);
pinMode(entrada5, INPUT);
pinMode(entrada6, INPUT);
pinMode(entrada7, INPUT);

}

void loop() {

estadoentrada0 = digitalRead( entrada0 ); 
estadoentrada1 = digitalRead( entrada1 );
estadoentrada2 = digitalRead( entrada2 );
estadoentrada3 = digitalRead( entrada3 );
estadoentrada4 = digitalRead( entrada4 );
estadoentrada5 = digitalRead( entrada5 );
estadoentrada6 = digitalRead( entrada6 );
estadoentrada7 = digitalRead( entrada7 );

if (estadoentrada0 || estadoentrada1 || estadoentrada2 || estadoentrada3 || estadoentrada4 || estadoentrada5 || estadoentrada6 || estadoentrada7 == HIGH) { //faltou este abre chave


digitalWrite (saida0,HIGH);

delay(1000);


digitalWrite (saida0,LOW);

} // faltou este fecha chave

}

Ola Flavio, obrigado pela dica mas não resolveu, a saida deu nivel alto mais não cumpriu o desligamento depois de 1 segundo, continuou em alto sem desligar e neste caso preciso só de um pulso

Ola Carlos kwiek muito obrigado pela dica valeu, aprendi muita coisa no site do arduino mas não consegui resolver meu problema.

Olá Sanilo, dei uma olhada rápida no seu código, posso te dar uma sugestão, faça um teste, na estutura decisão, substitua por isso:

if (estadoentrada0 == HIGH || estadoentrada1 == HIGH || estadoentrada2 == HIGH || estadoentrada3 == HIGH || estadoentrada4 == HIGH || estadoentrada5 == HIGH || estadoentrada6 == HIGH || estadoentrada7 == HIGH)


A impressão que tive é que do jeito que estava, testava apenas a ultima entrada (estadoentrada7), pois apenas ela estava com == HIGH no final...

Depois diga se funcionou.

Abraço

Ola Leir muito obrigado pela sua dica mais não funcionou, não tive nenhum pulso na saida, somente sinal alto continuo.

Oi SGF, bom dia.

pela sua explicação atual, o que estou entendendo agora é o seguinte:

Cada vez que uma entrada fica HIGH, deverá acontecer um pulso de 1 segundo na saída,

e depois a saída fica LOW novamente.

1a dúvida. Se a entrada X fica HIGH, e antes de 1 segundo a entrada Y também fica HIGH, como deve ser o pulso na saída.   Somente 1 seg ou 1seg + diferenca ente HIGH de Y - HIGH de X?

Correto?

2a. dúvida: São seis ou oito entradas?  Pois no seu code tem 8 entradas configuradas.

Vou escrever a logica e posto aqui para você escrever o código.

E  então se seu código não funcionar, depois você posta o aqui verificamos o que deve ser corrigido. OK?

Rui

Bom dia Rui, isso mesmo, cada vez que qualquer uma das entradas fica nivel logico alto quero um pulso na saida.

Sobre a primeira dúvida, para o que estou tentando fazer isso não vai acontecer e se por acaso acontecer pode-se somar 2 segundos se acontecer

Sobre a segunda dúvida são 8 entradas e uma saída

Muito obrigado

Como está montando o hardware, pode postar para gente? uma foto talvez

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço