Conceitos de Programação III

Potencializando o Código: Otimizando tarefas complexas com lógica de repetição.

O Poder da Repetição (Loops)

As Estruturas de Repetição representam o salto da programação manual para a automação inteligente. Elas são utilizadas quando um bloco de instruções precisa ser executado múltiplas vezes de forma controlada e finita.

Eficiência de Código

Elimina a necessidade de reescrever instruções redundantes, reduzindo drasticamente o tamanho do arquivo final.


Controle de Ciclos

A execução é regida por uma condição lógica definida pelo programador, garantindo que o ciclo tenha um início e um fim determinados.

Dica do Professor: Um loop bem estruturado não apenas economiza tempo, mas facilita a manutenção. Se você precisar alterar uma lógica, mudará em apenas um lugar, e não em cem.

Repetição com Teste no Início: O Laço WHILE

A estrutura WHILE (Enquanto) é utilizada quando queremos repetir um bloco de instruções enquanto uma condição lógica for verdadeira. A principal característica desta estrutura é que a validação ocorre antes de qualquer ação ser executada.

Fluxograma While
Fluxograma: O teste lógico precede a execução da rotina.

Como funciona a lógica?

  • Validação Prévia: Se a condição for FALSA logo no primeiro teste, o bloco de instruções nunca será executado.
  • Loop Infinito: É responsabilidade do programador garantir que, em algum momento, a condição se torne falsa para que a execução saia do laço.
  • Execução: Enquanto a condição for VERDADEIRA, o Arduino repetirá a rotina e voltará ao teste inicial.
Exemplo em C++ (Arduino)
int contador = 0;

while (contador < 10) {
    digitalWrite(LED, HIGH);
    delay(500);
    digitalWrite(LED, LOW);
    delay(500);
    
    contador++; // Incrementa para que a condição se torne falsa após 10 ciclos
}
Atenção: Diferente da estrutura Do-While, no While o bloco de código pode ser executado zero ou mais vezes. Se a porta do sensor já estiver fechada ao iniciar, o robô nem chega a tentar fechá-la.
PROJETO 04

Desenvolver um projeto utilizando a porta PWM para controlar a luminosidade de um LED.

Acessar Projeto Completo
PROJETO 05

Desenvolver um projeto utilizando uma porta analógica e um potenciômetro para controlar a velocidade de iluminação de um LED. Quando o valor do potenciômetro for menor ou igual a 1000, um LED deverá permanecer ligado. Quando esse valor for menor ou igual a 500, outro LED deverá piscar em uma velocidade proporcional ao valor do potenciômetro.

Acessar Projeto Completo
PROJETO 06

Desenvolver um projeto utilizando um sensor de luz LDR e um diodo laser para simular um sistema de alarme. Quando algum objeto bloquear a recepção da luz do diodo laser pelo sensor LDR, um alarme deverá ser disparado e um LED permanecerá aceso. O alarme e o LED poderão ser desligados por meio de um botão.

Acessar Projeto Completo

Repetição com Variável de Controle: O Laço FOR

A estrutura FOR (Para) é utilizada quando sabemos exatamente quantas vezes um bloco de instruções deve ser executado. É a ferramenta ideal para percorrer vetores, matrizes ou realizar contagens precisas.

Fluxograma For - Símbolo de Preparação
Símbolo de Preparação: Utilizado para inicializar, testar e incrementar.

O Mecanismo de Controle

  • Contador Interno: A própria estrutura gerencia uma variável contadora que rastreia as repetições.
  • Limites Definidos: O programador estabelece o valor inicial e o limite (superior ou inferior) de parada.
  • Automação de Fluxo: Diferente do While, o incremento ou decremento da variável de controle é feito na declaração da estrutura.
Exemplo em C++ (Arduino)
// Piscar um LED exatamente 5 vezes
for (int i = 0; i < 5; i++) {
    digitalWrite(LED, HIGH);
    delay(200);
    digitalWrite(LED, LOW);
    delay(200);
}

Interrupção Manual: O Comando break

No ecossistema Arduino, podemos utilizar o comando break para encerrar prematuramente um laço de repetição. Ele funciona como uma "saída de emergência", interrompendo o fluxo assim que uma condição específica (dentro do laço) for alcançada, mesmo antes do contador atingir seu limite final.

for (int i = 0; i < 100; i++) {
    // Se o sensor detectar algo, interrompe a contagem
    if (digitalRead(sensorPin) == HIGH) {
        break; // Sai do laço imediatamente
    }
    delay(10);
}
Dica do Professor: A estrutura FOR é composta por três partes essenciais separadas por ponto e vírgula:
Inicialização ; Condição ; Incremento. Dominar essa anatomia permite criar loops decrescentes ou com passos maiores que um.
PROJETO 07

Desenvolver um projeto utilizando um sensor de movimento e um micro servo para simular a abertura de uma cancela.

Acessar Projeto Completo
PROJETO 08

Desenvolver um projeto utilizando dois sensores de distância ultrassônicos e um micro servo para simular a abertura de uma cancela.

Acessar Projeto Completo

Repetição com Teste no Fim: O Laço DO-WHILE

A estrutura DO-WHILE (Faça-Enquanto) é única porque garante que o bloco de instruções seja executado pelo menos uma vez, independentemente da condição. A verificação lógica só acontece após a primeira execução da rotina.

Fluxograma Do-While
Fluxograma: A rotina precede o teste lógico.

A Lógica de Execução

  • Execução Garantida: Diferente do While comum, aqui a rotina entra em ação antes mesmo de perguntar se a condição é válida.
  • Teste Posterior: Após realizar a ação, o Arduino aplica o teste lógico.
  • Ciclo de Repetição: Na linguagem C++ do Arduino, o laço continua enquanto a condição for verdadeira. Se a condição for falsa, a execução é encerrada e o programa segue adiante.
Exemplo em C++ (Arduino)
int sensorValor;

do {
    // O robô tenta ler o sensor ao menos uma vez
    sensorValor = analogRead(A0);
    delay(100);
} while (sensorValor < 500); // Repete enquanto o valor for baixo
Dica Pro: Utilize o DO-WHILE quando você precisar que o usuário interaja com o sistema ao menos uma vez (como digitar uma senha ou pressionar um botão de início) antes do programa decidir se deve continuar ou parar.
PROJETO 09

Desenvolver um projeto para desligar um diodo laser utilizando um sensor de toque capacitivo.

Acessar Projeto Completo