0% acharam este documento útil (0 voto)
183 visualizações3 páginas

002-Programando Um Botão Que Aciona 2 LEDs em Sequência

Este documento descreve um programa Arduino que controla dois LEDs ligados em sequência quando um botão é pressionado. O programa define variáveis para os pinos dos LEDs e botão e configura os pinos no setup(). No loop(), verifica se o botão foi pressionado e caso positivo acende e desliga os LEDs sequencialmente a cada 1 segundo.

Enviado por

Fati Adonis
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
183 visualizações3 páginas

002-Programando Um Botão Que Aciona 2 LEDs em Sequência

Este documento descreve um programa Arduino que controla dois LEDs ligados em sequência quando um botão é pressionado. O programa define variáveis para os pinos dos LEDs e botão e configura os pinos no setup(). No loop(), verifica se o botão foi pressionado e caso positivo acende e desliga os LEDs sequencialmente a cada 1 segundo.

Enviado por

Fati Adonis
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
Você está na página 1/ 3

002-Programando um botão que aciona 2 LEDs que ligam e

desligam em sequência
Análise do circuito

O circuito segue as mesmas linhas de raciocínio do circuito 01. A única diferença


está no sketch, pois, ao acionar o botão, um led acende e o outro acende em
seguida. Depois, o led que acendeu primeiro desliga e, em seguida, desliga-se o
outro.

Análise do programa
#define Led1 10
#define Led2 11
#define Botao 7

void setup() {
pinMode (Led1, OUTPUT) ;
pinMode (Led2, OUTPUT) ;
pinMode (Botao, INPUT) ;
}
void loop () {
if (digitalRead (Botao) == 1) {
digitalWrite (Led1,HIGH) ;
delay (1000) ;
digitalWrite (Led2,HIGH) ;
delay (1000) ;
digitalWrite (Led1,LOW) ;
delay (1000) ;
digitalWrite (Led2,LOW) ;
delay (1000) ;
}
}
Variáveis
#define Led1 10
#define Led2 11
#define Botao 7

Aqui temos uma nova instrução: #define, aquela que não precisa de ponto e vírgula
no final. Esta instrução diz ao arduino: “crie uma variável de nome Led1 e atribua o
valor 10 a ela”. Isto também poderia ser escrito assim:

int Led1 = 10;


int Led2 = 11;
int Botao = 7;

SETUP
void setup() {
pinMode (Led1, OUTPUT) ;
pinMode (Led2, OUTPUT) ;
pinMode (Botao, INPUT) ;
}

Aqui ficou configurado que o arduino só vai precisar de dois pinos de saída, que
seriam os pinos 10 e 11, pois precisamos acender os LED’s. E vamos precisar de
um pino que receberá energia e que será o pino 7, para o arduino ficar o resto de
sua vida testando se houve presença de energia (alguém apertou o botão).

LOOP
void loop () {
if (digitalRead (Botao) == 1) {
digitalWrite (Led1,HIGH) ;
delay (1000) ;
digitalWrite (Led2,HIGH) ;
delay (1000) ;
digitalWrite (Led1,LOW) ;
delay (1000) ;
digitalWrite (Led2,LOW) ;
delay (1000) ;
}
}
Ao entrar no loop “eterno”, o arduino testa constantemente se houve acionamento
do botão. Enquanto não houver, a função digitalRead retornará zero e nada
ocorrerá. Havendo a presença de energia no pino 7 (Botao), aquela função
retornará 1 e as instruções contidas no if serão executadas, uma vez que a
condição foi atendida.
A primeira instrução vai atribuir o valor 1 (HIGH) à função digitalWrite; logo, o 1º Led
acenderá. Em seguida, segue-se um atraso de 1 seg e a nova instrução atribui o
valor 1 àquela mesma função, só que agora ao segundo Led, que acende.
O processo de desligamento ocorre em seguida atribuindo zero (LOW) à função
digitalWrite ao primeiro Led, e depois, ao segundo Led, com intervalos de 1
segundo, após cada desligamento.
Novamente, o arduino fica em loop até que se pressione o botão.
Uma outra maneira de se escrever este sketch seria nomear variáveis para as
funções digital...(ledX, Y). Veja as alterações em rosa:

#define Led1 10
#define Led2 11
#define Botao 7
#define LedOn1 digitalWrite (Led1,HIGH)
#define LedOn2 digitalWrite (Led2,HIGH)
#define LedOff1 digitalWrite (Led1,LOW)
#define LedOff2 digitalWrite (Led2,LOW)
#define BotaoOn digitalRead (Botao) == 1

void setup() {
pinMode (Led1, OUTPUT) ;
pinMode (Led2, OUTPUT) ;
pinMode (Botao, INPUT) ;
}
void loop () {
if (BotaoOn) {
LedOn1 ;
delay (1000) ;
LedOn2 ;
delay (1000) ;
LedOff1 ;
delay (1000) ;
LedOff2 ;
delay (1000) ;
}
}

O loop dá a impressão de estar bem mais conversacional, não acha? Apesar de ser
maior...
Notou que a função #define tem um alcance maior? Observe que, nas definições
em rosa, o #define disse ao arduino: armazene a função digitalWrite (Led1,HIGH)
na variável LedOn1

“Ué..Por que não precisou de capacitor desta vez?”. No outro programa, o arduino
testava o acionamento do botão e saía para executar outras tarefas e voltava para
ver se havia pressionado o botão. E você nem tinha soltado o botão ainda!!! É. Eu
diria que é a velocidade da luz!! (Nossa! Acho que exagerei nessa...).

Já nesse exercício você pressiona o botão e o arduino vai ter de esperar, no


mínimo, 4 segundos. Você não é tão lento assim para apertar e soltar o botão, não
é mesmo? Então, não é necessário.

* * * * *

Você também pode gostar

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy