Operador Ternário na programação com Arduino

Objetivo

Nesta dica vamos mostrar como usar o operador ternário na programação com Arduino. O operador ternário é uma alternativa elegante e compacta para substituir a estrutura condicional if/else na seguinte situação específica:

1. Operador Ternário

1.1. Como já mencionamos acima, o operador ternário possui 3 operandos: Condição, Operação 1 se for verdadeiro e Operação 2 se for falso.

1.1.1 Observe que a operação 1 (se for verdadeiro) é precedida pelo sinal de interrogação (?). Já a operação 2 (se for falso) deve ser precedida do símbolo de dois pontos (:).

1.1.2. O operador ternário é utilizado na principais linguagens de programação empregadas atualmente.

1.2. Veja a seguir a sintaxe utilizada para criarmos um operador ternário na linguagem C++ e também na programação com Arduino:

Sintaxe:

<condição> ? <operação 1> : <operação 2>;

2. Exemplo A

2.1 Neste exemplo, vamos calcular o imposto para duas condições de salário: salário maior que 2000, o imposto será de 20%, e salário menor ou igual a 2000, o imposto será de 10%.

void setup() {
 Serial.begin(9600);
 Serial.println("Digite o seu salário");
}

void loop() {
  if (Serial.available()) {
    int salario = Serial.parseInt();
    int imposto = salario > 2000 ? salario * 0.20 : salario * 0.1; 

  Serial.print("Salario = ");
  Serial.print(salario);
  Serial.print(" | Imposto = ");
  Serial.println(imposto);
  }
}

2.2. Observe que utilizamos o operador ternário para calcular o valor do imposto:

int imposto = salario > 2000 ? salario * 0.20 : salario * 0.1; 

2.2.1. No exemplo acima, temos:

2.2.1.1. condição:  salario > 2000

2.2.1.2. se a condição for verdadeira, retorna a operação 1: salario * 0.20

2.2.1.3. se a condição for falsa retorna a operação 2:  salario * 0.10

2.3. Abaixo, veja como ficaria o código com o condicional if/else.

 int imposto;
 if (salario > 2000) imposto = salario * 0.20;
   else imposto = salario * 0.10; 

2.3.1. Observe que no exemplo acima, onde usamos o operador condicional if/else, precisamos de no mínimo 2 linhas de código. Quando usamos o operador ternário, uma linha de código já é suficiente.

2.3.2. Observe que o uso de chaves {} para o operador condicional neste caso é opcional.

2.4. Copie o código nas 2 situações e rode na IDE do Arduino. Veja o resultado abaixo, para qualquer uma das situações (operador ternário ou operador condicional if/else):

3. Exemplo B

3.1 Neste exemplo, ao pressionarmos um botão (push button), podemos acender ou apagar um led.

const byte buttonPin = 2; // número do pino pushbutton
const byte ledPin = 8; // número do pino LED
 
void setup() {
  pinMode(ledPin, OUTPUT);
  pinMode(buttonPin, INPUT_PULLUP); // pullup interno do Arduino
}
 
void loop(){
  if (!digitalRead(buttonPin)) { // verifica se o botão foi acionado    
    digitalRead(ledPin) ? digitalWrite(ledPin, LOW) : digitalWrite(ledPin, HIGH);
    while (!digitalRead(buttonPin)) {}
    delay(50);
  }
} 

3.2. Da mesma forma que no exemplo anterior, usamos o operador ternário:

digitalRead(ledPin) ? digitalWrite(ledPin, LOW) : digitalWrite(ledPin, HIGH);

 3.2.1. Resumindo o código acima temos:

3.2.1.1. Condição: Se o led estiver aceso (digitalRead(ledPin) == true)

3.2.1.2. se a condição for verdadeira retorna a operação 1:  digitalWrite(ledPin, LOW) - apaga o led

3.2.1.3. se a condição for falsa retorna a operação 2:  digitalWrite(ledPin, HIGH) - acende o led

3.3. Veja o mesmo código utilizando o operador if/else:

if (digitalRead(ledPin)) digitalWrite(ledPin, LOW);
    else digitalWrite(ledPin, HIGH); 

4. Documentação oficial

Estrutura de Controle If - Referência Arduino

Estrutura de Controle Else - Referência Arduino

O anúncio abaixo ajuda a manter o Squids Arduino funcionando

Compartilhe:

Doações

Contribua pra manter o site online :)

Inscreva-se no canal Squids

Squids Arduino News

Básico - Hub 011 Acertar número aleatório usando potenciômetro - jogo   Sugerido por: Juliandrew Facundo Para iniciar o jogo deve-se pedir ao usuário que digite o valor 1 no teclado do comp...

Básico - Projeto 96 Acender e apagar um led batendo palmas consecutivas Objetivo O objetivo deste projeto é criar um circuito para acender e apagar um led ao bater seguidamente um número especí...

Desafio 87 - Projeto Maker 001 Controlando 2 motores com sensor de toque caseiro Com base no projeto M01 - Aprenda a fazer um sensor de toque de 4 teclas com Arduino resolva os seguintes desafi...

Básico - Hub 010 Fazer Piscar 2 usando a função millis()   Sugerido por: Jhulio Cesar Objetivo Monte um circuito com 2 LEDs (um vermelho e um verde) e faça um programa blink "duplo", que f...

Desafio 86 - Projeto hub009 Piscar led de acordo com o potenciômetro usando millis() Com base no Hub 009 - Piscar led de acordo com o potenciômetro em intervalos de 0.5 a 3 segundos - Arduino r...

Outros artigos

Mais: Básico Projetos Básicos Desafios Arduino Maker Dicas de Software

Você está preparado?

Topo