segunda-feira, 3 de março de 2014

Efeito com Leds e Arduino

Olá pessoal,

A partir de hoje estarei postando minhas experiências com Eletrônica e Arduino aqui neste Blog. A primeira postagem será sobre este efeito com Leds que eu fiz para me divertir.

Segue link do vídeo:


Código:

/*
By Jeorgy Ramalho
01/02/2014
*/

byte ledPin[] = {2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13}; // Cria um array para os pinos dos LEDs
int direction = 1;
int currentLED = 0;
int i;

void setup() {
 
  for (int x=0; x<12; x++) { // define todos os pinos como saída
  pinMode(ledPin[x], OUTPUT); }

}

void loop(){
  for(int i=0; i<5; i++){
   pisca();
  }
  for(int i=0; i<5; i++){
   barra();
  }
  for(int i=0; i<5; i++){
   barraInv();
  }
  for(int i=0; i<5; i++){
   colunas();
  }
  for(int i=0; i<5; i++){
   colunasInv();
  }
  for(int i=0; i<5; i++){
   changeLED();
 }
 for(int i=0; i<20; i++){
   ledRandom(ledPin);
  }
}

void pisca(){
  for(int i=0; i<12; i++){
    digitalWrite(ledPin[i], HIGH);
  }
  delay(150);
  for(int i=0; i<12; i++){
    digitalWrite(ledPin[i], LOW);
  }
  delay(150);
}

void ledRandom(byte leds[]){
  for (int x=0; x<12; x++) { // apaga todos os LEDs
    digitalWrite(ledPin[x], LOW);
  }
  int x = random(11);
  digitalWrite(ledPin[x], HIGH);
  delay(100);
  digitalWrite(ledPin[x], LOW);
  delay(100);
}

void changeLED() {
for (int i=0; i<12; i++) { // apaga todos os LEDs
digitalWrite(ledPin[i], LOW);
}
  for(int i=0; i<12; i++){
    digitalWrite(ledPin[currentLED], HIGH); // acende o LED atual
    currentLED += direction; // incrementa de acordo com o valor de direction
    delay(50);
    digitalWrite(ledPin[currentLED], LOW);
    delay(50);
    // altera a direção se tivermos atingido o fim
    if (currentLED == 11) {direction = -1;}
    if (currentLED == 0) {direction = 1;}
   
  }
}

void barra(){
  int lado1 = 5;
  int lado2 = 6;
  for(int i=6; i>0; i--){
      digitalWrite(ledPin[lado1], HIGH);
      digitalWrite(ledPin[lado2], HIGH);
      delay(50);
      lado1--;
      lado2++;
  }
  lado1 = 0;
  lado2 = 11;
  for(int i=6; i>0; i--){
      digitalWrite(ledPin[lado1], LOW);
      digitalWrite(ledPin[lado2], LOW);
      delay(50);
      lado1++;
      lado2--;
  }
}

void barraInv(){
  int lado1 = 0;
  int lado2 = 11;
  for(int i=6; i>0; i--){
      digitalWrite(ledPin[lado1], HIGH);
      digitalWrite(ledPin[lado2], HIGH);
      delay(50);
      lado1++;
      lado2--;
  }
  lado1 = 5;
  lado2 = 6;
  for(int i=6; i>0; i--){
      digitalWrite(ledPin[lado1], LOW);
      digitalWrite(ledPin[lado2], LOW);
      delay(50);
      lado1--;
      lado2++;
  }
}

void colunas(){
  int lado1 = 0;
  int lado2 = 6;
  for(int i=6; i>0; i--){
      digitalWrite(ledPin[lado1], HIGH);
      digitalWrite(ledPin[lado2], HIGH);
      delay(50);
      lado1++;
      lado2++;
  }
  lado1 = 5;
  lado2 = 11;
  for(int i=6; i>0; i--){
      digitalWrite(ledPin[lado1], LOW);
      digitalWrite(ledPin[lado2], LOW);
      delay(50);
      lado1--;
      lado2--;
  }
}

void colunasInv(){
  int lado1 = 5;
  int lado2 = 11;
  for(int i=6; i>0; i--){
      digitalWrite(ledPin[lado1], HIGH);
      digitalWrite(ledPin[lado2], HIGH);
      delay(50);
      lado1--;
      lado2--;
  }
  lado1 = 0;
  lado2 = 6;
  for(int i=6; i>0; i--){
      digitalWrite(ledPin[lado1], LOW);
      digitalWrite(ledPin[lado2], LOW);
      delay(50);
      lado1++;
      lado2++;
  }
}

Nenhum comentário:

Postar um comentário