quarta-feira, 9 de novembro de 2011

Variáveis do Arduino


Variáveis

Uma variável é uma forma de nomear e guardar um valor para usar depois pelo programa, como dados de um sensor, ou ainda, um valor intermediário de um cálculo.

Declarando Variáveis

Antes de serem utilizadas, as variáveis devem ser declaradas. Declarar uma variável significa definir seu tipo, e opcionalmente, configurar um valor inicial (iniciar a variável). Variáveis não precisam ser iniciadas (conferidas um valor) quando estas são declaradas, mas muitas vezes se faz útil.
int inputVariable1;  // iniciando variável
int inputVariable2 = 0;     // iniciando e atribuindo valor
Programadores devem considerar o tamanho dos números que desejam guardar, escolhendo o tipo da variável. Variáveis sobrecarregam quando o valor excede o espaço designado para guardá-lo. Veja abaixo por exemplo.

Escopo da Variável

Outra escolha importante que os programadores enfrentam é onde declarar as variáveis? O lugar específico que as variáveis são declaradas influencia como várias funções do programa a enxergarão. Isto é chamado de escopo.

Iniciando Variáveis

Variáveis devem ser iniciadas (designadas um valor) no momento que elas são declaradas ou depois. É sempre uma boa prática de programação verificar que uma variável tenha dados válido dentro dela, antes de ser utilizada.
Exemplo:
int calibrationVal = 17;  // declara calibrationVal e configura seu valor
           // inicial

Sobrecarga da Variável

Quando variáveis têm seu valor excedido pela capacidade máxima do seu tipo, elas sobrecarregam e voltam para seu valor mínimo. Isto acontece em ambas  direções.
int x
   x = -32,768;
   x = x - 1;       // x contém 32,767 - sobrecarrega na direção negativa
   x = 32,767;
   x = x + 1;       // x contém -32,768 – sobrecarrega

Usando Variáveis

Uma vez que variáveis tenham sido declaradas, elas podem ser usadas configurando a variável para o valor que se deseja armazenar, através do operador de atribuição (um sinal de igual). O operador de atribuição diz ao programa para atribuir o que estiver do lado direito do sinal de igual, dentro da variável que deve ficar do lado esquerdo do sinal de igual.
inputVariable1 = 7;             // configura variável chamada inputVariable1 
        // atribuindo o valor 7
inputVariable2 = analogRead(2); // configura variável chamada inputVariable2 
        // atribuindo a voltagem lida de uma porta 
                                // analógica 2

Exemplos

int lightSensVal;
   char currentLetter;
   unsigned long speedOfLight = 186000UL;
   char errorMessage = {"escolha outra impressão"}; // vide: string 
 
Uma vez que a variável tenha sido configurada (conferida um valor), você pode testar seu valor para verificar se atende determinada condição, ou usar seu valor diretamente. Por exemplo, o código a seguir testa se o valor da variável inputVariable2 é menor que 100, então configurando um atraso (delay) baseado no valor de inputVariable2, que é no mínimo 100.
if (inputVariable2 < 100)
{
  inputVariable2 = 100;
}

delay(inputVariable2);
 
Este exemplo mostra todas as três operações úteis que se pode fazer com variáveis. Ele testa a variável (if (inputVariable2 < 100)), configura o valor 100 caso o teste tenha passado (inputVariable2 = 100), e utiliza o valor armazenado na variável como parâmetro de entrada na função delay (delay(inputVariable2)).
Nota de Estilo: Você deve nomear suas variáveis descrevendo as características do valor guardado, para fazer o código ficar mais agradável de ler. Nomes de variáveis como tiltSensor ou pushButton te ajudam (ou a qualquer um que esteja lendo seu código) a entender o que a variável representa.
Você pode nomear uma variável com qualquer palavra que você quiser, desde que não sejam as reservadas do Arduino (link para palavras reservadas). Evite nomes que comecem com números.

Alguns Tipos de Variáveis


Escopo das Variáveis

Variáveis na linguagem C, que o Arduino usa, tem uma característica conhecida por escopo. Isto é um contraste com linguagens como BASIC que qualquer variável é uma variável global.
Uma variável global é uma que pode ser vista por qualquer função dentro de um programa. Variáveis locais são apenas visíveis para a função na qual foram declaradas. No ambiente do Arduino, qualquer variável declarada fora de uma função (ex. setup, loop, etc.), é considerada uma variável global.
Quando programas começam a ficar grandes e mais complexos, variáveis locais são úteis para garantir que apenas uma função terá acesso apenas as suas próprias variáveis. Isso evita erros de programação quando uma função inadvertidamente, modifica o valor de variáveis utilizadas por outra função.
Algumas vezes é útil declarar e iniciar uma variável interna para um laço (loop). Assim criamos uma variável que possa apenas ser acessada na parte interna das chaves {} do laço-for.

Exemplo:

int gPWMval;  // qualquer função acessa essa variável

void setup()
{
  // ...
}

void loop()
{
  int i;    // "i" é apenas "visível" dentro da função "loop"
  float f;  // "f" é apenas "visível" dentro da função "loop"
  // ...

  for (int j = 0; j <100; j++){
   // variável “j” pode ser apenas 
   // acessada dentro das chaves do laço-for 
  }

}

Tradução: Renato Aloi


3 comentários:

  1. Este comentário foi removido por um administrador do blog.

    ResponderExcluir
  2. Renato tudo bem.
    Olha eu não entende essa parte "Você pode nomear uma variável com qualquer palavra que você quiser, desde que não sejam as reservadas do Arduino".

    ResponderExcluir
    Respostas
    1. Obrigado pelo seu contato e por acompanhar meu trabalho! Eu estou reunindo essas dúvidas técnicas no fórum:

      http://www.seriallink.com.br/forum

      Posta sua dúvida lá e me envia o link do post para eu poder interagir. Assim sua dúvida ajuda outras pessoas tbém...

      Abraços,
      Renato

      Excluir