top of page
conceitosbasicos

Conceitos Básicos de Programação

Iremos compreender os fundamentos da linguagem utilizada para programar o Arduino. Caso você já conheça alguma linguagem de programação, basta fazer uma “adaptação de linguagem”, ou seja, procurar se adaptar a um novo ambiente, pois os fundamentos principais são praticamente os mesmos para a maioria das linguagens.

Variáveis e Constantes

variaveisconstantes

Declaramos como constante o objeto que o seu valor não precisa ser modificado durante todo o processamento. Assim, do início ao fim da execução seu valor permanece inalterado.

Existem duas formas de declarar uma constante:

  • Utilizando a palavra reservada CONST. Exemplo:

const int LED = 10;

  • Utilizando a palavra reservada DEFINE. Exemplo:

#define PINO_A 10​

Em todas as linguagens de programação, existem as palavras reservadas. Em C++, algumas dessas palavras são:

  • TRUE – Indica um valor lógico;

  • FALSE – Indica um valor lógico;

  • HIGH – Indica que uma porta está ativada, ou seja, com 5V;

  • LOW – Indica que uma porta está desativada, ou seja, com 0V;

  • INPUT – Indica que uma porta será utilizada como entrada de dados;

  • OUTPUT – Indica que uma porta será utilizada como saída de dados.

 

As variáveis são objetos que armazenam (posição de memória) dados e seu conteúdo pode variar durante o processamento. Uma variável só pode armazenar um único valor por vez.

Sua declaração é formada por um ou mais caracteres, em que o primeiro caractere é uma letra.

Não é permitido nem para uma constante ou variável, identificadores com caracteres especiais (*, %, @, etc), palavras reservadas ou espaços em branco. Se preferir, poderá utilizar o underline (“_”).

Exemplo:

executar_Led = false;

tiposvariaveis

Tipos de Variáveis

A seguir os tipos de variáveis existentes:

  • bool - Os valores possíveis são true (1) e false (0). Ocupa um byte de memória.

exemplo: bool executar = false;

  • char - Pode ser uma letra ou um número. A faixa de valores válidos é de -128 a 127. Ocupa um byte de memória.

exemplo: char caractereA = 65; ou char led = ‘L’;

  • unsigned char - O mesmo que o char, porém a faixa de valores válidos é de 0 a 255. Ocupa um byte de memória.

exemplo: unsigned char novoChar = 240;

  • byte - A faixa de valores é de 0 a 255. Ocupa 1 byte de memória.

exemplo: byte b = B10010; // B10010 = 18 decimal;

  • Int - Armazena números inteiros e ocupa 16 bits de memória (2 bytes). A faixa de valores é de -32.768 a 32.767.

exemplo: int ledPino = 10;

  • unsigned int - O mesmo que o int, porém a faixa de valores válidos é de 0 a 65.535. Ocupa 2 bytes de memória.

exemplo: unsigned ledPino = 10;

  • word - O mesmo que um unsigned int.

exemplo: word x = 1000;

  • long - Armazena números de até 32 bits (4 bytes). A faixa de valores é de -2.147.483.648 até 2.147.483.647.

exemplo: long velocidade = 186000;

  • unsigned long - O mesmo que o long, porém a faixa de valores é de 0 até 4.294.967.295.

exemplo: unsigned long time;

  • short - Armazena número de até 16 bits (2 bytes). A faixa de valores é de -32.768 até 32.767.

exemplo: short ledPino = 10;

  • float - Armazena valores de ponto flutuante (com vírgula) e ocupa 32 bits (4 bytes) de memória. A faixa de valores é de -3.4028235E+38 até 3.4028235E+38.

exemplo: float sensorCalibrado = 1.117;

  • double - O mesmo que o float.

exemplo: double sensorCalibrado = 1.117;

  • String – Ocupa 1 Byte + x. Utilizado para coleção de variáveis.

  • Array - Ocupa 1 Byte + x. Utilizado para coleção de variáveis.

declaracaovariaveis

Declaração de Variáveis

A atribuição de valores para as variáveis e constantes são realizados com o uso do operador “=”.

Exemplos:

int efeito = 3;

int contraste = 0;

boolean aumenta = true;

Observações:

  • O Operador de atribuição não é utilizado com o comando #define;

  • A linguagem de programação do Arduino é Case Sensitive, diferenciando letras maiúsculas de minúsculas. Portanto a declaração int efeito é diferente de int Efeito.

vetoresematrizes

Vetores e Matrizes

Uma variável pode armazenar muitos valores ao longo da execução do programa, porém não ao mesmo tempo. Entretanto, existem alguns tipos de variáveis que podem armazenar mais de um valor, são conhecidas como “variáveis vetoriais”. Na programação do Arduino é possível utilizar dois tipos de “variáveis vetoriais”: Vetores e Matrizes.

Vetores

vetores

Para declarar um vetor é necessário definir o tipo e o tamanho (quantidade de itens). Um vetor é unidimensional, ou seja, uma única dimensão.
 
Exemplo: Criar um vetor de tamanho 3 (três) do tipo inteiro.
int pinLed[3] = {2,3,4};

Para atribuir um valor a uma determinada posição do vetor, basta usar o índice, ou seja, a posição onde o valor será armazenado no vetor, lembrando que a primeira posição do vetor é a posição 0 (zero).
 
Exemplo: Atribuir o valor 2 (dois) para a posição 0 (zero) do vetor:
pinLed[0] = 2;

Para acessar um valor em uma determinada posição do vetor, basta indicar a sua localização (índice).
 
Exemplo:
pinMode(pinLed[0], OUTPUT);

strings

Vetores de Strings

Quando for trabalhar com vários textos, podemos utilizar um vetor de strings.

O asterisco indica que se trata de um vetor de string.

Exemplo:

vetorstring.png
matrizes

Matrizes

Uma matriz é similar a um vetor, porém pode ser formada por duas ou mais dimensões, ou seja, é bidimensional. Este elemento possui um determinado número de linhas e de colunas.
Exemplo: Criar uma matriz 4x4 de char.

matrizes.png

Para atribuir um valor a uma determinada posição da matriz, basta usar o índice (linha e coluna).
 
Exemplo: Atribuir o valor A para a posição 1 (linha), 4 (coluna) da matriz teclas:
teclas [0] [3] = 'A';

Para acessar um determinado valor em uma posição da matriz, basta usar o índice (linha e coluna).
 
Exemplo: Ativar a porta 0 (linha), 0 (coluna) da matriz teclas:
digitalWrite(teclas[0][0],HIGH);

operadores

Operadores

Além dos dados existentes em um processamento de um programa, temos também os operadores que são elementos que indicam a realização de uma operação sobre esses tipos de dados, gerando um resultado. O termo operador é o elemento que indica a realização da operação.

aritmeticos

Operadores Aritméticos

Os operadores aritméticos são utilizados nos cálculos matemáticos, são os responsáveis pelas operações matemáticas realizadas no computador. No próximo quadro (Quadro MD1), iremos mostrar como utilizar os operadores e o grau de prioridade em um cálculo matemático.

Quadro MD1 - Operadores Aritméticos

operadoresaritmeticos.png
relacionais

Operadores Relacionais

Os operadores relacionais (Quadro MD2) permitem que sejam feitas comparações entre dois elementos, tendo como resultado um valor lógico (Verdadeiro ou Falso). Através do resultado da comparação, é possível determinar qual caminho um processamento vai seguir. Os operadores relacionais possuem o mesmo grau de prioridade entre si.

Quadro MD2 - Operadores Relacionais

operadoresrelacionais.png
logicos

Operadores Lógicos

Da mesma forma que os operadores relacionais (Quadro MD3), os operadores lógicos retornam como resultado um dos dois valores lógicos: verdadeiro ou falso.
Os operadores lógicos podem ser: conjunção (AND); disjunção (OR); e negação (NOT).

Quadro MD3 - Operadores Lógicos

operadoreslogicos.png

Operadores Lógicos de conjunção

A conjunção é uma operação lógica que relaciona dois valores lógicos (Quadro MD4) através do operador &&.
Para que o resultado lógico de saída seja verdadeiro, é necessário que os valores lógicos de entrada sejam verdadeiros.

Quadro MD4 - Operador Lógico de Conjunção

olconjucao.png

Exemplo:
     if (x==2 && y==10) {......}

Essa expressão retornará verdadeiro se ambos os operandos forem verdadeiros, ou seja, x deverá ser igual a 2 e y deverá ser igual 10, caso contrário retornará falso.

Operadores Lógicos de Disjunção

A disjunção é uma operação lógica que relaciona dois valores lógicos (Quadro MD5) através do operador ||.
Para que o resultado lógico de saída seja verdadeiro, é necessário que pelo menos um dos valores lógicos de entrada seja verdadeiro.

Quadro MD5 - Operador Lógico de Disjunção

oldisjuncao.png

Exemplo:
     if (x==2 || y==10) {......}

Essa expressão retornará verdadeiro se um ou mais operandos forem verdadeiros, ou seja, x deverá ser igual a 2 ou y deverá ser igual 10, caso contrário retornará falso.

