Robótica Livre
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Ir para baixo
Paulo Augusto Batista
Paulo Augusto Batista
Admin
Mensagens : 5021
Data de inscrição : 11/02/2019
Idade : 52
Escola : Colegio Lindaura
https://roboticalivre.forumeiros.com

Tópicos Abordados na Aula IF/ELSE/IF Empty Tópicos Abordados na Aula IF/ELSE/IF

Dom maio 05, 2019 9:32 pm
No ítem 2.1.3 da apostila trata a função if else if, uma função que permite fazer testes em diversas condições conforme necessidade do programador.

A estrutura fica assim:

if (condição1) {          // inicia com a função if e o primeiro teste lógico
  bloco de instruções 1;  //Caso o primeiro teste retorne TRUE, executa o bloco de instruções 1
} else if (condição2) {  // Caso o primeiro teste retorne FALSE, executa o segundo teste na condição2
 bloco de instruções2; //Caso a condição2 retorne TRUE, executa o bloco de instruções 2
} else if (condição3) {   //Caso o segundo teste retorne FALSE, executa o terceiro teste na condição3
 bloco de instruções3;  //Caso a condição 3 retorne TRUE, executa o bloco de instruções 3
}   else {   //Opcionalmente pode ser executado um ELSE caso nenhuma opção acima atenda aos critérios,ou simplesmente não executar nada
bloco de instruções4;  // Neste caso executa esse bloco caso nenhuma opção acima atenda aos critérios
}                               //Fim do último bloco

Algumas s possibilidades para o teste da condição:
if (digitalRead(pino)){  // Esse teste refere-se ao sinal em um pino digital, retorna true e o pino estiver com 5V, ou na condição HIGH
if(variável == numero){ // Vai executar o bloco de instruções se a variável for igual ao numero
if(variável1 >= variavel2){ // Executa as instruções caso a variável1  seja maior ou igual a variável2
if(analogRead(pino) < numero){ // Testa se uma entrada analógica é menor que um numero determinado

Testes lógicos, operações matemáticas também são possíveis, como os exemplos abaixo:

if((digitalRead(pino) && analogRead(pino) >= valor) || (variável2 > variável1 && !digitalRead(pino2))){{
if((variável + numero) >= analogRead(pino) || ((variável2 * analogRead(pino2)) % numero3)){

Os testes lógicos são aqueles descritos na apostila no ítem 1.2.8. Operadores de comparação comparam uma variável com uma constante, ou variáveis entre si. São usados para testar se uma condição é verdadeira.
x == y // x é igual a y
x != y // x não é igual a y
x < y // x é menor que y
x > y // x é maior que y
x <= y // x é menor ou igual a y
x >= y // x é maior ou igual a y

Os operadores lógicos são: Operadores lógicos são usados para comparar duas expressões, retornam 1 ou 0 (verdadeiro/falso).
&& AND porta lógica ‘E’
|| OR       porta lógica ‘OU’
! NOT porta lógica NÃO

Operadores matemáticos também podem ser usados nos testes lógico.Operadores Aritméticos Usados para operações matemáticas basicas:
+ // Soma
- // Subtração
* // Multiplicação
/ // Divisão
% // Resto

OPERADORES DE ATRIBUIÇÃO e COMPARAÇÃO

O sinal de igual muda sua função conforme a aplicação, veja abaixo:
numero = 0; //esse comando atribui o valor zero a variável numero
numero == 0; //esse comando compara se o numero é igual a zero, retornando TRUE se igual e FALSE se diferente

A função IF permite também usar uma função dentro de outra, como no exemplo abaixo:

if(condição1){     //primeiro teste de condição para executar o bloco
 if(condição2){   // Dentro do bloco realiza outro teste na condição2
   if(condição3){   // Neste exemplo realiza outro teste chamado condição 3
     bloco de instruções;   // Instruções que serão realizadas
}  // Fim da condição3
}  // Fim da condição2
}  // Fim da condição1

Fizemos um programa para transformar o kit num luximetro de 3 leds para aplicação em escritórios para medir se a luminosidade nas mesas estão aquem do necessário, dentro do necessário ou maisque o necessário. A indicação é com 3 leds que sinalizam a cnformidade da luminosidade na mesa.

Código:

//DEFINcOES INICIAIS
#define ledVermelho 9
#define ledAmarelo 8
#define ledVerde 7
#define ldr A0

//VARIAVEIS
 
//SETUP
void setup(){
  pinMode(ledVermelho, OUTPUT);
  pinMode(ledAmarelo, OUTPUT);
  pinMode(ledVerde, OUTPUT);
 
}
//PROGRAMA PRINCIPAL
void loop(){
  if(analogRead(ldr) < 200){
    digitalWrite(ledVerde, HIGH);
    digitalWrite(ledAmarelo, LOW);
    digitalWrite(ledVermelho, LOW);
  } else if (analogRead(ldr) < 400){
    digitalWrite(ledVerde, LOW);
    digitalWrite(ledAmarelo, HIGH);
    digitalWrite(ledVermelho, LOW);
  } else if (analogRead(ldr) >= 400){
    digitalWrite(ledVerde, LOW);
    digitalWrite(ledAmarelo, LOW);
    digitalWrite(ledVermelho, HIGH);
  }
}
Ir para o topo
Permissões neste sub-fórum
Não podes responder a tópicos