Muitas vezes você deseja repetir 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.

Componentes necessários:

  • Arduino
  • 6 Resistores 330Ω
  • 6 LEDs
  • Protoboard
  • Jumpers
  • 1 Cabo USB

Circuito

Conecte 6 LEDs, com resistores de 330Ω em série, nos pinos digitais de 2 a 7 de seu Arduino.

Arduino Exemplos: Laço

Esquema

Arduino Exemplos: Piscar

Código

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.

/*
  For Loop Iteration
 
 Demonstrates the use of a for() loop.
 Lights multiple LEDs in sequence, then in reverse.
 
 The circuit:
 * LEDs from pins 2 through 7 to ground
 
 created 2006
 by David A. Mellis
 modified 30 Aug 2011
 by Tom Igoe

This example code is in the public domain.
 
 http://www.arduino.cc/en/Tutorial/ForLoop
 */


int timer = 100;           // The higher the number, the slower the timing.

void setup() {
  // use a for loop to initialize each pin as an output:
  for (int thisPin = 2; thisPin < 8; thisPin++)  {
    pinMode(thisPin, OUTPUT);      
  }
}

void loop() {
  // loop from the lowest pin to the highest:
  for (int thisPin = 2; thisPin < 8; thisPin++) {
    // turn the pin on:
    digitalWrite(thisPin, HIGH);  
    delay(timer);                  
    // turn the pin off:
    digitalWrite(thisPin, LOW);    
  }

  // loop from the highest pin to the lowest:
  for (int thisPin = 7; thisPin >= 2; thisPin--) {
    // turn the pin on:
    digitalWrite(thisPin, HIGH);
    delay(timer);
    // turn the pin off:
    digitalWrite(thisPin, LOW);
  }
}

O conteúdo desta página é uma tradução para o português a partir do site original do Arduino.