Introdução à programação C para Arduino

Giovan Barreira · Capítulo 20 de 30

Páginas do PDF

Introdução à programação C para Arduino

Operadores Lógicos

 

Os operadores lógicos são utilizados quando um teste lógico é composto de mais de um teste. Aqui apresento os operadores ‘&’ (e) e ‘||’ (ou).

Exemplo 1:

n1 = 12; //n1 vale 12

n1 > 10 & n1 < 20; //afirmar que n1 é maior que 10 e menor que 20 é verdadeiro

 

Exemplo 2:

n1 = 20; //n1 vale 20

n1 == 20 || n1 > 100; //afirmar que n1 é 20 ou é maior que 100 é verdadeiro

 

A tabela abaixo ilustra os resultados finais quando temos um teste composto pelos testes A e B combinado com ‘&’.

A B A & B

V V V

V F F

F V F

F F F

 

A tabela abaixo ilustra os resultados finais quando temos um teste composto pelos testes A e B combinado com ‘||’.

A B A || B

V V V

V F V

F V V

F F F

 

ESTRUTURAS DE DECISÃO

Uma estrutura de decisão é um trecho de código onde ocorre um teste lógico (um teste que pode dar verdadeiro ou falso apenas) e a partir do resultado a execução do código segue um de dois caminhos possíveis.

Aqui veremos dois tipos de estrutura de decisão: if/else e switch/case.

A estrutura do tipo if/else pode dividir o código em duas partes, uma roda se o resultado do teste lógico for verdadeiro e a outra roda se o resultado for falso. Resumo da sintaxe:

if (teste)

{

Código que executa se o resultado do teste for verdadeiro.

…

}

else

{

Código que executa se o resultado do teste for falso.

...

}

A estrutura do tipo if/else pode dividir o código em mais de duas partes, a primeira roda se o resultado do primeiro teste lógico for verdadeiro, a segunda roda se o resultado do segundo teste for verdadeiro (mas for falso do ponto de vista do primeiro teste) e a última parte roda quando todos os testes anteriores forem falsos. Resumo da sintaxe:

if (teste 1)

{

Código que executa se o resultado do teste 1 for verdadeiro.

…

}

eles if (teste 2)

{

Código que executa se o resultado do teste 2 for verdadeiro e o resultado do teste 1 for falso.

...

}

else

{

Código que executa se os resultados de todos os testes anteriores forem falsos.

...

}

A estrutura do tipo switch/case pode dividir o código em várias partes, cada uma roda se o resultado do teste lógico específico for verdadeiro e a última roda se todos os resultados anteriores forem falsos. Resumo da sintaxe:

switch (nome_da_variável)

{

case valor_1 :

Código para executar quando ocorrer o valor_1;

break; //termina a execução

case valor_2 :

Código para executar quando ocorrer o valor_2;

break; //termina a execução

 

case valor_3 :

Código para executar quando ocorrer o valor_3;

break; //termina a execução

 

default :

Código para executar quando todos os anteriores forem falsos;

}

 

Mas é muito importante notar que podem ser executadas qualquer quantia de testes, mas o último (default) ocorre quando todos os anteriores forem falsos, ou seja, a mesma coisa que o else no caso do if.

Se o leitor achar muito pesado ter que aprender as duas estruturas, poderá praticar apenas o if/else e resolver qualquer problema com ele.

 

HORA DA PRÁTICA:

ATIVIDADE_006 – Fazer três leds acenderem e apagarem na sequência indefinidamente, com intervalo de 0,5 s.

Figura 54 - Atividade 6 – Código utilizando if

Figura 55 - Atividade 6 – Execução no SIMULIDE

Figura 56 - Atividade 6 – Esquema da placa física

 

ATIVIDADE_006_1 – Utilizando três leds, escolher qual vai acender utilizando os números 2,3 ou 4 em uma variável e a estrutura de decisão if/else. Para esta atividade, os esquemas da placa física e do SIMULIDE são os mesmos da atividade 006.

CÓDIGO

//depois de rodar o código uma vez, mudar o valor abaixo de 2 para 3,

//depois para 4, depois para qualquer outro número

int porta=2;

void setup() {

pinMode(2, OUTPUT);

pinMode(3, OUTPUT);

pinMode(4, OUTPUT);

 

digitalWrite(2, LOW);

digitalWrite(3, LOW);

digitalWrite(4, LOW);

 

if(porta == 2)

{

digitalWrite(2, HIGH);

}

else if(porta == 3)

{

digitalWrite(3, HIGH);

}

else if(porta == 4)

{

digitalWrite(4, HIGH);

} 

else

{

digitalWrite(2, HIGH);

digitalWrite(3, HIGH);

digitalWrite(4, HIGH);

}

}

 

void loop() {

}

ATIVIDADE_006_2 – Utilizando três leds, escolher qual vai acender utilizando os números 2, 3 ou 4 em uma variável e a estrutura de decisão switch/case. Para esta atividade, os esquemas da placa física e do SIMULIDE são os mesmos da atividade 006.

CÓDIGO

//depois de rodar o código uma vez, mudar o valor abaixo de 2 para 3,

//depois para 4, depois para qualquer outro número

int porta=2;

void setup() {

pinMode(2, OUTPUT);

pinMode(3, OUTPUT);

pinMode(4, OUTPUT);

 

digitalWrite(2, LOW);

digitalWrite(3, LOW);

digitalWrite(4, LOW);

 

switch(porta)

{

case 2:

digitalWrite(2, HIGH);

break;

case 3:

digitalWrite(3, HIGH);

break;

case 4:

digitalWrite(4, HIGH);

break;

default: