Governo do Estado de Pernambuco
Secretaria de Educação
Secretaria Executiva de Educação Profissional
Escola Técnica Estadual Professor Agamemnon Magalhães
ETEPAM
Estrutura Básica
da Linguagem Arduino
Jener Toscano Lins e Silva
Estrutura básica da linguagem
de programação Arduino
• Roda em dois blocos de comandos necessários
para a funcionalidade do programa.
Configuração (ou inicialização)
Programa que será executado (ou repetido)
Microcontroladores - Prof. Jener Toscano
2
A função setup ()
• Pode conter as declarações de quaisquer variáveis no início do
programa.
• Ela é a primeira função a ser executada no programa e é
executada apenas uma vez.
• Geralmente é utilizada para escolher o modo dos pinos bem
como inicializar a comunicação serial.
• Ela deve ser incluída em todo programa mesmo que não
tenha nenhum comando para ser executado.
Microcontroladores - Prof. Jener Toscano
3
A função loop ()
• É executada logo em sequência a função setup e inclui o código
que será executado continuamente, lendo entradas, ligando ou
desligando saídas, etc.
• Esta função é a principal em todos os programas Arduino e é ela
quem executa a maior parte do trabalho, ficando num “loop”
repetindo sem parar, permitindo que o programa mude,
responda e controle a placa do Arduino.
Microcontroladores - Prof. Jener Toscano
4
Funções
• Uma função é um bloco de código que possui um nome e um bloco
de instruções que são executadas quando a função for chamada.
• Funções próprias podem ser escritas para realizarem tarefas
repetitivas e reduzir a confusão em um programa.
• As funções são criadas primeiramente declarando seu tipo. Este tipo
será o valor que será retornado pela função.
(Por exemplo: um ‘int’ para uma função do tipo inteira)
• Depois do tipo, deve-se escrever o nome escolhido para chamar a
função e em seguida, entre parênteses, deve-se ser colocados os
parâmetros que serão passados para a função.
Microcontroladores - Prof. Jener Toscano
5
Função do tipo inteira delayVal()
• É usada para obter um valor de delay em um programa através
da leitura do valor de por exemplo: um potenciômetro.
• Primeiro ela declara uma variável local v, depois guarda em v o
valor do potenciômetro, retornado pela função analogRead().
• O valor que varia entre 0 e 1023 é dividido por 4 obtendo um
novo valor entre 0 e 255.
Microcontroladores - Prof. Jener Toscano
6
{} Chaves
• As chaves definem o inicio e o fim de um bloco de uma função
ou bloco de comandos como na função void loop() e para os
comandos for e if.
tipo função()
{
comandos;
}
– Uma chave de abertura { sempre deve ser seguida por uma chave
de fechamento }. Isto geralmente se referem ao balanceamento de
chaves. Chaves desbalanceadas podem levar a erros críticos,
impenetráveis e confusos do compilador levando a uma tarefa
árdua para descobrir o erro em um programa grande.
Microcontroladores - Prof. Jener Toscano
7
; Ponto e vírgula
• O ponto e vírgula devem ser usados para terminar um
comando e separar os elementos de um programa.
int x = 13;
//declara a variável x e atribui a ela o valor 13
– Nota: A ausência de um ponto e vírgula no término de um comando,
resultará em um erro na compilação do programa.
Microcontroladores - Prof. Jener Toscano
8
/*...*/ Blocos de Comentários
• Blocos de comentários, ou comentários de varias linhas, são
áreas de texto ignoradas pelo programa e são usadas para
textos de descrição de código ou comentários que ajudarão os
outros programadores a entenderem partes do programa.
• Eles são iniciados por /* e terminam com */ e podem ocupar
varias linhas.
• Podem ser usados para “comentar” blocos de código que são
usados apenas para fins de testes.
/* este é um bloco de comentário não esqueça de fechar o bloco de
comentários eles precisam ser fechados também! */
Microcontroladores - Prof. Jener Toscano
9
// Comentários de Linha
• Comentários de linha começam com // e terminam com a
próxima linha de código.
• Da mesma forma que os comentários de bloco, estes também
são ignorados pelo programa e não ocupam espaço algum da
memória do Arduino.
// este é um comentário de linha
• Comentários de linha são usados geralmente após um
comando para dar mais informação sobre a sua execução ou
para deixar um lembrete futuro.
Microcontroladores - Prof. Jener Toscano
10
Aritmética
• Operadores aritméticos incluem adição, subtração,
multiplicação e divisão. Eles retornam a soma, diferença,
produto ou quociente (respectivamente) de dois operandos.
–
–
–
–
y = y +3;
x = x – 7;
i = j * 6;
r = r / 5;
• A operação é conduzida pelo tipo dos operandos, por exemplo,
9 / 4 tem resultado 2, ao invés de 2.25, desde que 9 e 4 são
inteiros e são incapazes de usar casas decimais.
• Isto também significa que o resultado da operação pode
ultrapassar os limites que podem ser armazenados pelo tipo da
variável e causar problemas como um overflow.
Microcontroladores - Prof. Jener Toscano
11
Atribuições Compostas
• Atribuições Compostas são as combinações de uma operação
aritmética com a atribuição a uma variável.
• Os operadores mais comuns incluem:
–
–
–
–
–
–
x++ //o mesmo que x=x+1, ou incrementa x de +1
x- - //o mesmo que x=x-1, ou decrementa x de -1
x+=y //o mesmo que x=x+y, ou incrementa x de +y
x-=y //o mesmo que x=x-y, ou decrementa x de –y
x*=y //o mesmo que x=x*y, ou multiplica x por y
x/=y //o mesmo que x=x/y, ou divide x por y
Nota: Por exemplo, x*=3 vai triplicar o valor antigo de x e
armazenar o resultado em x.
Microcontroladores - Prof. Jener Toscano
12
Operadores de Comparação
• Comparações de uma variável ou constante com outra são
geralmente utilizadas em comandos IF para testar se uma
condição especifica é verdadeira:
–
–
–
–
–
–
x == y
x != y
x<y
x>y
x <= y
x >= y
(igual)
(diferente)
(menor que)
(maior que)
(menor igual)
(maior igual)
Microcontroladores - Prof. Jener Toscano
13
Operadores Lógicos
• Operadores lógicos são o meio comum de comparar duas
expressões e retornarem um TRUE (verdadeiro) ou FALSE (falso)
dependendo do operador.
• Existem 3 tipos de operadores lógicos, AND(E), OR(OU) e
NOT(NÃO), que são utilizados nos comandos:
– E lógico (AND):
if (x > 0 && x < 5) //é verdadeiro apenas se ambas expressões forem verdadeiras
– OU lógico (OR):
if(x > 0 || y > 0)
//é verdadeiro de pelo menos uma é verdadeira
– NÃO lógico (NOT):
if(! x > 0)
//é verdadeiro apenas se a expressão for falsa
Microcontroladores - Prof. Jener Toscano
14
Constantes
Utilizadas para tornarem os programas fáceis de ler.
• TRUE/FALSE (verdadeiro/Falso)
– São constantes do tipo booleanas que definem níveis lógicos: FALSE (0) e TRUE (1 ou
qualquer constante diferente de 0).
if (b==TRUE)
{
comandos;
}
• HIGH/LOW (Alto/Baixo)
– Estas constantes definem os níveis dos pinos como HIGH (5 volts) ou LOW (0 volts).
– digitalWrite(13,HIGH);
//faz o pino 13 ligar (ficar com 5 volts)
• INPUT/OUTPUT (Entrada/Saída)
– Constantes utilizadas em conjunto com a função pinMode() que define o modo como um
pino digital se comportará: como entrada (INPUT) ou como saída(OUTPUT).
pinMode(13,OUTPUT);
// define que o pino 13 será utilizado como saída
Microcontroladores - Prof. Jener Toscano
15
Funções Matemáticas
• min(x,y)
– Calcula o mínimo valor entre dois números de qualquer tipo e retorna o
menor dos dois.
valor = min(valor, 100); //armazena em valor o mínimo entre ele mesmo e 100
//garantindo assim que valor nunca ultrapasse 100.
• max(x,y)
– Calcula o máximo entre dois números de qualquer tipo e retorna o valor
do maior deles.
valor = max(valor, 100); //armazena em valor o máximo entre ele mesmo e 100
//garantindo assim que valor não fique abaixo de 100
Microcontroladores - Prof. Jener Toscano
16
Variáveis
• Uma variável é uma maneira de nomear e guardar um valor
numérico para uso posterior pelo programa.
– O código a seguir declara uma variável chamada “varEntrada” e então armazena
nela o valor obtido pelo pino analógico 2
int varEntrada = 0;
varEntrada = analogRead(2);
•
//declara a variável e armazena o valor 0.
//armazena o valor retornado pelo pino
//analógico 2.
Uma vez que a variável foi inicializada ou recebeu outro valor, pode-se testar
seu valor para ver se ele condiz com certas condições.
if (varEntrada < 100)
//testa de varEntrada é menor que 100
{
varEntrada = 100;
//se verdade atribui 100 a variável
}
delay (varEntrada);
//usa a variável como parâmetro do delay.
Microcontroladores - Prof. Jener Toscano
17
Declaração de Variável
• Obrigatoriamente uma variável deve começar com uma letra ou
underline (“_”) o restante pode ser letras de A a Z, maiúsculas,
minúsculas, números e o underline.
• Uma variável pode ser declarada em vários lugares em um
programa e onde ela será feita determina que partes de um
programa podem utilizá-la.
– Uma variável pode ser declarada no inicio de um programa antes de void
setup(), localmente dentro de funções e algumas vezes até dentro de
parâmetros de funções como na estrutura de repetição for.
– Uma variável global (vista por parte do programa) é declarada no início do
programa, antes da função setup().
– Já uma variável local (apenas visível dentro da função que foi declarada).
Assim é possível ter uma ou mais variáveis com o mesmo nome em
diferentes partes do programa contendo diferente valores.
• Todas as variáveis tem que ser declaradas antes de serem usadas.
• Declarar uma variável significa definir seu tipo de armazenamento
como int, long, float, etc.
Microcontroladores - Prof. Jener Toscano
18
Exemplo de declaração
de Variáveis
int valor;
// ‘valor’ é visível para qualquer função (global)
void setup()
{
//nenhum setup é necessário neste exemplo
}
void loop()
{
for (int i=0; i<20; )
{
i++;
// ‘i’ é visível apenas dentro do for
}f
float f;
// ’f’ é visível apenas dentro de loop
}
Microcontroladores - Prof. Jener Toscano
19
Tipos de Variáveis
• byte
- Armazena um valor numérico de 8 bits (0 a 255) sem ponto decimal.
- byte algumaVariavel = 180; //declara “algumaVariavel” como tipo byte
• int
- Armazenamento de números inteiros de 16 bits (32767 até -32768) sem o
ponto decimal.
- int algumaVariavel = 1500; //declara “algumaVariavel” como tipo inteiro
• long
- Armazenamento de números inteiros longos de 32 bits (2.147.483.647 até
2.147.483.648) sem o ponto decimal.
- long algumaVariavel = 90000; //declara “algumaVariavel” como tipo long
//e inicializa com o valor 90000
Microcontroladores - Prof. Jener Toscano
20
Tipos de Variáveis
• float (ponto flutuante)
- Armazenamento de números com casas decimais de 32 bits
(3,4028235E+38 até - 3,4028235E+38).
- float algumaVariavel = 3.14; //declara “algumaVariavel” como tipo float
// e inicializa com o valor 3.14
• Arrays
– É uma coleção de valores que são acessados com um número indexação.
– Um array precisa ser declarado e opcionalmente terem seus valores
inicializados antes de serem utilizados.
- int meuArray[] = {valor0, valor1, valor2...}
Exemplo:
int meuArray[5];
//declara um array de inteiros com 5 posições (de 0 a 4)
meuArray[3] = 10; //atribui ao 4º item o valor 10
x = meuArray[3];
//x agora tem o valor 10
Microcontroladores - Prof. Jener Toscano
21
Entradas e Saídas Digitais
• pinMode(pino, modo)
– Utilizado em void setup() para configurar um pino especificado e tornalo INPUT (entrada) ou OUTPUT (saída) . Exemplo:
pinMode(10, OUTPUT);
//faz o pino 10 funcionar como saída.
• digitalRead(pino)
– Lê o valor(estado lógico) do pino configurado como entrada digital
(através de constante 0 até 13 no caso do Arduino UNO) e obtém como
resultado HIGH(5 volts) ou LOW(0 volts).
valor = digitalRead(pino); //’valor’ recebe 0 ou 1 da leitura do pino ‘pino’
• digitalWrite(pino, Valor)
– Escreve o nível lógico HIGH ou LOW em um determinado pino digital. O
pino pode ser especificado através de variável ou através de constante(0
-13) no caso do Arduino UNO.
digitalWrite(pino, HIGH);
//seta o ‘pino’ (liga ou coloca 5volts no pino)
Microcontroladores - Prof. Jener Toscano
22
Programa Exemplo
Entradas e Saídas Digitais
/*O exemplo a seguir lê o estado de um botão conectado ao pino 7(configurado como
entrada digital) e liga um LED conectado ao pino 13 (configurado como saída digital)
quando o botão for pressionado*/
int led = 13;
int botao = 7;
int valor = 0;
//declara a variável led e atribui o valor 13 (pino do led)
//declara a variável botao e atribui o valor 7 (pino do botão)
//variável para armazenar temporariamente o valor lido
void setup()
{
pinMode(led, OUTPUT);
pinMode(botao, INPUT);
}
void loop()
{
valor = digitalRead(botao);
digitalWrite(led, valor);
}
//faz o pino 13 ser saída
//faz o pino 7 ser entrada
//armazena em ‘valor’ o estado lógico(1 ou 0) do pino 7
//faz o pino ‘led’ ter mesmo estado lógico que o botão
Microcontroladores - Prof. Jener Toscano
23
Projeto Contador Decimal
Pino 0 = g
Pino 1 = f
Pino 2 = a
Pino 3 = b
Pino 4 = e
Pino 5 = d
Pino 6 = c
Resistor = 240 
entre o catodo e GND.
Microcontroladores - Prof. Jener Toscano
24
Contador Decimal (Exemplo -1)
Microcontroladores - Prof. Jener Toscano
25
Contador Decimal (Exemplo -2)
Microcontroladores - Prof. Jener Toscano
26
Projeto Extra Classe Individual
• Projete um contador
hexadecimal decrescente:
– Utilize o modelo do Exemplo-2 do
slide anterior;
– Apresentar programa por escrito,
conforme montagem ao lado e
circuito funcional.
Microcontroladores - Prof. Jener Toscano
27
www.arduino.cc
Microcontroladores - Prof. Jener Toscano
28
Download

Estrutura Básica da Linguagem Arduino