Muitas vezes você deseja repetir uma ação sobre uma série de pinos e fazer alguma coisa diferente para cada um. Neste caso o exemplo faz piscar 6 LEDs usando a função for() loop para fazer circular ida e volta entre os pinos 2 e 7. Os LEDs acendem e apagam em sequência, usando ambos as funções digitalWrite() e delay().
Podemos chamar este exemplo de "Super Máquina" lembrando a série de televisão dos anos 80 em que o famoso ator David Hasselhoff dirigia seu Pontiac com inteligência artificial. O carro foi turbinado com vários LEDs de vários tamanhos possíveis para reproduzir efeitos brilhantes.
Consideramos que seria interessante usar esta metáfora da "Super Máquina" com o objetivo de aprender mais sobre programação sequencial e boas técnicas de programação para as informações de E/S da placa.

O Que Vou Aprender?

- função for() loop
- digitalWrite()
- delay()

Código Fonte

Download do arquivo em formato .ino

Materiais Necessários

Para este tutorial você vai precisar de 1 Arduino Uno R3, 6 LEDs, 6 Resistores 330Ω, 1 Protoboard, 1 Cabo USB - AB e Jumpers premium. Ou você pode utilizar os componentes do Kit Iniciante com Arduino Uno R3.

Tutorial Multilógica-Shop Arduino Loop

 

Diagrama

Tutorial Multilógica-Shop Arduino Loop

 

Código Fonte

O código abaixo começa utilizando a função for() loop para designar os pinos digitais 2 a 7 como saídas dos 6 LEDs usados. No loop principal do código, dois for() loops são usados para incrementar o laço, percorrendo os LEDs, um por um, a partir de pino 2 ao pino 7. Uma vez que o pino 7 está aceso, o processo inverte, percorrendo de volta através de cada LED.
Para mais informações da função for() veja página 82 do Guia Iniciante Arduino Multilógica-Shop).

/*
  Loop
 
 Demonstra o uso da funcao for() loop.
 Acende varios LEDs em sequencia, e logo ao reves.
 
 O circuito:
 * LEDs entre os pinos 2 ao 7 e ao terra
 
 Criado em 2006 por David A. Mellis
 Modificado em 30 de Agosto de 2011 por Tom Igoe

 Este codigo e de dominio publico.
  http://www.arduino.cc/en/Tutorial/ForLoop
 */

int timer = 100;     // Quanto maior o valor, mais lenta a sequencia de Leds.

void setup() {
  // Use for loop para inicializar cada pino como saida:
  for (int thisPin = 2; thisPin < 8; thisPin++)  {
    pinMode(thisPin, OUTPUT);      
  }
}

void loop() {
  // loop desde o pino mais baixo ate o mais alto:
  for (int thisPin = 2; thisPin < 8; thisPin++) {
    // liga este pino:
    digitalWrite(thisPin, HIGH);  
    delay(timer);                  
    // desliga este pino:
    digitalWrite(thisPin, LOW);    
  }

  // loop desde o pino mais alto ate o mais baixo:
  for (int thisPin = 7; thisPin >= 2; thisPin--) {
    // liga este pino:
    digitalWrite(thisPin, HIGH);
    delay(timer);
    // desliga este pino:
    digitalWrite(thisPin, LOW);
  }
}

 

Este tutorial é parte integrante do Guia Iniciante Arduino, desenvolvido pela equipe da Multilógica-Shop. Faça download grátis do arquivo com 11 tutoriais. Neste guia você também vai encontrar, além de indicações de instalação e tutoriais, uma grande quantidade de informações sobre todo o ambiente que está ao redor desta plataforma.

Guia Arduino Iniciante Multilógica-Shop