Entenda os tipos de variáveis no Arduino 4

Seja na programação ou no mundo físico, sempre lidamos com diversos tipos de variáveis. Para a computação física, ou seja, aquela que interage entre esses dois mundos não é diferente. No artigo de hoje vamos estudar o que são variáveis, os tipos de variáveis no Arduino e comandos básicos.

O que são variáveis?

Como o próprio nome diz, variável pode se entender inicialmente como algo que varia conforme o tempo. No contexto da programação, trata-se de um dado que durante a execução do código ele pode ter seu conteúdo alterado.

Vamos exemplificar algo no mundo físico. Você tem uma caixa que pode armazenar diversas coisas. Em um dado momento você pode armazenar temporariamente uma bola. Depois, você pode tirar a bola e colocar uma boneca. Depois, tirar a boneca e deixar a caixa vazia.

É assim que funciona uma variável: seu conteúdo é temporário e pode variar conforme o fluxo do programa. Pode começar vazia ou ter um valor inicial.

O que podem ser estes dados armazenados? Podem ser o valor em uma conta bancária, a quantidade de frutas em uma caixa, o nome de uma pessoa, entre milhares de possibilidades. 

A memória RAM é a responsável pelos dados temporários. Um espaço de memória é utilizado para armazenar dados temporários desta variável. Os dados permanecem na memória RAM até serem armazenados em definitivo na memória permanente ou são perdidos quando o computador ou microcontrolador são desligados da alimentação.

Arduino: Tipos de variáveis

O Arduino lida com diversos tipos de dados: seja um botão pressionado ou não, o valor da temperatura medida por um sensor etc. Faremos uma relação a seguir dos tipos mais comuns de dados utilizados na plataforma Arduino.

  • Inteiros: são dados relacionados à números inteiros. Ex: quantidade de vezes que um botão foi pressionado.
  • Flutuantes: são dados relacionados à números reais, ou seja, com casas decimais. Ex: temperatura ambiente.
  • Caracteres: são dados como letras, números e caracteres especiais. Podem ser apenas um ou um conjunto, formando palavras ou mensagens inteiras. Ex: mensagem mostrada em um display.
  • Booleanos: são dados com apenas duas possibilidades, TRUE ou FALSE. Ex: botão pressionado ou não pressionado.

A partir dos dados citados anteriormente, é possível escolher os tipos de variáveis usadas em seu sketch (código) e onde aplicá-las.

Para usar uma variável, é necessário declará-la em algum lugar do código. Ou seja, ela precisa “existir” antes de ser usada. Por exemplo:

int x; // Declaração de uma variável inteira chamada x sem valor inicial.
int x = 5; // Declaração de uma variável inteira chamada x com valor inicial 5.

OBS: Não confunda o nome da variável (no nosso caso, x) com o conteúdo da variável, que no caso pode começar vazia ou conter o valor inteiro 5.

Durante toda a execução do sketch, onde estiver x será remetido a uma variável inteira com valor inicial, sendo que pode ser mudado conforme execução do código. Seu tipo, no caso, inteiro, é declarado apenas uma vez, durante utilização não é necessário colocar int (ou o outro tipo).

Para inteiros é usado int, para flutuantes float, para caractere char e para booleano, bool.

Exemplos:

int x;
float temperatura;
char dado = ‘a’;
bool R1 = TRUE;

Algumas observações:

  • O nome da variável não pode começar com um número;
  • Há diferença entre letras maiúsculas e minúsculas (case sensitive). Variável x (minúsculo) é diferente da variável X (maiúsculo);
  • O nome da variável não pode conter caracteres especiais (asterisco, vírgula, ponto, exclamação etc). O único caractere permitido é o _ (underline). Também não é possível o uso de acentos nas palavras.
  • Variáveis diferentes não podem ter o mesmo nome, isto confunde na execução do código.
  • Não defina um nome de variável com de um comando básico ou laço (condicional/repetição etc) do Arduino.
  • O sinal de = (igual) serve para atribuição de um valor. Não confundir com == (igualdade), usado em comparações.

Arduino: Comandos básicos

A programação Wiring, a utilizada na IDE Arduino, possui vários comandos básicos que a diferencia da Linguagem C/C++, de onde foi baseada. Na sequência, veremos alguns destes comandos utilizados na programação.

pinMode (pino, CONFIG);

Este comando serve para configurar o pino digital a ser utilizado. Como parâmetros, deve-se colocar qual pino estamos tratando e sua respectiva configuração (INPUT para entrada de dados e OUTPUT para saída). Caso não utilize este comando para os pinos do Arduino utilizados, o sketch não saberá se trata de uma porta de entrada ou saída de dados. Ex: Para configurar o pino 3 como saída, utilizamos o comando pinMode (3, OUTPUT);

digitalWrite (pino, ESTADO);

Este comando serve para enviar um estado lógico para um determinado pino. Como parâmetros, deve-se colocar qual pino estamos tratando e qual o seu estado lógico (LOW para 0V e HIGH para 5V). Para uso deste comando, anteriormente o pino deve ter sido configurado como saída através de pinMode. Ex: Para enviar sinal de 5V para acender um LED no pino 3, utilizamos o comando digitalWrite (3, HIGH);

digitalRead (pino);

Este comando serve para receber um sinal lógico de um determinado pino. Seu único parâmetro é indicar qual pino deve ser lido. O sinal lido pode ser LOW (0V) ou HIGH (5V). Mesmo que o sinal esteja entre estes dois valores (0 e 5V), o pino do Arduino vai associar com o valor mais próximo.

É desejável que o sinal lido seja armazenado em uma variável para verificação de condições dentre outros. Para uso deste comando, anteriormente o pino deve ter sido configurado como entrada através de pinMode. Ex: para a leitura de um sensor de presença com pino de sinal conectado ao 8 do Arduino, utilizamos o comando digitalRead (8);

analogRead (pino);

Este comando serve para receber um sinal analógico de um determinado pino. Diferente de um pino digital, o analógico identifica a variação entre 0V e 5V, considerando 1024 possibilidades de valores. 

Para uso deste comando, é necessário verificar se os pinos possuem indicação A (A0 até A5). Não é necessário utilizar o comando pinMode para configuração. Da mesma forma que digitalRead, é desejável associar o valor de leitura a uma variável. Ex: para leitura de um potenciômetro com pino de sinal em A2, utilizamos o comando analogRead (A2);

analogWrite (pino, valor);

Este comando serve para enviar um sinal PWM (pulsação por largura de pulso) a um determinado pino. A maioria dos Arduinos não possui saída analógica, mas possuem pinos de PWM para “simular” este tipo de saída. Trata-se de uma onda quadrada que oscila, mantendo-se em nível alto dado um período. Esta média da onda faz com que haja uma saída com variação entre 0 e 5V, com 256 possibilidades de valores.

Para uso deste comando, é necessário verificar se os pinos possuem indicação ~ (no Arduino Uno são 3, 5, 6, 9, 10 e 11). Não é necessário utilizar o comando pinMode para configuração. Ex: para definir a velocidade de um motor DC no pino 9 com metade de sua capacidade (0V desligado e 5V capacidade máxima), utilizamos o comando analogWrite (9, 127);

delay (tempo);

Este comando serve para definir intervalos de tempo entre comandos. A velocidade de execução de um comando no Arduino é muito rápida, na casa dos microssegundos até nanossegundos. 

Para “vermos” alguns comandos no mundo físico, precisamos de intervalos maiores. O delay utiliza intervalos em milissegundos, mais visíveis aos nossos olhos. Ex: para um intervalo de um segundo, utilizamos delay(1000);

Gostou de conhecer os tipos de variáveis e comandos básicos do Arduino? É muito importante identificá-los para compreensão e escrita dos seus próprios códigos. Deixe seu comentário logo abaixo se gostou do artigo. 

Faça seu comentário

Acesse sua conta e participe

4 Comentários

  1. otimo conteudo inicial

  2. Parabéns texto muito bem escrito com uma linguagem fácil para compreender o assunto tratado

  3. adorei.muito bem explicado.mesmo sendo que ainda tenho um pouco de dificuldades para aprender pois não entendo nada ainda de arduíno.

  4. Gedeane como sempre mostrando a que veio, com uma didática irrepreensível. Parabéns Gê, fico no aguardo de muitos outros artigos seus.