Operadores Lógicos de Negação

Negação é uma operação lógica que gera como saída um valor lógico inverso ao valor lógico de entrada (Quadro MD6). É utilizado o operador !.

Quadro MD6 - Operador Lógico de Negação

olnegacao.png

Exemplo:
     if (!x) {......}
Essa expressão retornará verdadeiro se o operando for falso, ou seja, x deverá ser igual a 0, caso contrário retornará falso.
 
As condições podem aparecer “aninhadas”.
Exemplo:
if (x==2 || y==10 && k == 20) {......}

Grau de Prioridades

Os operadores lógicos possuem o seguinte nível de prioridade entre os operadores que devem ser obedecidas (Quadro MD7).

Quadro MD7 - Grau de Prioridade entre Operadores Lógicos

prioridadeslogicas.png

Se for necessário alterar o grau de prioridade em um determinado processamento lógico, deve-se utilizar os parênteses. Lembrando que os cálculos acontecem da esquerda para a direita.

Exemplo:
if (  x==2 && (y==10 || k == 20)  ) {......}
é diferente de:
if (  x==2 && y==10 || k == 20  ) {......}

funcoes

Funções

No Arduino é possível controlar o intervalo de execução dos componentes através das Funções. Link: https://www.arduino.cc/reference/pt/#functions.

temporizacao

Funções de Temporização

delay()
Provoca um pausa na execução do programa até iniciar a próxima instrução. Em geral, utilizamos o valor 1000 milissegundos (1 segundo).
Exemplo: delay(1000).

millis()
Retorna o número de milissegundos desde que a placa começou a executar o programa atual. Este número retorna a zero após aproximadamente 50 dias.
 
micros()
Retorna o tempo em microssegundos que a placa está executando o programa. Este número retorna a zero em aproximadamente 70 minutos.

matematicas

Funções Matemáticas

min(x, y)
Retorna o menor valor entre dois valores.
Exemplo:

min.png

Resultado: 5

max(x, y)
Retorna o maior valor entre dois valores.
 abs(x)
Calcula o valor absoluto de um número.
Exemplo:

abs.png

Resultado: 10

map(valor, menorLimiteAtual, maiorLimiteAtual, menorAlvo, maiorAlvo)
Remapeia um número inteiro de um intervalo para outro dentro de uma faixa específica. 
Parâmetros:
valor: o número a ser mapeado.
menorLImiteAtual: menor limite do intervalo atual do valor.
maiorLimiteAtual: maior limite do intervalo atual do valor.
menorAlvo: menor limite do intervalo alvo.
maiorAlvo: maior limite do intervalo alvo.
 
Exemplo:

map.png

pow(base, expoente)
Retorna o valor de um número (base) elevado a uma potência(expoente).
Exemplo:

pow.png

Resultado: 125.00

sq(x)
Retorna o quadrado de um número (x).
Exemplo:

sq.png

Resultado: 16.00

sqrt(x)
Retorna a raiz quadrada de um número (x).
Exemplo:

sqrt.png

Resultado: 4.00

constrain(x, a, b)
Restringe um número para estar dentro de um intervalo.
Parâmetros:
x: O número que deseja restringir;
a: menor valor do intervalo;
b: maior valor do intervalo.
 
Retorno:
x: se x estiver entre a e b;
a: se x é menor que a;
b: se x é maior que b.
 
Exemplo:
sensorValor = constrain(sensorValor, 10, 150);
Obs.: Restringe o valor do sensor entre os valores 10 e 150

caracteres

Funções Caracteres

isAlpha(caractere)
Analisa de o parâmetro é um caractere (uma letra). Parâmetro deverá ser do tipo char e retorna verdadeiro ou falso.

isalpha.png

isAlphaNumeric(parâmetro)
Analisa se o parâmetro é uma letra ou número. Retorna true (verdadeiro) se o parâmetro contém ou uma letra ou um número.
Exemplo:

isalphan.png
aleatorios

Funções Aleatórios

random(max)
Gera número pseudoaleatórios.
Existem duas formas de utilização: random(max) ou random(min, max).
Onde: random(max), max é o maior valor a ser gerado (-1); random(min, max), min é o menor valor do limite e max é o maior valor do limite (-1);
Exemplo:

random.png

<<<Pesquisar: funções de Conversão>>>

comentarios

Comentários

Geralmente é necessário comentar as linhas dos códigos de um programa. Utilizaremos duas maneiras:

  • Comentário de linha: //.

Exemplo:​

comentariolinha.png
  • Comentário de bloco: /*  */, utilizado para comentar mais de uma linha.

Exemplo:

comentariobloco.png
bottom of page