Você está na página 1de 8

Curso Técnico em Automação Industrial

Disciplina: Programação aplicada a Microcontroladores


Professor: Marcelo Cendron

Laço de repetição no Arduino


Utilizamos os comandos de repetição quando desejamos que um determinado
conjunto de instruções ou comandos sejam executados um número definido ou indefinido de
vezes, ou enquanto um determinado estado prevalecer ou até que seja alcançado.

Esse tipo de estrutura é muito importante em programação, e seu uso é


constante nas disciplinas de programação.

Basicamente um laço de repetição é composto por três partes:

1. Inicialização
2. Verificação da condição.
3. Incremento/decremento

No diagrama a seguir são apresentas as três partes:

i=0 1 void setup()


{
2
Não int i = 0; // 1. Inicialização
i <= 10
while (i < 10){ // 2. Verificação da Condição
Sim
3 i = i + 1; // 3. Incremento/decremento
i=i+1 }
}

Fim
void loop()
{
}

Figura 1 - Partes de um laço de repetição

Quanto ao formato da repetição, são basicamente três os formatos aceitos no Arduino:

• Enquanto x, processar (While... Loop);


• Processar..., Enquanto x (Do... While);
• Para... Até... Seguinte (For... To... Next).

Enquanto x, Processar (WHILE... Loop).


Neste caso, o bloco de operações será executado enquanto a condição x for verdadeira.
O teste da condição será sempre realizado antes de qualquer operação. Enquanto a condição
for verdadeira o processo se repete. Podemos utilizar essa estrutura para trabalharmos com
contadores.

Em diagrama de bloco a estrutura é a seguinte:

Figura 2 - Diagrama While

Exemplo de contador:

i=0 void setup()


{
Sim Serial.begin(9600);
i <= 10

Não
int i = 0;
while (i < 10){
i

i = i + 1;
i=i+1
Serial.println(i);
}
Fim
}

void loop()
{
}

Figura 3 - Laço While

PROCESSAR..., Enquanto x (DO... Loop While).


Neste caso primeiro são executados os comandos, e somente depois é realizado o
teste da condição. Se a condição for verdadeira, os comandos são executados novamente,
caso seja falso é encerrado o comando DO.

Em diagrama de bloco e linguagem C:

i=0 void setup()


{
i=i+1 Serial.begin(9600);

int i = 0;
i

do{
Sim
i <= 10 i = i + 1;
Serial.println(i);
}
Não

Fim while (i < 10);

Serial.println("Fim");
}

void loop()
{
}

Figura 4 - Laço de repetição DO

PARA... ATÉ... Seguinte (FOR... TO... Next).


A construção do Laço For, em diagrama é muito semelhante com o laço While, mas a
inicialização, controle e incremento se dá na mesma linha, tornando mais fácil a visualizar.
Abaixo segue o exemplo do laço While, modificado para trabalhar com For:

Em linguagem do Arduino:

void setup()

for(int i = 0; i < 10; i = i + 1){

// bloco que será executado

void loop()

Em certas linguagens há operadores específicos para o incremento como


é o caso de C e as linguagens derivadas que utilizam o operador ++ (por
exemplo, poderíamos utilizar i++ em vez de i = i + 1).

Casos práticos com repetição


Para melhor ilustrar o uso dos laços de repetição iremos apresentar alguns exemplos
práticos:

Exemplo 01 – Fazendo um LED piscar 5 vezes apenas:


Partimos de um LED ligado a porta 12, conforme circuito a seguir:
O laço de repetição foi inserido dentro da função setup, pois dessa forma o LED piscará
5 vezes e depois irá executar a função loop, não executando mais o acendimento do LED, veja
o código:

void setup()

pinMode(11, OUTPUT);

int i = 0;

while (i < 5){

i = i + 1;

digitalWrite(11, HIGH);

delay(1000);

digitalWrite(11, LOW);

delay(1000);

void loop()

E uma alternativa utilizando for:


void setup()

pinMode(11, OUTPUT);

for (int i=0; i<5; i++){

digitalWrite(11, HIGH);

delay(1000);

digitalWrite(11, LOW);

delay(1000);

void loop()

Exemplo 02 – Fazendo um LED piscar 5 vezes com intervalo


Nesse exemplo, iremos utilizar o mesmo circuito do exemplo anterior, porém agora, o
LED irá piscar 5 vezes, aguardar 3 segundos e começar o processo de novo, fazendo isso de forma
contínua. Veja o código:

void setup()

pinMode(11, OUTPUT);

void loop()

int i = 0;

while (i < 5){


i = i + 1;

digitalWrite(11, HIGH);

delay(1000);

digitalWrite(11, LOW);

delay(1000);

delay(3000);

Exemplo 03 – Brilho variável do LED


Aproveitando ainda o mesmo circuito, vamos fazer com o brilho de LED acenda e
apague gradativamente, para isso, inicialmente vamos demonstrar o uso com o laço de
repetição for apresentando os valores na saída:

void setup()

Serial.begin(9600);

pinMode(11, OUTPUT);

void loop()

for (int i=0; i<255; i=i+5){

Serial.println(i);

delay(100);

}
Veja que a saída serial irá apresentar os valores entre 0 e 255.

Agora vamos modificar esse laço de repetição e incluir mais um laço para apagar o LED
de forma gradativa:

void setup()

Serial.begin(9600);

pinMode(11, OUTPUT);

void loop()

for (int i=0; i<255; i=i+5){

analogWrite(11, i);

delay(100);

delay(1000);

for (int i=255; i>=0; i=i-5){

analogWrite(11, i);

delay(100);

delay(1000);

Você também pode gostar