Você está na página 1de 3

Título: Uso de botões de pressão em circuitos microcontrolados para ligar e desligar LED

Versão: 02

Data: 22-03-2023

#define botaoliga 2

#define botaodesliga 3

#define LED 8

boolean lastliga;

boolean lastdesliga;

boolean lastjuntos;

void setup(){

pinMode(botaoliga, INPUT_PULLUP); /*A porta do botão de ligar é uma porta de entrada do


tipo PULLUP (que aciona os resistores internos do microcontrolador)*/

pinMode(botaodesliga, INPUT_PULLUP); /* A porta do botão de desligar é uma porta de


entrada do tipo PULLUP (que aciona os resistores internos do microcontrolador)*/

pinMode(LED, OUTPUT); //A porta do LED é de saída, já que vai emitir luz

digitalWrite (LED, 0); }//Com isso, o led inicia desligado, já que 0 é 0V

void loop() //Executa o programa em loop até que alguém mude o código dentro do
microcontrolador

if (digitalRead (botaoliga) != lastliga) {

delay (20); //garante que garante a estabilidade do sinal

lastliga = digitalRead (botaoliga);} //muda o estado de lastliga para 5V (1)

if (!digitalRead (botaoliga)) {

//Se clicar no botão de ligar...

digitalWrite (LED, 1); } //...Ele vai colocar 1 (5V) na porta do led e liga-lo

if (digitalRead (botaodesliga) != lastdesliga) {

delay (20);

lastdesliga = digitalRead (botaodesliga); } //muda o estado de lastdesliga para 0V (0)

if (!digitalRead (botaodesliga)){ //Caso seja apertado o botão de desligar...

digitalWrite (LED, 0); } //...Ele vai colocar 0 (0V) no led.

if (digitalRead (botaoliga) && digitalRead (botaodesliga) != lastjuntos) {


delay (20); //delay de 20 milisegundos

lastjuntos = digitalRead (botaoliga) && digitalRead (botaodesliga); } //muda o estado do


//led para piscar

if(!digitalRead(botaoliga) && !digitalRead (botaodesliga)) { //Caso pressionemos os dois


botões, o led vai piscar

digitalWrite (LED, 1);

delay(200); //delay de 200 milisegundos

digitalWrite (LED, 0);

delay(200);}

delay (20);//serve para dar estabilidade ao programa

Boa tarde, dando inicio a explicação do nosso codigo temos informaçoes crucias q antecedem
o cod, sao elas o título: Uso de botões de pressão em circuitos microcontrolados para ligar e
desligar LED, os autores: Guilherme Eleutério dos Santos; Jessika Alves Vieira Gomes; Leticia
dos Santos Sales; Pedro Henrique da Silva Cavalcante;Ryan Porto Santos; Weslley Emanuel
Querino de Brito, a versão ultilizada como dita como segunda ja que houve mudanças no dia
22 d março no cod anterior ja que ele não possuía filtro anti-bouncing e nem permitia que os
dois botões fossem acionados simultaneamentes.

Apartir disso introduzimos ao cod com variaveis define, ultilizadas para definir onde cada
botão está conectado, sendo basicamente dar nome aos pinos.

Em seguida temos as variaveis booleanas que verificarão se uma informação é verdadeira ou


falsa. Elas serão usadas para armazenar o estado dos botões ao longo do código

A partir de agora, surge o void setup, o void é uma função que não nos retorna informações,
enquanto o setup serve para configurar nossas variáveis.

O botão de ligar (pino 2) é definido como INPUT_PULLUP, a partir do pinMode, ou seja,


o pino do botão de ligar tem a função de porta de entrada de informações, já que a gente quer
que quando aperte ele, ele nos dê a informação de 0 ou 1 para jogar no pino do LED, e
também tem a função de acionar os resistores internos da placa, para fazer com que não
precisemos adicionar um resistor externo no circuito, o que demandaria mais gasto e mais
volume. A mesma explicação vale para o botão de desligar, só que agora, conectado no pino 3.

Já o LED, conectado no pino 8, é definido como uma porta de saída, já que vai emitir
informação que é a luz.

Para finalizar essa parte, para que o LED inicie desligado, utilizamos a função
digitalWrite para escrever na porta digital do LED 0, que em ARDUÍNO UNO significa 0V.
E ao final do cod temos o void loop, que executa o programa em loop até que alguém mude o
código dentro do microcontrolador ou cesse a energia do arduino tirando o cabo usb, logo o
progama q estara sendo executado em loop sera if ou se, onde se a gnt ler o botaoliga e o
estado for diferente do ultimo estado do botao lastliga vai haver o delay de 20 milisegundo
que garante a estabilidade do sinal e previni o efeito bouce, onde atraves desses miligundo o
arduino tem a possibilidade de nao ler o chamado trem de cliques, apos o delay ela apresenta
que lastliga vai ser igual a leitura de botaoliga, que faz com que lastliga mude seu estado para
5 volts. Depois o arduino vai ser que se botaoliga, uma porta de entreda e definida como pull
up com que fez o arduino acionasse os resistores da placa e que nos começassimos com alta
tensão, entao nos pomos a exclamaçao para que se inicie com o efeito contrario, sendo assim,
a alta tensao se tornou baixa. Entao se o botão de ligar for clicado, ele executa o digitalWrite,
que vai escrever na porta digital do LED, 1, que significa 5V em arduíno UNO oq vai fazer o led
ligar. O terceiro e o quinto if vai funciona rda mesma forma do primeiro

O quarto if lê o botão de desligar e se ele tiver sido realmente acionado vai executa o
digitalWrite escrevendo na porta digital do LED 0V para desligar o LED. Já o sexto if verifica se
os dois botões foram pressionados ao mesmo tempo. Caso sim, o LED começará a piscar com
um delay de 200 milissegundos. Por último há um delay de 20 milissegundos para dar
estabilidade ao código, fazendo assim, que ele funcione apenas de 20 em 20 milissegundos.
Esse tempo pode parecer inexistente para o usuário, mas faz uma diferença muito grande na
estabilidade do programa. Com isso encerrase a explicaçao do cod.

Você também pode gostar