Olá pessoal !!
Desde já muito obg pelo interesse e tempo de quem puder ajudar, desejo um excelente ano a todos…

Vamos lá… tenho trabalhado em um exercício que venho modificado a caráter de estudo e aprendizado, até o momento havia conseguido realizar e ter sucesso em todos os experimentos, até que desta vez travei…

1º Trata-se de um CKT que aciona saída por meio da leitura de teclas pressionadas, são três teclas e três saídas;

2º Mantem a saída acionada enquanto o pushbotton referente estiver pressionado, ao soltar esse botão a saída deve ser desligada.

Obs.: até o passo dois tudo certo, a questão é que não consigo transformar o pensamento abaixo em forma de linhas de código.

1º Se eu pressionar a tecla “Botao1Relay_A” o arduino deve acionar a saída “OUT1Relay_A” mantendo-a acionada enquanto o botão estiver pressionado e impedir que as outras duas teclas ( Botao2Relay_A, Botao3Relay_A ) acionem suas saídas.
2º Resumindo de uma forma simples, o primeiro botão a ser pressionado tem preferencia sobre os outros dois.

Uma grande dificuldade é poder me fazer claro, mais uma vez agradeço a oportunidade de um canal como esse em facilitar o aprendizado através da aproximação de pessoas, quem puder clarear minha mente nessa situação já deixo meu muito obg…

---

Exibições: 158

Anexos

Responder esta

Respostas a este tópico

Olá Allan Freitas Teixeira, tudo bem?

Antes de mais nada, recomendo remover o seu código da postagem, a anexa-lo em um .ino.

Ok....

desculpe.

Olá Allan Freitas Teixeira

Veja, quando você estiver desenvolvendo o seu código, tente faze-lo da forma mais simples possível.

Modelo simples com comentários: Chaveamento_RV03_V1.ino

Modelo com redução de código: Chaveamento_RV03_V2.ino

Modelo com mais redução de código: Chaveamento_RV03_V3.ino

modelo com mais redução ainda de código: Chaveamento_RV03_V4.ino

Não testei nenhum dos 4, mas acredito que todos funcionem. Estou apenas com dúvidas em relação ao V4, mas deve funcionar.

Allan, caso o problema tenha sido solucionado, e você não tenha mais nenhum questionamento sobre o assunto do seu tópico, por favor, edite o tópico e coloque o " [resolvido] " na frente.

Oi Tiago...

agradeço muito teu auxilio desde o inicio do meu tópico... sim, testei tuas alterações e vou atentar mais para o desenvolvimento, pois teu código é bem mais limpo e simples, obg por isso.

Sobre o problema que levantei com esse tópico esta em partes resolvido, mas continuo com duvida sobre a estrutura.

    A solução que tu disponibilizou funciona no "Bot1" e eu mantenho ele pressionado os botões "Bot2" e "Bot3" ficam impedidos de acionar as suas saídas. Agora se eu partir apertando o "Bot2" quero que da mesma forma anterior ele impeça o funcionamento do "Bot1" e "Bot3", e consequentemente se eu partir apertando o "Bot3" ele impeça o funcionamento do "Bot1" e "Bot2".

    Eu trabalhei em cima do teu código e não tive sucesso, antes mesmo de pedir ajuda ao forum, estava a duas semanas atrás de algum texto ou dica que me fizesse entender, mas todas as alteração que consegui foram fazer apenas o botão 1 funcionar como tu fez, mas não consigo fazer os três funcionarem da forma que expliquei logo acima.

    Espero ter podido me fazer claro, eu gostaria mesmo de entender a logica de como usar i "if" / "else" nesse problema que levantei.

desde já muito obrigado até aki...

Allan Freitas Teixeira

Se possível, apresente as lógicas que você tentou.

Olá... um feliz ano novo pra ti.!

    Deixei a modificação que fiz no teu código em anexo, tentei muitas, mas analisando elas não são tão diferentes, pois na simulação o resultado sempre fica muito parecido... como disse quero entender, e parando um pouco para refletir acredito que as logicas seriam assim.:

Botão1 -->

1º Se for pressionado verifica os outros dois botões 

2º Se os outros dois estiverem em HIHG aciona saída Relay1 enquanto Botão1 estiver pressionado e impede que os Botões2 e Botão3 funcionem

Botão2 -->

1º Se for pressionado verifica os outros dois botões 

2º Se os outros dois estiverem em HIHG aciona saída Relay2 enquanto Botão2 estiver pressionado e impede que os Botões1 e Botão3 funcionem

Botão3 -->

1º Se for pressionado verifica os outros dois botões 

2º Se os outros dois estiverem em HIHG aciona saída Relay13enquanto Botão3 estiver pressionado e impede que os Botões1 e Botão2 funcionem

    Ou seja, me parece simples solucionar o problema de forma mental, mas quando tento transcrever isso acima para linhas de código é que encontro dificuldade.

Anexos

Olá, Allan!

   Em anexo um "pseudo-código" da abordagem que eu uso para resolver este tipo de situação.

   Este:               ButtonLogic.c

   Talvez possa ajudar.

   buttonsState é uma variável booleana.

   ALL_RELEASED e NOT_PRESSED você deve definir conforme o hardware/software determinam.

Sorte e Sucesso!

D. T. Ribeiro,

Olá...

Muito obg pela atenção, vou estudar e tentar aplicar isso então... um ótimo ano.

Meu querido.. obg pela ajuda, passei analisando tua forma de pensar sobre o problema, estou buscando material sobre tua abordagem... não consegui um código ainda funcional, mas estou tentando seguir também tua ideia. obg..!

Não testei, mas deve funcionar.

Chaveamento_RV03_V5.ino

Olá...

    Só para dar um retorno, esse seu não funciona...

Apenas liga e desliga a saída referente ao botão 1, o restante fica inativo.. ainda estou tentando fazer alterações em cima da tua logica, como disse a intenção é aprender... mas fazer três teclas funcionarem como quero esta bem complicado, igual vou continuar tentando; contudo estou muito agradecido pela ajuda dos senhores.... creio que uma hora se resolva, muito obg..!

RSS

© 2023   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço