Arduino Playground is read-only starting December 31st, 2018. For more info please look at this Forum Post

Laço

Também chamamos o seguinte exemplo de "A Super Máquina" ou "O Justiceiro" em memória à série televisiva dos anos 80 na qual o famoso David Hasselhoff tinha uma máquina com inteligência artificial a guiar seu Pontiac. Para quem não conhece a série, o carro tinha sido incrementado com uma quantidade razoável de LEDs de todos os tamanhos possíveis, a cintilar.

Dessa forma, decidimos que a fim de aprender mais a respeito de programação de sequências e de boas técnicas de programação para a placa, seria interessante usar a série como metáfora.

Este exemplo emprega seis LEDs conectados aos pinos de 2 a 7 da placa, com o uso de resistores de 220 ohms. O primeiro código de exemplo fará com que os LEDs pisquem em sequência, um por um, apenas a usar digitalWrite(pino, HIGH/LOW) e delay(tempo). O segundo exemplo demonstra como usar uma construção for(;;) para realizar a mesma tarefa, mas com menos linhas de código. O terceiro e último exemplo concentra-se nos efeitos visuais de ligar e desligar os LEDs de forma mais difusa.

Circuito

Código

int timer = 100;                   // Quanto maior, mais devagar.
int pins[] = { 2, 3, 4, 5, 6, 7 }; // vetor com o número dos pinos
int num_pins = 6;                  // quantidade de LEDs (tamanho do vetor)

void setup()
{
  int i;

  for (i = 0; i < num_pins; i++)   // elementos do vetor vão de 0 a num_pins - 1
    pinMode(pins[i], OUTPUT);      // configurar cada pino como saída
}

void loop()
{
  int i;

  for (i = 0; i < num_pins; i++) { // varrer cada pino...
    digitalWrite(pins[i], HIGH);   // ligando-o,
    delay(timer);                  // pausando-o,
    digitalWrite(pins[i], LOW);    // e desligando-o.
  }
  for (i = num_pins - 1; i >= 0; i--) { 
    digitalWrite(pins[i], HIGH);
    delay(timer);
    digitalWrite(pins[i], LOW);
  }
}