Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

duvida em como variaveis se corportam

No código abaixo gostaria de saber por que os valores de "sequencia" podem ser "vistos" no avoid loop, não deveria ocorrer um erro por esses valores, por exemplo o sequencia[0] = led_vermelho ou o sequencia[1] = led_verde2, por não pertencerem ao mesmo escopo?

insira seu código aqui
#define led_verde 2
#define led_vermelho 3
#define led_amarelo 4
#define led_verde2 5
#define tamanho_sequencia 4

int sequencia[tamanho_sequencia];


void setup() {
  iniciaPortas();
  valoresSequencia();
  int x = 3;

}

void loop() {
  for (int indice = 0; indice < tamanho_sequencia; indice++){
     piscaLed(sequencia[indice]);
  }

}


void piscaLed(int led){
  digitalWrite(led, HIGH);
  delay(1000);
  digitalWrite(led,LOW);
  delay(500);
}

void iniciaPortas(){
  pinMode(led_verde, OUTPUT);
  pinMode(led_vermelho, OUTPUT);
  pinMode(led_amarelo, OUTPUT);
  pinMode(led_verde2, OUTPUT);
}

void valoresSequencia(){
  sequencia[0] = led_vermelho;
  sequencia[1] = led_verde2;
  sequencia[2] = led_verde;
  sequencia[3] = led_amarelo;
}
2 respostas
solução!

Oi Michael, como você está? Espero que esteja bem ^-^

A variável sequencia é declarada em escopo global, então ela é visível em todo escopo do código. Caso ela fosse definida dentro de uma função, ela teria o escopo local daquela função, impedindo assim que fosse acessada por outras funções. Por exemplo:

void valoresSequencia(){
  int sequencia[tamanho_sequencia];
  sequencia[0] = led_vermelho;
  sequencia[1] = led_verde2;
  sequencia[2] = led_verde;
  sequencia[3] = led_amarelo;
}

Quando uma variável possui o escopo global, todas as outras funções conseguem "enxergar" e modificar essa variável. Caso ela tenha um escopo local, somente a própria função consegue "enxergar" e modificar essa variável diretamente.

image

Tudo bem?!

Qualquer dúvida é só falar. Abraços e bons estudos!

Estou bem e o senhor? Muito obrigado por sua explicação

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software