a logica e a seguinte

2 leds
3 botoes

acionamdo botao 1 1 led aceso por pulso e permanece ate apertar outro botao
acionando botao 2  liga led 1 e led 2
acionando botao 3 desliga os 2 leds
 so no pulso

alguem poderia me ajudar a encontrar uma solucao

ele nao esta atuando corretamente

Exibições: 394

As respostas para este tópico estão encerradas.

Respostas a este tópico

boa noite  cabana vê se esse codigo te ajuda

Anexos

olá Cabana.

      Apesar da implementação da Marcela,  irei também publicar uma outra abordagem para este seu problema.

      Pelo seu texto, parece que vc tem 3 estados "estacionários", ou seja,  sem  "comportamento sequencial". Em outras palavras:   acionando um Botão fica em um estado, e acionando outro Botão fica em outro estado, e assim com cada Botão.  Logo, um estado não depende do outro, nem da ordem de acionamento dos Botões.

      Assim, assumindo este comportamento do seu Sistema, implementei um código simples mas muito eficiente que realiza as operações que vc descreveu.

      Para o teste,  vc pode conferir também a simulação no Proteus, que estarei disponibilizando no final do post.

      Observe que vc disse existirem 2 LEDs e 3 Botões, mas no código que vc publicou, só aparece um LED e um Botão (pinos 5 e 8 do Arduino UNO).  Também não está tão claro como os LEDs e Botões estão ligados no Hardware, por isso assumi uma configuração, a qual vc pode alterar facilmente no código que implementei.

      Assim, o Hardware correspondente ao código que implementei, pode ser visto na figura a seguir:

(clique na figura para "zoom")

      Observe que liguei os LEDs aos pinos 5 e 6 do UNO, sendo estes acionados por nível "HIGH" no código.  A figura a seguir mostra esta configuração no código:

(clique na figura para "zoom")

      Assim, mude a configuração nas linhas de código mostradas na figura anterior, para que esteja de acordo com o seu Hardware de acionamento dos LEDs.

      Para os Botões,  me pareceu que vc ligou os mesmos para acionamento com nível "HIGH".  No entanto isto exige que vc coloque um Resistor de "pulldownpara cada Botão.

      Porém para não ser necessário colocar estes Resistores,  escolhi o acionamento dos Botões com nível "LOW",  conforme vc pode ver no circuito mostrado anteriormente.  Neste caso,  o código que implementei, aciona automaticamente  os Resistores de "pullup" internos do Arduino UNO, dispensando assim Resistores externos (só seriam necessários em ambientes muito ruidosos, mas com a adição também de outros componentes).

      Os pinos que escolhi para os Botões são o 2, 3, e 4,  mas vc pode mudar isso facilmente como mostrado nas linhas de código na figura a seguir:

(clique na figura para "zoom")

      Observe que o nível logico de acionamento dos Botões é "LOW", conforme mencionei antes.  Mude os pinos e o nível conforme seu Hardware.  Mudando ali naquelas linhas, o código irá configurar o pino automaticamente.

      Ainda sobre os Botões, há a questão do "anti-bouncing"  (ou "debouncing"),  que no seu código original, vc parece ter tentado usar 300 mili-segundos para tentar se livrar das famigeradas trepidações mecânicas quando se aciona ou desaciona os Botões.  Fiz a implementação do "debouncing"  de uma forma bastante eficiente, e vc pode configurar o "tempo de debouncing"  conforme a linha mostrada na figura a seguir:

(clique na figura para "zoom")

      Veja que deixei com 200 mili-segundos,  que normalmente é mais que suficiente para a grande maioria de Botões.  Mas altere conforme vc achar necessário.

      E caso o seu Sistema não seja "estático", mas sim "sequencial",  então apenas esclareça aqui como ele deve se comportar,  pois o código que implementei é facilmente ajustável para o comportamento sequencial (e ainda se mantendo simples).

      Segue o arquivo com o código implementado para o Arduino UNO,  juntamente também com os arquivos para simulação no Proteus:   UNO_2_LEDs_3_Botoes_02.zip

      Espero ter ajudado.

      Abrçs,

      Elcids

olá novamente Cabana.

      Eu já cismava que vc iria dizer sobre esta questão.  Ocorre que na sua descrição, vc não disse que o "LED 2" deveria estar apagado quando se aciona o "Botão 1".  Entenda:  parece bobagem,  mas esta descrição é muito importante.  Quando li seu texto descritivo, já imaginei:   mas e o LED 2 como deve ficar  quando se aciona o Botão 1 ?   Veja: a regra é seguir estritamente a descrição, por isso o LED 2 não teve influência no seu estado quando se aciona o Botão 1.

      Mas não se preocupe, o ajuste é muito simples, e já deixei pronto pois como eu disse, já imaginava que "naquele buraco tinha coelho".

      Este ajuste é acrescentar apenas uma única linha na função "loop", conforme vc pode ver na marcação que fiz em verde na figura a seguir:

(clique na figura para "zoom")

      O código com este ajuste é este:   UNO_2_LEDs_3_Botoes_03.zip

      Fique atento às descrições precisas, pois isto é bastante importante.

      Abrçs,

      Elcids

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço