Escolar Documentos
Profissional Documentos
Cultura Documentos
desligam em sequência
Análise do circuito
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:
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...).
* * * * *