If-Else: Projeto 1 - Simulando uma Comunicação de Rede
Tutorial: Montando um Projeto de Comunicação WiFi
Este projeto utiliza o Arduino para controlar o estado de um LED através de comandos enviados via comunicação serial (nesse caso, simulando o Bluetooth). Antes de começarmos, pense na função `Serial.read()` como um carteiro que traz uma carta (neste caso, uma letra 'l' ou 'd') para o Arduino.
Passo 1: Configurando o Circuito
1. Acesse o Tinkercad (https://www.tinkercad.com/) e faça o Login ou Inscreva-se.
2. No Tinkercad, crie um novo Circuito.
2. Adicione um Arduino ao seu circuito. Você pode usar um ARDUINO UNO R3 e selecionar uma Placa de Ensaio, que já vem com a protoboard e a fonte (5V) e o terra (GND) conectados.
3. Adicione um LED ao circuito e conecte o terminal positivo (ânodo, geralmente a perna mais longa do LED) à porta digital 13 do Arduino usando um fio.
4. Adicione um módulo WiFi ESP8266. Clique aqui para acessar e copie o módulo do projeto. Veja como fazer abaixo:
Passo 2: Carregando o Código
1. Clique no Arduino no Tinkercad e depois clique no botão "Código".
2. Cole o código abaixo na janela de código:
#define LED 13 // constante para a porta do led
char caractereBlt; // Cria uma variável
// que vai ser usada para o
// estado do led em valor zero.
void setup(){ // Inicia o bluetooth
Serial.begin(9600);
pinMode(LED,OUTPUT);
}
void loop(){ // Realiza a repetição e os
// comandos que são necessários para
// ligar e desligar o led.
if(Serial.available()>0){
caractereBlt = Serial.read();
}
if (caractereBlt == 'l'){ // Verifica o valor do estado
digitalWrite(LED, HIGH);
Serial.print(caractereBlt);
}
if(caractereBlt == 'd'){ // Verifica o valor do estado
digitalWrite(LED,LOW);
Serial.print(caractereBlt);
}
}
3. Clique em "Feito" para fechar a janela de código.
Passo 3: Testando o Circuito
1. Comece a simulação clicando no botão "Iniciar Simulação".
2. Abra a janela do monitor serial clicando no botão "Monitor Serial" na barra de ferramentas.
3. No monitor serial, digite 'l' e pressione Enter. Isso deve acender o LED. Agora, o 'l' é como uma carta que diz ao Arduino para acender o LED.
4. Digite 'd' e pressione Enter. Isso deve desligar o LED. Nesse caso, o 'd' é como uma carta que diz ao Arduino para desligar o LED.
Entendendo o Código
Vamos detalhar as funções e a lógica condicional IF-Else.
- `#define LED 13`: Aqui estamos definindo uma constante chamada LED que é igual a 13. Isso significa que, sempre que usarmos LED em nosso código, estamos nos referindo ao pino 13 no Arduino.
- `char caractereBlt;`: Aqui estamos criando uma variável do tipo char, que pode armazenar um único caractere. Esta variável será usada para armazenar o último caractere que recebemos da comunicação serial.
- `void setup() { }`: Esta função é executada uma vez quando o Arduino é ligado ou reiniciado. Ela é usada para configurar as configurações iniciais.
- `Serial.begin(9600);`: Inicia a comunicação serial a uma velocidade de 9600 baud (ou bits por segundo). Isso é como dizer ao carteiro para começar seu turno.
- `pinMode(LED,OUTPUT);`: Define o pino LED (que é o pino 13) como saída. Isso significa que vamos enviar dados (neste caso, energia) para fora do pino 13.
- `void loop() { }`: Esta função é executada repetidamente após a função `setup()`. Ela é o coração do nosso código.
- `if(Serial.available()>0) { }`: Este bloco IF verifica se há dados disponíveis para serem lidos na comunicação serial. É como se o Arduino estivesse perguntando ao carteiro se ele tem alguma carta para entregar (bits).
- `caractereBlt = Serial.read();`: Lê o próximo caractere disponível da comunicação serial e o armazena na variável `caractereBlt`. É como se o Arduino estivesse pegando a carta do carteiro (bits do último caractere enviado).
- `if (caractereBlt == 'l') { }`: Este bloco IF verifica se o caractere que recebemos é igual a 'l'. Se for, acendemos o LED.
- `digitalWrite(LED, HIGH);`: Acende o LED conectado ao pino 13. É como se o Arduino estivesse lendo a carta que diz "acender o LED".
- `if (caractereBlt == 'd') { }`: Este bloco IF verifica se o caractere que recebemos é igual a 'd'. Se for, apagamos o LED.
- `digitalWrite(LED, LOW);`: Apaga o LED conectado ao pino 13. É como se o Arduino estivesse lendo a carta que diz "apagar o LED".
Para Pensar! Lógica Condicional no Arduino
Podemos pensar no bloco if
como um segurança em uma festa exclusiva. A condição dentro do if
(por exemplo, caractereBlt == 'l'
) é a lista de convidados.
Apenas aqueles que estão na lista (ou seja, apenas aqueles que atendem à condição) têm permissão para entrar na festa. Agora, o que acontece dentro da festa? Isso é determinado pelo código que está entre as chaves { }
após a condição if
. As chaves representam a entrada e a saída da festa. O que acontece dentro dessas chaves só ocorre para aqueles que passaram pelo segurança e atendem à condição de entrada.
Por exemplo, consideremos o seguinte código:
if (caractereBlt == 'l') {
digitalWrite(LED, HIGH);
Serial.print(caractereBlt);
}
Nesse cenário, caractereBlt == 'l'
é a condição de entrada para a festa. O segurança (ou o if
) verifica se o valor de caractereBlt
é igual a 'l'
. Se for, então temos permissão para entrar na festa e as ações dentro das chaves { }
são executadas. Neste caso, o LED é ligado (digitalWrite(LED, HIGH)
) e o valor de caractereBlt
é enviado de volta pelo Monitor Serial (Serial.print(caractereBlt)
).
Por outro lado, se caractereBlt
não for igual a 'l'
, não atendemos à condição de entrada, e o segurança (ou o if
) não nos permite entrar na festa. Nesse caso, o código dentro das chaves { }
é ignorado e o Arduino passa para a próxima linha de código após as chaves.