Projeto 03: Como ligar um LED com um botão de pulso (push button) no Arduino? PARTE 1
Vložit
- čas přidán 27. 04. 2021
- Mais um projeto para nossa playlist Arduino sem a placa Arduino. Neste vídeo mostro como ligar um LED utilizando um push button, um tipo de botão que fecha curto se mativer o dedo pressionado nele. Mas não só isso! Explico como usar o botão para alternar entre ligar e desligar o LED pressionando e soltando o botão, ou ficar com o mesmo pressionado.
Para utilizar botão de pulso (push button) é importante conhecer a definição de resistor pull-down e pull-up. Tenho um vídeo nessa playlist onde você poderá saber mais sobre esse tipo de função dos resistores.
Assista o vídeo sobre Resistor Pull Up e Pull Down clicando no link • O que é resistor de pu...
Assista o vídeo sobre Efeito Bouncing clicando no link • Como tratar o efeito b...
Esse vídeo faz parte da nossa playlist Arduino sem a placa Arduino, vale a pena assistir • Aprenda Arduino sem o ...
Todos os projetos dessa playlist estão disponíveis em forma de Roteiro, passo-a-passo, no meu site www.sandroalex.info, passa lá e dá uma conferida!
No nosso canal / sandroalex temos diversos assuntos na área de TI, inscreva-se, assista os vídeos, curta, deixe seus comentários com dúvidas e/ou sugestões e compartilhe!
Qualquer dúvida e/ou sugestão escreva nos comentários que terei imenso prazer em responder.
Bons estudos!
Prof. Sandro Alex
www.sandroalex.info
/ sandroalex
/ sandroalex.info
/ sandro-alex-ferreira-7...
muito top a melhor aula do youtube
Muito obrigado @Sena Sen.
Parabéns pela explicação, ficou muito massa, ajudou em muito no meu projeto para ligar um relé
Que bom que ajudou
bom professor gostei muito das aulas bem explicada
Valeu @jaimecosta9402. Você chegou a ver a parte 2 czcams.com/video/8cma8RgWKSI/video.html ? Acho que vai curtir!
Show demais!
@ricardocesardasilvagomes9549 muito obrigado!
boa tarde adorei esse vedeo construi meu vibrador piscatorio
Valeu @caiolima6054
Otimo video gostei 👏👏👏 vou testa com fita led endereçável 😊
Show @franciscocosta3350
gostei muito de sua explicacao professor, sou eletricista e iniciante na parte de ARDUINO. trnho muita dificuldades de programação com textos, gosto mais em blocos apesar que tenho um pouco de dificuldade tambem...alguma dica? valeu um abraço
Olá @gpaeletrica3525! Fico feliz que tenha gostado da explicação. Para quem está começando e tem dificuldade com programação em texto, uma boa dica é usar ambientes de programação por blocos, como o Tinkercad ou o mBlock. Eles permitem criar programas para Arduino de maneira visual, facilitando o aprendizado.
Se tiver interesse em mais projetos com Arduino, confira nossa playlist completa: czcams.com/play/PLxMpHN3bl70nVn031tCSUPQXd-XuDkM6U.html . Um abraço e bons estudos!
Descobri seus canal agora... Mas é já fiquei Fã... Seguintdo e compartilhando ... Muita boa sua didática... Mas me tira uma dúvida estou fazendo um circuito com botões tipo um menu, mas quero evitar o bounce e tenho um ci 4093 minha dúvida é quanto ao capacitor eu preciso colocar um para cada botão sendo que não vou usar dois de uma vez... Tem que ser um para cada botão ou só um da para os quatro?...
Fala Alemar, tudo bem? Obrigado por ajudar o canal assistindo, se inscrevendo e compartilhando 😀. Ao colocar o capacitor você estará unindo ele a malha que tem o resistor e a chave mecânica, ou seja se colocar dois botões no mesmo capacitor você estará "pressionando" (fechando) o segundo botão também! Dá uma olha na malha como fica czcams.com/video/nc5pG4LtFPo/video.html. Sugiro analisar a necessidade do capacitor no seu projeto já que estará usando um CI que já é Schmitt Trigger e cada projeto é único tendo suas próprias necessidades.
voce explicando parace 1+1. execelente aula. Gostaria de saber a ligaçao de 2 leds com botoes diferentes pra acender. qual comando usar?
@marcosguilherme10 Muito obrigado :) Você pode duplicar o código e chamar as variáveis de botao1, botao2, led1, led2, etc.... Sugiro assistir a parte 2 (czcams.com/video/8cma8RgWKSI/video.html) que é a continuação deste tema pois lá eu explico como trabalhar com botões fazendo o tratamento do bouncing sem espera ocupada. Depois me fala se deu tudo certinho!
No "if (valorBotao) {" inicialmente era considerado if (valorBotao == 1) { quando apertava o botão mas com o uso do resistor interno de pullup, quando aperta o botão vai ser 0 e mesmo assim não foi aletrado no código.
Opa @leopestana2, sua dúvida é ótima! Obrigado por compartilhar conosco. O que acontece é que estamos avaliando o "pressionar" do botão e veja que inicialmente, logo após retirar o resistor, o LED já inicia ligado. Para resolver isso eu alterei o valor da variável que armazena o valor do LED para True, assim o código entende que o LED já inicia ligado e o desliga. Então, só depois do botão ser clicado (valorBotão) é que inicia o liga/desliga. Fiz isso para tentar manter a lógica do programa e deixar a variável que armazena o estado do botão guardando o valor real do "pressionamento" (que na realizada está invertida).
Sandro qual comando poderia realizar a tarefa de executar a função dos botões, tipo modo automático. A parti de se pressionar 2 botões ao mesmo tempo
@Thiago Santos como o microcontrolador do Arduino UNO é monoprocessado não é possível ter duas instruções sendo tratadas simultaneamente, sempre um será tratado primeiro que o outro. Claro que estou me referindo a microssegundos!!! Neste caso você pode definir, via código, o que quer tratar primeiro fazendo condicionais (if)
Muito bom, professor! Uma dúvida; teria como salvar o último estado do led? Por exemplo, se o arduino desligar com o led aceso, quando ligar novamente, o led voltar aceso, e se o arduino desligar com o led desligado o led retornar desligado. Teria como?
Olá @Adonay Kevyn dos Santos, obrigado por assistir o vídeo e por seu comentário. É possível sim, mas para isso é necessário armazenar tal informação em uma memória não volátil com alguma shield ou outro. As memórias embutidas no Arduino são voláteis e dependem de energia para manter os dados.
Olá!
Primeiramente parabéns pelo vídeo. Excelente explicação.
Eu fiz tudo certinho copiando exatamente o que você fez, mas, quando rodo a simulação, o LED fica aceso e não apaga nem apertando o botão. Como corrijo isso?
Desde já obrigado!
@antoniocarlosbarros8956 muito obrigado! No meu site tem o projeto completo descrevendo a montagem do circuito, o código do programa e o acesso para o site para executar e olhar o projeto no Tinkercad. Dá uma passada lá para analisar se pode te ajudar e me conta aqui depois se ajudou.
Hoooollll
😊
Boa tarde, minha duvida é a seguinte: Preciso fazer a leitura de nível com Sensor Ultrassônico JSN-SR04T mostrando no visor de um Display LCD (usando um botão de pulso; que ao pressionar e soltar ele liga a tela e faz a leitura do sensor passar um tempo ligada e em seguida apaga a tela permitindo fazer outra leitura). Consegui mim ajudar neste caso? Obrigado, no aguardo!
Olá Paulo (@musicasrelaxantes7786)! Para fazer a leitura de nível com o sensor ultrassônico JSN-SR04T e mostrar no visor de um Display LCD, você pode usar um botão de pulso para ligar a tela e fazer a leitura. Quando o botão é pressionado, a tela liga, faz a leitura do sensor e, após um tempo, desliga a tela. Para mais projetos interessantes com Arduino, confira nossa playlist completa: czcams.com/play/PLxMpHN3bl70nVn031tCSUPQXd-XuDkM6U.html
Sandro. Tentei montar um circuito de led ontem sem o resistor de 10K no botão e o led já fica aceso direto. Porém quando aperto o botão ele fica mais forte. Seria pq o arduino ta com sinal LoW e HiGh flutuando por não ter o resistor de 10k dando referencia de 0v?
olá @Wesley, obrigado por assistir o vídeo! Exato, o circuito ficou aberto e por ser digital a entrada fica flutuando entre 0 e 1, por isso a intensidade menor de luminosidade. Quando você pressiona o botão, o 5V vai para a entrada ficando o 1 digital "constante", logo a intensidade de luminosidade fica maior.
Bom dia Professor, estou com um controle de portao eletronico, em um projeto eu fechei um curto no botao de acionamento para eu controla a abertura na energia mas ao funciona, o botao fica ligado direto apenas uma vez ao corta a energia ele retoma a energia ele nao liga a placa pois deveria pq esta sempre acionado, por que sera que nao funciona? sera que ao deixa ele sempre acionado ele corta a energia ele drena a energia dos capacitor e por isso nao liga ao religa a energia? sera que devo almenta a tensão de trabalho? e de 3v o controle
Olá @roneibernardo6162, me dá um pouco mais de detalhe sobre esse projeto pra ver se consigo te ajudar...
legal
como faço liga led pelo botao mais nao fica acesso e fica piscando direto igual acelene policia?
Opa @superlucas18fgamer, obrigado por assistir o vídeo e pela pergunta. Fiz um vídeo ensinando como fazer um LED pulsar, que é exatamente o seu objetivo. Dá uma olhadinha nesse vídeo em czcams.com/video/wh-oak_cAXs/video.html
E como faz pra usar os dois botões pra ligar e desligar o LED, não importando qual botão eu pressionar. Quero que os dois botões possam ligar e desligar o LED
Fala @Rogério, obrigado por assistir o vídeo. Deixa eu ver se entendi direito... Você quer que os dois botões façam exatamente a mesma coisa, ou seja os dois podem ligar e desligar o LED?
moço você pode mostrar como é em blocos pq assim eu não sei fazer
Obrigado por assistir o vídeo @Matheus Rocha e pela sugestão de vídeo, em breve sairá
Qual a resistência do resistor usado para o LED?
Opa Adilson Junior, estou usando um resistor com 220ohms de resistividade. Qualquer dúvida pode acessar meu site www.sandroalex.info ou diretamente neste projeto www.sandroalex.info/roteiros/projetos-arduino/3-led-com-bot%C3%A3o que deixo um tutorial escrito com todos os passos e materiais necessários.
Como isolo um botão on of de uma placa? E deixo pra ligar direto quando entrar corrente? Me ajuda por favor
@arturneto8482 no Arduino UNO já é assim, energizou ele já está funcionando
E constant e #define tem a mesma finalidade?
Olá @Wesley, obrigado por assistir o vídeo. Cara, #define é uma diretiva utilizada bastante em C para atribuir um nome a um valor constante antes do programa ser compilado. E a palavra chave const é um qualificador de variáveis que modifica o comportamento da variável, fazendo com que a variável seja de "apenas-leitura". No "final do dia" o resultado é o mesmo, porém a documentação de referência da Linguagem Arduino recomenda utilizar Const ao invés de #define.
Como faço pra quando eu pressionar o botão o led ficar piscando?
Olá @Anderson Krzjzaniack, obrigado por assistir o vídeo! Você pode alterar o primeiro código mostrado no vídeo colocando um condicional após a leitura do botão. Assim, caso o botão esteja pressionado você estipula um valor para uma variável contadora e fica alterando o valor do LED entre 0 e 1 sempre que "estourar" o valor estipulado. Lembrando que existem diversas possibilidades para fazer isso, essa é a magia da programação, essa foi a que de veio a minha cabeça agora. Vou arrumar um tempinho na agenda e tentar fazer esse projeto pra você e te falo.
Parabéns pelo material, mas, tentei fazer um outro projeto é não consegui, veja o projeto:
4 botões com 4 leds, onde cada botão acende seu respectivo led. Se acesso deverá permanecer por 4 segundos e apagar automaticamente.... preciso de ajuda
Obrigado @maxsonorizacaoinformatica8000. Interessante o seu projeto, em que parte está sua dúvida para eu tentar te ajudar.
Preciso ligar um semáforo com botão, botão sendo acionado ao atravessas da rua
O pedestre aciona é atravessa esse botão no arduino
@fabianamarques.oficial tenho uma playlist com diversos projetos em vídoeos, inclusive um com semáforo. czcams.com/play/PLxMpHN3bl70lBR-H9C9_DH5XoizeGPzk4.html&si=CAj4fSvK0YjwmuNb Lá também tem projetos com botões então fica tranquila para explorar e usar a imaginação :). Conseguindo posta aqui pra sabermos e, tendo dúvidas, não deixa de comentar.
Olá
Sou totalmente leiga no assunto mas gostaria de tirar uma dúvida
E possível criar um dispositivo ou um botão por exemplo que acende um luz de led ou algum tipo de luz sendo o dispositivo um botão que quando é acionado acende essa luz de alerta e ser sem fio
Sem fio usando a mesma tecnologia de controle remoto
Seria possível fazer ?
Quero fazer um projeto mais não sei o que eu posso utilizar para faze lo
Olá ana paula, obrigado por assistir o vídeo e por seu comentário. Sim é possível mas não apenas com a plaquinha Arduino UNO. Você terá de adquirir outros eletrônicos como o controle, receptor IR, etc. Tem muitos kits disponíveis no mercado que já trazem algumas peças para te permitir criar esse projeto. A dinâmica da programação é a mesma. Não sei se o CZcams vai remover, mas caso não remova veja esse link com algumas opções de kit lista.mercadolivre.com.br/kit-arduino
Boa tarde amigo!
Quero ver se pode me ajudar, quero ligar e desligar 12 LEDs cada um com seu botão (push Button)
É possível com um Arduino?
Apertar ele liga, aperta novamente ele desliga como o vídeo do amigo?
Obrigado desde já.
Ou até quantos LEDs posso fazer isso por Arduino
Obrigado por assistir o vídeo @Fabiano Rodrigues! Esta versão do Arduino que mostro no vídeo é o Uno R3 e nele temos apenas 13 pinos digitais. Como precisamos de 1 pino para o botão e 1 para o LED, tendo 12 LEDs e 12 botões precisamos de 24 pinos. Recomendo assistir o início deste vídeo (czcams.com/video/9ASuFutufGk/video.html), onde mostro outras versões do Arduino e, também, verificar as Shields Arduino que permitem expansão da placa.
@@SandroAlex Obrigado amigo, daí é só ir copiando o código e alterando os pinos ?
Exato @Fabiano, só atente para o tratamento do bouncing se fará via software ou hardware. Lembre também que o código pode ser alterado para o que for melhor para seu cenário. Depois me diz como ficou tudo.
@@SandroAlex Blz
Obrigado meu amigo, vou tentar aqui.
Perdão por não mim apresentar, sou Paulo!
Olá Paulo! Prazer em conhecê-lo! Obrigado por acompanhar!
para que serve o resistor do push button?
Opa Tiago, excelente pergunta! Obrigado por assistir o vídeo e por seu comentário. Eu fiz um vídeo explicando o que são resistores de pull down e pull up, recomendo dar uma assistida czcams.com/video/jSnQTL9uoME/video.html mas basicamente é impedir que o circuito fique aberto. Dá uma assistida no vídeo que te falei que tem uma animação que vai dar pra entender melhor
@@SandroAlex muito obrigado
Beleza, mas tem como desligar o led FÍSICO do arduino ?
Por exemplo o led de (On) e os Demais leds que ficam piscando ?
Eu to tentando fazer isso pro código, mas não sei exatamente como, se tiver como, agradeço.
Obrigado
Olá @Guilio013, obrigado por assistir o vídeo! Cara o LED que está fisicamente acoplado na placa Arduino Uno está conectado no pino 13, então tudo que for manipulado em tal pino será "sentido" por tal LED. Quando você diz que todos os demais leds ficam piscando, você se refere a que?
@@SandroAlex me refiro aos leds "L" , "RX" , "TX" E o "On" são os 4 leds da placa Arduino Uno, que ativam com a programação "blink" pré definida
@Giulio013, de acordo com o diagrama esquemático do projeto Arduino (docs.arduino.cc/static/c1593a4c4960ff7b51d1083cb8e45812/schematics.pdf) todos os leds onboard estão em pull-up, ou seja recebendo 1 e, por tanto, vão ligar por padrão. Existem algumas coisas possíveis, umas mais tranquilas e outras mais por conta e risco. Caso não esteja usando os pinos que estão associados a tais leds, no UNO seriam os pinos 13 (L), 0 (TX), 1 (RX), você deve configura-los como saída (OUTPUT) no setup. Para o led ON não temos um pino associado e o mesmo serve para informar visualmente que a placa está ligada. Agora, se quiser o método hard por sua conta e risco, é possível remover tais leds com um ferro de solda mas lembre que os danificará no processo.
@@SandroAlex
Primeiramente, muito obrigado pela ajuda, eu tentei acessar agora o link que você me enviou, mas Infelizmente ele está quebrado ou fora do ar. :/
Vou tentar desativar pelo modo "Simples"
Todos os Leds que eu conseguir...
Uma Dúvida besta aqui...
Será que dá problema na placa colocar fita isolante líquida em cima do Led de "ON" para isolar a luz ?
Muito obrigado pela ajuda e pela disposição em compartilhar seu conhecimento =)
@Giuli013, mudaram o link, obrigado por avisar... agora está em docs.arduino.cc/static/c1593a4c4960ff7b51d1083cb8e45812/schematics.pdf
Como fazer esse led piscar enquanto estiver ligado? Tal como um pisca-pisca. Não consigo por nada
Olá @limajenny, para que o LED pisque é necessário manter ele apagado durante um tempo e acesso durante o mesmo tempo. Só utilizando o código deste vídeo não é interessante pois você entraria no que chamamos de espera ocupada. Sugiro usar a função milis() que mostro na parte 2 desse vídeo (czcams.com/video/8cma8RgWKSI/video.html) como ideia para seu pisca-pisca.
@@SandroAlex Muito obrigada. Irei tentar.
@@jennylimao Qualquer coisa me diz
@@SandroAlex deixei uma msg aqui mas acho que o youtube bloqueoou por ter um link.
@@jennylimao não apareceu link, provavelmente ele bloqueou mesmo. Tem link que ele deixa e outros não. O seu foi de qual site?
Professor tenho uma dúvida no funcionamento desse loop, pois já consegui fazer aqui mas o raciocínio ainda não entra na minha cabeça:
valorBotao=digitalRead(btn); // aqui quando iniciar vai pegar o 1
if(valorBotao != valorBotaoAnterior){ //aqui vai verificar e ver que 1 é diferente de 0 e então vai para o outro if
if(valorBotao==1){ // aqui vai verificar que o botão é 1 e então deve tornar o ledLigado em TRUE(1)
ledLigado= !ledLigado;
digitalWrite(led,ledLigado);
}
valorBotaoAnterior=valorBotao; ***** //MINHA DÚVIDA É AQUI, pois o valor do botão anterior irá ser 1 agora, e o programa entrara no loop denovo, e ao clicar novamente no botão o digitalRead irá ler 1(HIGH) e dai quando entrar no primeiro if o valor do botão não será igual ao valor do botão anterior (1) que foi determinado no comando valorBotaoAnterior=valorBotao; ???
Ou ao iniciar o loop o valor irá voltar para 0?
Por favor, me ajude, estou quebrando a cabeça com isso e não entra na minha cabeça.
delay(10);
@jadersoares3659 excelente dúvida! Observe que o valorBotaoAnterior recebe o valorBotao e ambos terão o valor 1 realmente. Mas veja que ao retornar o loop valorBotao já receberá o valor 0 pois o botão não estará pressionado. Assim, os valores de valorBotao (0) e valorBotaoAnterior (1) serão diferentes e entrará no primeiro if mas não no segundo!!! Depois valorBotaoAnterior receberá o valor de valorBotao e ambos ficarão com 0. Nas próximas iterações do loop não entrará nem no primeiro if, conseguiu sacar?
@@SandroAlex Olá Professor, obrigado por responder a dúvida, consegui notar isso, assisti alguns outros vídeos também e utilizei o Serial.begin(9600); juntamente com o Serial.println(valorBotao) e Serial.println(valorBotaoAnterior) para conseguir observar o que estava acontecendo, muito legal, estou encantado com o Arduino, ontem tive problemas com o Botão mesmo, a peça no caso, e percebi que é normal mesmo acontecer problemas de contato e acabei conseguindo resolver.
Obrigado por seus vídeos, finalmente entendi e compreendi a lógica por trás desse comando do botão interruptor.
Um grande abraço Professor.