terça-feira, 10 de junho de 2014

LED's Sequenciais



//Efeito sequencial
//Fernando Ferreira Silva, 10/06/2014
//Licença: GPL

byte led_pin[] = {4, 5, 6, 7, 8, 9, 10, 11, 12, 13}; //array para os pinos

int led_delay(70); //intervalo
int direcao = 1;
int led_atual = 0;
unsigned long changetime;

void setup() {
  for (int x=0; x<10; x++) { //define todos como saida
    pinMode(led_pin[x], OUTPUT);
  }
  changetime = millis();
}

void loop() {
  //verifica o tempo da ultima alteraçao
  if ((millis() - changetime) > led_delay) { 
    troca_led();
    changetime = millis();
  }
}

void troca_led() {
  //apaga todos os leds
  for (int x=0; x<10; x++) {
    digitalWrite(led_pin[x], LOW);
  }
  digitalWrite(led_pin[led_atual], HIGH);
  led_atual += direcao; //incrementa o valor de direçao
  //altera a direcao quando chega ao fim
  if (led_atual == 9) {direcao = -1;}
  if (led_atual == 0) {direcao = 1;}
}

Nenhum comentário :

Postar um comentário