Go Down

Topic: Ajuda com exercicio livro Arduino Basico (Read 5 times) previous topic - next topic

giovannimundim

Sim, o leds estao ligados corretamente.

bubulindo

Eu nem sequer compilei... mas deve ser isto que pretendes, não?

Code: [Select]

#define UP    0
#define DOWN  1

byte ledPin[] = {8, 9, 10, 11, 12, 13};

void loop() {
 
  LEDChange();
  delay(1000); //N~o ´ bonito... mas ´ para demonstrar.
 
}


void LEDChange() {
 
  static unsigned char sentido = DOWN;
  static unsigned char LED = 5;
  static unsigned char MaxH = 5;
  if (sentido == UP) {
    digitalWrite(ledPin[LED] LOW); //desliga o que estava.
    digitalWrite(ledPin[LED++]; HIGH); //liga o próximo.
    if (LED > MaxH) { //se atingimos a altura máxima...
      sentido = DOWN; //vamos para baixo.
      LED = MaxH;  //mas começamos de MaxH
    } 
  } else { //sentido = DOWN
    digitalWrite(ledPin[LED], LOW);   //desliga o anterior
    digitalWrite(ledPin[LED--], HIGH);  //liga o próximo
    if (LED < 0) {  //se chegamos ao chão
      LED = 0;   // não vamos abaixo
      sentido = UP;  //vamos para cima
      MaxH--;   // mas não chegamos tão alto quanto antes.
      if (MaxH < 0) { // Se atingimos repouso
        MaxH = 5;  // VOLTAMOS AO InÍCIO.
        LED = 5;
        sentido = DOWN;
      }
  }
}


Vê se funciona. A melhor maneira de fazer troubleshoot disto é colocar um Serial.print com os valores das variáveis para perceberes que bocado de código está a falhar.

Eu não sou o teu criado. Se respondo no fórum é para ajudar todos mediante a minha disponibilidade e disposição. Responder por mensagem pessoal iria contra o propósito do fórum e por isso evito-o.
Se realmente pretendes que eu te ajude por mensagem pessoal, então podemos chegar a um acordo e contrato onde me pagas pela ajuda que eu fornecer e poderás então definir os termos de confidencialidade do meu serviço. De forma contrária toda e qualquer ajuda que eu der tem de ser visível a todos os participantes do fórum (será boa ideia, veres o significado da palavra fórum).
Nota também que eu não me responsabilizo por parvoíces escritas neste espaço pelo que se vais seguir algo dito por mim, entende que o farás por tua conta e risco.

Dito isto, mensagens pessoais só se forem pessoais, ou seja, se já interagimos de alguma forma no passado ou se me pretendes convidar para uma churrascada com cerveja (paga por ti, obviamente).

Mortis

Filantropic:
Valeu pelos comentários, muito bem explicado rs

bubulindo:
Teu código ficou bem simples, só acho difícil explicar para novatos a variável do tipo static dentro de um método.
Eu tentei não fugir do código original, apenas adequá-lo, nem me atentei ao loop desnecessário ;)

giovannimundim: Os leds estavam ligados na sequencia correta (led1 na porta 8, led2 na porta 9, etc)?

Se não funcionar me avisa e eu tento tirar o arduino da gaveta à noite, agora estou no trabalho ^^

bubulindo


bubulindo:
Teu código ficou bem simples, só acho difícil explicar para novatos a variável do tipo static dentro de um método.
Eu tentei não fugir do código original, apenas adequá-lo, nem me atentei ao loop desnecessário ;)


Uma variável static e uma variável global, na realidade não têm muita diferenca... mas quando fazes um programa com umas quantas linhas, colocar a variável static dentro da funcão em que vai ser usada em vez de ficar perdida dentro dum ficheiro ajuda imenso na leitura do código e evitar problemas com a variável global.

Para ensinar como funciona, nada como:

- Explicar porque é que é má política usar variáveis globais.
- Dar um exercício onde é preciso uma variável global para fazer uma funcão simples.
- Dizer que se usarem o static, a variável passa a ser global (no sentido em que fica na memória), mas apenas acessível dentro daquela funcão.

podes usar o termo global_local se fizer mais sentido... :P
Eu não sou o teu criado. Se respondo no fórum é para ajudar todos mediante a minha disponibilidade e disposição. Responder por mensagem pessoal iria contra o propósito do fórum e por isso evito-o.
Se realmente pretendes que eu te ajude por mensagem pessoal, então podemos chegar a um acordo e contrato onde me pagas pela ajuda que eu fornecer e poderás então definir os termos de confidencialidade do meu serviço. De forma contrária toda e qualquer ajuda que eu der tem de ser visível a todos os participantes do fórum (será boa ideia, veres o significado da palavra fórum).
Nota também que eu não me responsabilizo por parvoíces escritas neste espaço pelo que se vais seguir algo dito por mim, entende que o farás por tua conta e risco.

Dito isto, mensagens pessoais só se forem pessoais, ou seja, se já interagimos de alguma forma no passado ou se me pretendes convidar para uma churrascada com cerveja (paga por ti, obviamente).

Mortis



bubulindo:
podes usar o termo global_local se fizer mais sentido... :P


Esse termo é mais simples kkk

Muito bem explicado, to até anotando para quando me perguntarem :D

o/

Go Up