Arduino Dia 3: Leds seguidores

Terceiro post da aventura, basicamente é uma melhoria do ultimo post, em que os leds andam em ordem.

Bom descobri algumas coisas importantes fazendo o teste de hoje:

  1. Planeje a ordem dos componentes, ou seja, se colocou a entrada positiva de um led na esquerda e a negativa na direita, faça isso com TODOS os outros leds, senão vai perder tempo vendo porque não funcionou o maldito led.
  2. Eu achava que gostava e lembrava de C (alias, descobri que ele salva em cpp) mas ou to com muita ferrugem ou o python me deixou acomodado. Malditos pontos e virgulas.
  3. Use um teclado decente, teclado de computador de 11,6″ dá raiva, preciso comprar um extensor de USB pra poder usar com meu desktop, que tem um gabinete fulltower maior que o monitor e as portas USB ficam a 100 metros de altura.
  4. O Youtube acha que eu tenho parkinson e quer estabilizar o meu vídeo.

Bom como de costume segue o código abaixo e o vídeo, hoje não tem figurinha porque é quase igual ao ultimo:

Código:

const unsigned int leds[] = {10, 8, 7, 5, 3, 2};
const int num_leds = 6;
const unsigned int BUTTON = 12;

void setup(){
  for(int i=0;i<num_leds;i++){
     pinMode(leds[i], OUTPUT); 
  }
  pinMode(BUTTON, INPUT);
}
int botao = LOW;
int ordem = 0;
void loop(){
  botao = digitalRead(BUTTON);
  if(botao == HIGH){
    ordem = (ordem == 0) ? 1 : 0;
  }
  if(ordem == 0){  // ordem normal
    for(int i=0;i<6;i++){
      digitalWrite(leds[i], HIGH);
      delay(100);
      digitalWrite(leds[i], LOW);
    }  
  }else{  // de tras pra frente
     for(int i=5;i>=0;i--){
      digitalWrite(leds[i], HIGH);
      delay(100);
      digitalWrite(leds[i], LOW);
    } 
  }
  delay(100);
}
Anúncios

6 comentários sobre “Arduino Dia 3: Leds seguidores

  1. Muito bom! Arruma uma estátua pra segurar a câmera que o Youtube fica de boua! =D

    Pergunta: do jeito que tá programado, se tu manter o botão pressionado (botao == HIGH) ele vai ficar trocando a ordem a cada passo do loop, certo?

    Btw, o programador em mim quer refatorar seu código:

    int TAM_LEDS = 6;

    void goSnake(int direction){
    int start = (direction > 0) ? 0 : (TAM_LEDS – 1;)
    int end = (direction > 0) ? (TAM_LEDS – 1) : 0;
    for(int i = start; i 0) ? -1 : 1;
    }
    goSnake(direction);
    delay(100);
    }

    // =D

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s