1
resposta

Diferença memorização e localização pinMode e "int ledVermelho"

Por que o pinMode colocado no setup é memorizado pra ler as instruções que estão em loop, mas o "int ledVermelho" não é memorizado do setup pro loop? Além disso, por que o pinMode não pode ser declarado fora do setup e fora do loop como foi feito com o "int ledVermelho"?

1 resposta

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

Você pode declarar o pinMode fora do setup e do loop, mas não é recomendado, isso porque você só precisa que essa função seja executada uma vez, que será para configurar quais serão os pinos de entrada e saída do seu projeto e dificilmente essas configurações irão mudar em tempo de execução, por isso é recomendado que seja chamada dentro do setup. A função setup é uma configuração padrão do programa que será chamada assim que o sketch iniciar. E ela será executada apenas uma vez após a placa ser alimentada ou então acontecer um reset. Você pode utilizar essa função setup para inicializar variáveis, configurar o modo dos pinos(INPUT ou OUTPUT), inicializar bibliotecas, etc.

Quando declaramos uma variável dentro do setup, ela será visível apenas dentro da função setup, isso se refere ao escopo de bloco da função. Por isso que quando declaramos int ledVermelho = 2; dentro do setup, a variável não será memorizada para o loop. Escopo do bloco, quer dizer funções externas não tem conhecimento sobre as variáveis que estão declaradas dentro de outras funções. É como se fosse uma caixa. A caixa 1 não tem conhecimento sobre as variáveis declaradas dentro da caixa 2 e assim por diante.

Diferentemente de declarar uma variável, estamos executando dentro do setup uma função que configura os pinos(INPUT ou OUTPUT) do arduino, e nesse caso, essa configuração será memorizada, pois não se trata de uma definição de variável, mas sim de chamar uma outra função, a pinMode . Ao chamar a função pinMode, internamente o arduino irá configurar para o nosso projeto quais serão os pinos input ou output do projeto como um todo.

O motivo da variável int ledVermelho ser declarada fora do setup, é para que ela seja vista em todo o código,a isso damos o nome de variável global. Com isso, caso dentro da função setup você queira inicializar o valor da variável int ledVermelho, não terá problemas. E dessa forma, no loop ela terá o valor que colocarmos dentro da função setup. Por exemplo:

//variável global
int ledVermelho;

void setup(){
    ledVermelho = 2;
    pinMode(ledVermelho, OUTPUT);
}


void loop(){
    digitalWrite(ledVermelho,HIGH);
    delay(1000);
    digitalWrite(ledVermelho,LOW);
    delay(500);
}

O que é ilegal fazer é declarar a variável dentro da função setup, pois, a função loop não tem conhecimento das variáveis declaradas dentro da função setup. Tudo bem?!

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

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