Buscar

Linguagem Arduino I

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 59 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 59 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 59 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Linguagem Arduino I 
 
 
 
 
 
 
 
 
 
v.2.2 
agosto/2013 
 
Leonardo Henrique Day de Toledo 
Robson Paes Machado 
Leandro Ramos 
 
 
 
 
 
A obra Linguagem Arduino foi licenciada com uma Licença Creative Commons - Atribuição - 
Uso Não Comercial - Partilha nos Mesmos Termos 3.0 Não Adaptada. 
Com base na obra disponível em www.eaduino.com.br. 
 
 
 
 
 
1 INTRODUÇÃO ................................................................................................................................. 1 
1.1 FUNDAMENTOS ............................................................................................................................ 1 
1.2 CONVENÇÃO ................................................................................................................................ 2 
1.3 O AMBIENTE DE DESENVOLVIMENTO ARDUINO ........................................................................... 2 
1.4 ESTRUTURA DE UM SKETCH ......................................................................................................... 6 
1.4.1 setup() ................................................................................................................................. 6 
1.4.2 loop() .................................................................................................................................. 6 
1.4.3 { } (chaves) ......................................................................................................................... 8 
1.4.4 ; (ponto e vírgula) .............................................................................................................. 8 
1.4.5 / * ... * / (comentários em bloco) ........................................................................................ 8 
1.4.6 / / (comentários em linha) ................................................................................................. 9 
2 VARIÁVEIS E CONSTANTES .................................................................................................... 10 
2.1 CONSTANTES PRÉ-DEFINIDAS .................................................................................................... 10 
2.1.1 false e true ........................................................................................................................ 10 
2.1.2 INPUT e OUTPUT ........................................................................................................... 11 
2.1.3 HIGH e LOW.................................................................................................................... 11 
2.2 ESCOPO ...................................................................................................................................... 12 
2.3 VOID .......................................................................................................................................... 12 
2.4 TIPOS DE DADOS ........................................................................................................................ 12 
2.4.1 boolean ............................................................................................................................. 12 
2.4.2 char .................................................................................................................................. 12 
2.4.3 unsigned char ................................................................................................................... 14 
2.4.4 byte ................................................................................................................................... 14 
2.4.5 int ..................................................................................................................................... 14 
2.4.6 unsigned int ...................................................................................................................... 14 
2.4.7 word ................................................................................................................................. 14 
2.4.8 long................................................................................................................................... 15 
2.4.9 unsigned long ................................................................................................................... 15 
2.4.10 float .................................................................................................................................. 15 
2.4.11 double ............................................................................................................................... 15 
2.5 ARRAYS ..................................................................................................................................... 16 
3 OPERADORES ............................................................................................................................... 17 
3.1 ARITMÉTICOS ............................................................................................................................ 17 
3.2 OPERADORES COMPOSTOS......................................................................................................... 17 
3.3 RELACIONAIS ............................................................................................................................. 18 
3.4 LÓGICOS .................................................................................................................................... 18 
3.5 SIZEOF........................................................................................................................................ 18 
4 COMUNICAÇÃO ........................................................................................................................... 20 
4.1 SERIAL ....................................................................................................................................... 20 
4.1.1 begin() .............................................................................................................................. 20 
4.1.2 end() ................................................................................................................................. 20 
4.1.3 available() ........................................................................................................................ 20 
4.1.4 read() ................................................................................................................................ 20 
4.1.5 print() ............................................................................................................................... 21 
4.1.6 println() ............................................................................................................................ 21 
4.1.7 write() ............................................................................................................................... 21 
5 ESTRUTURAS DE CONTROLE ................................................................................................. 23 
5.1 IF / IF...ELSE ............................................................................................................................... 23 
5.2 SWITCH…CASE .......................................................................................................................... 24 
5.3 FOR ............................................................................................................................................ 24 
5.4 WHILE ........................................................................................................................................ 25 
5.5 DO... WHILE ................................................................................................................................ 25 
6 FUNÇÕES INTERNAS ..................................................................................................................27 
 
 
6.1 PINMODE (PINO, MODO) ............................................................................................................. 27 
6.2 DIGITALREAD (PINO) ................................................................................................................. 27 
6.3 DIGITALWRITE (PINO, VALOR) ................................................................................................... 27 
6.4 ANALOGREAD (PINO) ................................................................................................................. 27 
6.5 ANALOGWRITE (PINO, VALOR)................................................................................................... 28 
6.6 DELAY(MS) ................................................................................................................................ 28 
6.7 RANDOMSEED(SEMENTE)........................................................................................................... 28 
6.8 RANDOM([MIN], MAX)................................................................................................................ 29 
6.9 MAP(VALOR, DEMINIMO, DEMAXIMO, PARAMINIMO, PARAMAXIMO) ....................................... 29 
7 ATIVIDADES ................................................................................................................................. 31 
7.1 LER STATUS DE UMA CHAVE TÁCTIL (BOTÃO) ............................................................................. 32 
7.2 MANTER O LED APAGADO ENQUANTO O BOTÃO ESTIVER PRESSIONADO................................... 34 
7.3 EXIBIR A TENSÃO PROPORCIONAL A RESISTÊNCIA DO LDR ....................................................... 36 
7.4 EXIBIR A TENSÃO CONFORME A POSIÇÃO DO POTENCIÔMETRO .................................................. 38 
7.5 MUDAR O ESTADO DO LED ATRAVÉS DO BOTÃO ....................................................................... 40 
7.6 LIGAR/DESLIGAR UM BUZZER .................................................................................................... 42 
7.7 AUMENTAR E DIMINUIR O BRILHO DE UM LED .......................................................................... 44 
7.8 LED RGB .................................................................................................................................. 46 
7.9 AUMENTAR E DIMINUIR O BRILHO DE UM LED COM POTENCIÔMETRO ...................................... 48 
7.10 CORES ALEATÓRIAS COM LED RGB ......................................................................................... 50 
7.11 MOTOR DC ................................................................................................................................ 52 
7.12 SERVO MOTOR .......................................................................................................................... 54 
7.12.1 attach( pino ) .................................................................................................................... 54 
7.12.2 write( angulo ) .................................................................................................................. 54 
8 CONCLUSÃO ................................................................................................................................. 56 
Linguagem Arduino I 
www.EADuino.com.br 
1 
 
1 Introdução 
 
1.1 Fundamentos 
 
O microcontrolador na placa Arduino é programado com a linguagem de programação 
Arduino, baseada na linguagem Wiring. O ambiente de desenvolvimento Arduino (IDE - 
Integrated Development Environment ou Ambiente Integrado de Desenvolvimento), é baseado 
no ambiente Processing. Wiring e Processing são projetos que surgiram antes do Arduino. 
Estes projetos são escritos/desenvolvidos em JAVA, C e C++. 
 
O ambiente de desenvolvimento do Arduino é um software que contém um editor de texto para 
escrever o programa, uma área de mensagens, uma barra com botões para funções mais comuns, 
e uma série de menus. Este software se conecta a placa do Arduino, através de um cabo USB, e 
transfere o programa para o mesmo. Os programas escritos para Arduino são chamados de 
sketches (esboços). 
 
Muitas coisas acontecem antes do sketch ser transferido para a placa Arduino. Primeiro é 
verificado se código está sintaticamente correto. Em seguida, o código é passado para o 
compilador avr-gcc (compilador apenas para os microcontroladores da ATMEL), transformando 
o sketch em um arquivo intermediário, conhecido como arquivo objeto. Este código é 
combinado com as bibliotecas padrão Arduino que fornecem funções básicas como 
digitalWrite(), pinMode(), etc. O resultado final é um arquivo que contém códigos 
compreensiveis pelo microcontolador. 
 
As bibliotecas (libraries) padrão Arduino são um conjunto de funções que facilitam a 
programação, evitando assim que tenhamos que escrever muito para, por exemplo, enviar um 
dado para a tela do computador ou fazer uma pausa na execução do sketch. Não precisamos nos 
preocupar em incluir estas bibliotecas padrão, pois o compilador faz isto sozinho. Porém, no 
curso Introdução à plataforma Arduino, fizemos uso de uma biblioteca não padrão, math.h, 
para usarmos a função log(). Esta e muitas outras funções são escritas para diminuir o nosso 
esforço na programação e felizmente há algumas bibliotecas que estão incluídos com o software 
Arduino e tantas outras desenvolvidas pela comunidade 
(http://arduino.cc/en/Reference/Libraries). 
 
Toda linguagem de programação, inclusive a linguagem Arduino, possui regras na escrita 
(sintaxe) que devem ser respeitadas. Muita atenção deve ser dada quando uma palavra reservada 
da linguagem possuir caracteres maiúsculos ou minúsculos. 
 
Quer saber mais sobre a plataforma Arduino e suas origens? Visite: 
 
Wiring 
http://wiring.org.co/about.html 
 
Processing 
http://processing.org/about/ 
 
Arduino 
http://arduino.cc/en/Guide/Introduction 
 
Download da última versão da IDE 
http://arduino.cc/en/Main/Software 
 
Linguagem Arduino I 
www.EADuino.com.br 
2 
 
1.2 Convenção 
 
Ao longo desta apostila adotaremos a seguinte convenção: quando alguma função ou comando 
exigir um parâmetro, este será envolvido pelos caracteres < e >, e quando for opcional pelos 
caracteres [ e ]. 
 
1.3 O ambiente de desenvolvimento Arduino 
 
Assumindo que estamos com o software devidamente instalado (ambiente Windows), localize e 
execute o arquivo arduino.exe. 
 
Obs. As telas capturadas nesta apostila são da versão 1.0.3 e a última da série 1.0.x é a 1.0.5. 
Não há diferenças entre estas versões para o que vai ser apresentado. 
 
 
 
Figura 1-1 – exemplo com o local dos arquivos Arduino em ambiente Windows. 
 
 
 
Linguagem Arduino I 
www.EADuino.com.br 
3 
 
Após a tela de apresentação o ambiente (IDE) é carregado. 
 
 
 
Figura 1-2 – ambiente de desenvolvimento Arduino 
 
 
 
 
Linguagem Arduino I 
www.EADuino.com.br 
4 
 
A partir da versão 1.0.1, lançada em maio de 2012, a IDE foi traduzida para diversos idiomas, 
inclusive o Português (Brasil e Portugal). Para alterar, vá até o menu File, Preferences. 
 
Na tela Preferences, clique em Editor language e selecione o idioma desejado e em seguida no 
botão OK. 
 
 
 
Figura 1-3 – tela de ajustes/preferências do ambiente 
 
 
 
Linguagem Arduino I 
www.EADuino.com.br 
5 
 
As operações mais usuais possuem atalhos na forma de botões. 
 
 
Figura 1-4 – botões (atalhos) para as operações mais comuns 
 
 
 
 
Verify 
Verifica se não há erros sintáticos no sketch. 
 
 
Upload 
Compila e envia o sketch para a placa Arduino. 
 
 
New 
 
Cria um novo sketch.Open 
 
Apresenta uma lista de sketches do seu sketchbook ou permite você escolher a pasta que 
contém o sketch desejado. 
 
 
Save 
 
Salva o sketch. 
 
 
Serial Monitor 
 
Abre a tela do monitor serial. 
 
Linguagem Arduino I 
www.EADuino.com.br 
6 
 
1.4 Estrutura de um sketch 
 
Um sketch (esboço) é um conjunto de códigos, instruções e declarações válidas na linguagem 
Arduino. Este agrupamento de códigos, instruções, etc, é conhecido como programa ou script 
em outras linguagens. 
 
Neste momento você precisa saber que existem duas funções especiais e obrigatórias que 
fazem parte de todo sketch Arduino: setup() e loop(). 
 
Mas o que são funções? Uma função é um bloco de código que possui um nome e uma 
sequencia de instruções/comandos (declarações) que são executados quando a função é 
chamada. Além destas duas funções obrigatórias, podemos ter as nossas próprias funções. As 
funções ajudam a organizar o código, tornando-os mais estruturados e em muitas vezes, 
evitando que tarefas repetitivas sejam escritas novamente. 
 
Uma função é declarada atribuindo um tipo, um nome e opcionalmente os parâmetros que serão 
passados para dentro da função. Mesmo que uma função não possua parâmetros de entrada, o 
uso do ( e ), abre e fecha parênteses, é obrigatório. 
 
tipo nomeDaFunção (parâmetros) { 
 declarações; 
} 
 
A estrutura acima será explicada ao seu tempo. Com os exemplos, você verá que é 
relativamente simples usar/criar funções. 
 
 
1.4.1 setup() 
 
Esta função é executada logo após o inicio do sketch. O que estiver no bloco setup(), é 
executado apenas uma vez, ou toda vez que o Arduino for reiniciado (pressionando um botão 
específico na placa ou quando da falta de energia). 
 
1.4.2 loop() 
 
Após a execução da função setup(), o controle do programa vai para o bloco loop() e como o 
nome sugere, fica “eternamente” neste bloco. Aqui, efetivamente, instruímos o Arduino a fazer 
o que queremos. 
 
 
Linguagem Arduino I 
www.EADuino.com.br 
7 
 
Exemplo 
 
Estas duas funções são tão importantes e obrigatórias que a equipe do Arduino colocou como 
exemplo um sketch somente com este conteúdo. Clique no botão Open e selecione 01. Basics, 
BareMinimum. 
 
 
Figura 1-5 – menu de exemplos 
 
 
 
 
Figura 1-6 – estrutura mínima de um sketch 
 
Linguagem Arduino I 
www.EADuino.com.br 
8 
 
1.4.3 { } (chaves) 
 
As chaves definem o início e o fim de blocos de funções ou blocos de instruções. 
Uma chave de abertura { deve possuir o seu correspondente, uma chave de fechamento }. 
Chaves não balanceadas, sem o seu par correspondente, geram erros no momento da compilação 
do sketch. 
 
O IDE facilita a localizar a outra chave (abertura ou fechamento) simplesmente posicionando o 
cursor em uma chave e a sua corrrespondente será destacada. Porém se o sketch for muito 
extenso, localizar uma chave de fechamento pode ser muito trabalhoso. Como boa prática de 
programação toda vez que abrir uma chave, tecle ENTER para abrir uma nova linha e 
imediatamente feche a chave. Assim evitamos aborrecimentos futuros. 
 
 
 
Figura 1-7 – abertura e fechamento de um bloco 
 
 
 
1.4.4 ; (ponto e vírgula) 
 
O ; deve ser usado para terminar uma declaração. Também é usado para separar os elementos 
de uma estrutura for. 
 
Linhas terminadas sem um ponto e vírgula, irão gerar erros de compilação. 
 
 
1.4.5 / * ... * / (comentários em bloco) 
 
Comentários em bloco são áreas de textos usados para esclarecer certos trechos do código. Isto 
facilita em muito a manutenção de um sketch longo. Em resumo, é uma forma de documentar o 
projeto. 
Todo texto que estiver / * e * / será ignorado pelo compilador, ou seja, não irá ocupar o espaço 
da memória destinada ao sketch. Então, use e abuse deste recurso. 
 
 
 
 
Linguagem Arduino I 
www.EADuino.com.br 
9 
 
 
1.4.6 / / (comentários em linha) 
 
Qualquer texto que estiver após o // será considerado comentário e sendo assim, ignorado pelo 
compilador. Comentários de linha são muitas vezes utilizados após uma declaração válida para 
dar detalhes sobre esta declaração. 
 
 
 
Figura 1-8 – tipos de comentários 
 
 
 
Linguagem Arduino I 
www.EADuino.com.br 
10 
 
2 Variáveis e Constantes 
 
Uma variável é uma maneira de nomear e armazenar um valor na memória do microcontolador 
para uso posterior pelo sketch. Como o termo sugere, as variáveis podem ter seu conteúdo 
continuamente alterado. A variável precisa ser declarada (tipo e nome) e, opcionalmente, 
receber um valor. 
 
Variáveis devem ser nomeadas para indicar a sua finalidade, para tornar o código mais legível e 
consequentemente mais fácil de ser mantido. Evite usar nomes com apenas um caractere. 
 
Uma variável pode ser declarada em vários locais ao longo do sketch. O local onde essa 
definição se dá, determina a sua visibilidade, ou seja, o seu escopo (abrangência). 
 
Exemplo 
 
int pino = 5; 
 
int é o tipo do dado 
pino é o nome da variável 
= é o sinal de atribuição 
5 é o valor atribuído a pino 
 
 
Já uma constante, é um local na memória cujo valor não se altera. Após a declaração não 
podemos alterar o seu valor. A constante precisa ser declarada (tipo e nome) e 
obrigatóriamente receber um valor. Para esta finalidade, usamos a palavra chave reservada 
const. 
 
Exemplo 
 
const int pino = 5; 
 
const é a palavra chave que qualifica a variável como constante 
int é o tipo do dado 
pino é o nome da variável 
= é o sinal de atribuição 
5 é o valor atribuído a pino 
 
 
2.1 Constantes pré-definidas 
 
A linguagem Arduino possui algumas constantes pré-definidas. Elas são usadas para tornar os 
programas mais legíveis. 
 
2.1.1 false e true 
 
Dois estados lógicos indicando respectivamente falso e verdadeiro. Atribuimos estes valores 
em variáveis do tipo boolean para sinalizar certas condições no sketch. 
 
Obs.: na linguagem Arduino qualquer número inteiro diferente de zero é verdadeiro e zero é 
falso. 
 
Linguagem Arduino I 
www.EADuino.com.br 
11 
 
2.1.2 INPUT e OUTPUT 
 
Os pinos digitais podem ser configurados como entrada ou saída. A função para mudar o estado 
de um pino digital é pinMode(). 
 
 
2.1.3 HIGH e LOW 
 
Um de dois valores possíveis (níveis de tensão) que um pino digital pode ser configurado. As 
funções para alterar estes níveis são: digitalWrite() e digitalRead(). 
 
HIGH 
 
Quando um pino é configurado como INPUT e lido com digitalRead(), o microcontrolador irá 
informar HIGH se uma tensão de 3 volts ou mais estiver presente neste pino. 
 
Quando um pino é configurado como OUTPUT e definido como HIGH com digitalWrite(), este 
pino estará com 5 volts. 
 
LOW 
 
Quando um pino é configurado como um INPUT e lido com digitalRead(), o microcontrolador 
irá informar LOW se uma tensão de 2 volts ou menos estiver presente no pino. 
 
Quando um pino é configurado como OUTPUT e definido como LOW com digitalWrite(), o 
pino estará com 0 volts. 
 
 
Obs: as constantes true e false são digitados em letras minúsculas, o que não ocorre com 
HIGH, INPUT, LOW, e OUTPUT. 
 
Exemplos 
 
pinMode( 12, INPUT ); // configura o pino 12 como entrada 
pinMode( 13, OUTPUT ); // configura o pino 13 como saída 
digitalWrite( 13, HIGH ); // coloca 5V no pino 13 
 
 
Linguagem Arduino I 
www.EADuino.com.br 
12 
 
2.2 Escopo 
 
Uma variável pode ser declarada no início do sketch, antes de void setup (), localmente dentro 
defunções (setup() ou loop() por exemplo), ou em uma estrutura for. 
 
Se for declarada no início do sketch, o seu escopo será dito global. Variáveis globais são vistas 
por todas as funções. Se for declarada dentro de uma função ou como parte de uma estrutura 
for, será dito local, ou seja, só é visível e só pode ser usada dentro da função em que foi 
declarada. Portanto, é possível ter duas ou mais variáveis de mesmo nome em diferentes 
funções, pois são tratadas em locais diferentes na memória, apesar de não ser uma prática 
comum. As variáveis de escopo locais asseguram que apenas aquela função onde a variável foi 
declarada pode manipular o seu conteúdo. 
 
2.3 void 
 
A palavra chave void (vazio, nulo) é utilizada apenas nas declarações de função. Ele indica que 
a função não irá retonar valor algum. 
 
Exemplo 
 
void setup() { 
} 
 
 
2.4 Tipos de Dados 
 
2.4.1 boolean 
 
Neste tipo de dado podemos ter apenas os valores 0 ou 1, ou ainda as constantes, false ou true. 
Este tipo de dado ocupa um byte de memória. 
 
Exemplo 
 
boolean ativo = false; 
 
 
2.4.2 char 
 
O tipo de dado char armazena caracteres como o caractere A, por exemplo, na forma numérica, 
isto é, o correspondente numérico do caractere que queremos armazenar. A faixa de valores 
para este tipo de dado (na forma numérica) é de -128 a 127 e o espaço ocupado em memória é 
de um byte. 
 
Neste exemplo, o caractere maiúsculo A corresponde ao valor 65 na tabela ASCII (American 
Standard Code for Information Interchange), um padrão desenvolvido nos anos 1960 para 
representar textos em computadores. A tabela ASCII padrão vai de 0 a 127. 
 
 
Linguagem Arduino I 
www.EADuino.com.br 
13 
 
Neste endereço http://arduino.cc/en/Reference/ASCIIchart , você tem a tabela ASCII com todos 
os caracteres que podem ser representados e armazenados no tipo de dado char. Reproduzimos 
abaixo o conjunto de caracteres mais comuns: 
 
 
valor decimal caractere valor decimal caractere valor decimal caractere 
33 ! 66 B 99 c 
34 " 67 C 100 d 
35 # 68 D 101 e 
36 $ 69 E 102 f 
37 % 70 F 103 g 
38 & 71 G 104 h 
39 ' 72 H 105 i 
40 ( 73 I 106 j 
41 ) 74 J 107 k 
42 * 75 K 108 l 
43 + 76 L 109 m 
44 , 77 M 110 n 
45 - 78 N 111 o 
46 . 79 O 112 p 
47 / 80 P 113 q 
48 0 81 Q 114 r 
49 1 82 R 115 s 
50 2 83 S 116 t 
51 3 84 T 117 u 
52 4 85 U 118 v 
53 5 86 V 119 w 
54 6 87 W 120 x 
55 7 88 X 121 y 
56 8 89 Y 122 z 
57 9 90 Z 123 { 
58 : 91 [ 124 | 
59 ; 92 \ 125 } 
60 < 93 ] 126 ~ 
61 = 94 ^ 
62 > 95 _ 
63 ? 96 ` 
64 @ 97 a 
65 A 98 b 
 
 
Os valores iniciais desta tabela (0 a 31) são códigos de controle usados em vários equipamentos 
de impressão, vídeo, comunicação, etc, e o código 32 representa o espaço em branco. 
 
 
Linguagem Arduino I 
www.EADuino.com.br 
14 
 
Para atribuir um valor a uma variável do tipo char, podemos usar o seu valor numérico presente 
na tabela ASCII ou o próprio caractere envolvido por aspa simples. Então, caractere = 65 é o 
mesmo que caractere = ‘A’. 
 
Como char armazena um valor numérico, podemos fazer operações aritméticas com este tipo de 
dado, apesar de não ser algo comum. Então, caractere = 65 + 1 é o mesmo que caractere = 
‘B’. 
 
Exemplos 
 
char caractere; // declara a variável caractere, tipo char 
char novoCaractere; // declara a variável novoCaractere, tipo char 
caractere = 65; // atribui o valor 65 a variável caractere 
novoCaractere = caractere + 1; // atribui o resultado da operação a variável 
 novoCaractere 
caractere = ‘C’; 
novoCaractere = caractere - 2; 
 
 
2.4.3 unsigned char 
 
O mesmo que char, exceto que o qualificador unsigned altera a faixa de valores possíveis: 0 a 
255. Com esta faixa podemos estender o conjunto de caracteres, porém é altamente dependente 
da configuração do ambiente operacional onde o software Arduino é executado. 
 
 
2.4.4 byte 
 
Este tipo de dado armazena valores numéricos inteiros de 0 a 255. Ocupa um byte de memória. 
 
 
2.4.5 int 
 
int manipula números inteiros, sem casas decimais, na faixa de 32767 a -32768. Este tipo de 
dado ocupa dois bytes de memória. 
 
 
2.4.6 unsigned int 
 
O mesmo que int, exceto que o qualificador usigned altera a faixa de valores: 0 a 65535. 
 
Exemplo 
 
unsigned int totalLeitura = 50000; 
 
 
2.4.7 word 
 
O mesmo que unsigned int. 
 
Exemplo 
 
word totalLeitura = 50000; 
 
 
Linguagem Arduino I 
www.EADuino.com.br 
15 
 
2.4.8 long 
 
Um tipo de dado que manipula valores inteiros na faixa de -2147483648 a 2147483647 e ocupa 
quatro bytes de memória. 
 
Exemplo 
 
long totalLeitura; 
 
 
2.4.9 unsigned long 
 
O mesmo que long, exceto que o qualificador unsigned altera a faixa de valores: 0 a 
4294967295. 
 
Exemplo 
 
unsigned long totalLeitura; 
 
 
2.4.10 float 
 
O tipo float permite manipular números em ponto flutuante (ponto decimal). Use somente este 
tipo de dado onde números inteiros não se aplicam. Ocupa quatro bytes de memória e faixa de 
valores é de -3.4028235E+38 a 3.4028235E+38. 
 
Exemplo 
 
float totalLeitura = 3.16; 
 
 
2.4.11 double 
 
O tipo double, assim como o float, permite manipular números em ponto flutuante (ponto 
decimal). Até o momento, na linguagem Arduino estes tipos são exatamente iguais. 
 
Exemplo 
 
double totalLeitura = 234.56; 
 
 
Linguagem Arduino I 
www.EADuino.com.br 
16 
 
2.5 Arrays 
 
Uma array é uma coleção de valores numéricos ou caracteres. Um item qualquer desta coleção 
é acessado através de um número que indica a posição deste item dentro da coleção, conhecido 
por índice. A declaração de um array inicia com o tipo de dado, um nome e opcionalmente o 
número de elementos que compõe esta coleção. É importantíssimo saber que arrays na 
linguagem Arduino iniciam em zero, ou seja, o primeiro item da coleção tem o índice zero. 
 
Exemplos 
 
int numeros[4]; // numeros é uma coleção de quatro inteiros 
 cujo índice inicia em 0 e termina em 3 
 
Outra forma de declarar um array, sem indicar o número de elementos: 
 
int numeros[] = {2, 4, 8, 3, 6, 0}; 
 
Declarando um array de caracteres: 
 
char caracteres[] = {‘a’, ‘t’, ‘8’, ‘3’}; 
 
Uma forma de armazenar uma cadeia de caracteres, conhecido como string: 
 
char mensagem[] = "Curso Linguagem Arduino"; 
 
Importante acrescentar que quando uma string é atribuída a um array, o seu tamanho será a 
quantidade de caracteres na string mais o caractere terminador null (‘\0’) que é anexado 
automaticamente. O mesmo não ocorre quando você atribui caractere a caractere a um array. 
A linguagem Arduino não faz o controle dos limites de um tipo de dado, principalmente de um 
array. Se você ultrapassa as fronteiras de um tipo de dado, resultados inesperados são esperados 
. 
Mais adiante veremos uma estrutura (for) que facilitará em muito a navegação pelos elementos 
de um array. 
 
Obs.: a linguagem Arduino permite o uso de arrays de múltiplas dimensões. Veremos como no 
curso Linguagem Arduino II. 
 
Linguagem Arduino I 
www.EADuino.com.br 
17 
 
3 Operadores 
 
Operadores são símbolos que agregados às constantes e variáveis, formam as expressões. 
 
Os operadores que veremos a seguir são agrupados conforme seu uso/aplicação. São eles: 
 Aritméticos 
 Relacionais 
 Lógicos 
 
 
3.1 Aritméticos 
 
Operadoresaritméticos incluem adição, subtração, multiplicação e divisão. A expressão retorna 
a soma, diferença, produto ou quociente dos operandos. Neste grupo temos ainda o operador de 
atribuição e resto de uma divisão. 
 
 = (atribuição) 
 + (adição) 
 - (subtração) 
 * (multiplicação) 
 / (divisão) 
 % (módulo – resto da divisão) 
 
 
3.2 Operadores Compostos 
 
Este é um recurso bem interessante. Os operadores compostos permitem combinar uma 
operação com uma atribuição de variável ou incremento/decremento do valor de uma variável. 
 
 ++ (incremento) 
 -- (decremento) 
 += (adição composta) 
 -= (subtração composta) 
 *= (multiplicação composta) 
 /= (divisão composta) 
 
 
Linguagem Arduino I 
www.EADuino.com.br 
18 
 
3.3 Relacionais 
 
Estes operadores permitem fazermos comparações entre uma variável e um valor ou entre 
variáveis. São eles: 
 
 == (igual a) 
 != (diferente, não igual a) 
 < (menor que) 
 > (maior que) 
 <= (menor ou igual a) 
 >= (maior ou igual a) 
 
 
 
Obs: não confunda o operador de atribuição = com o operador relacional == (dois sinais de 
iguais). Este é erro muito comum para os que estão iniciando. 
 
 
 
3.4 Lógicos 
 
Os operadores lógicos ou booleanos são usados para “ligar” duas ou mais comparações e o 
resultado desta comparação sempre será true ou false. Existem três operadores lógicos: 
 
 && (and - e) 
 || (or - ou) 
 ! (not - não) 
 
 
3.5 sizeof 
 
sizeof(variável) 
 
O operador sizeof retorna o número de bytes (tamanho) que representa o tipo de dado da 
variável. Este operador é muito útil com arrays e aqui vale lembrar que se o array for de 
caracteres, o tamanho será o total mais um para o terminador null (‘\0’). 
 
 
No exemplo a seguir vamos utilizar os tópicos apresentados anteriormente. Estude, com muita 
tranquilidade , e se ficar alguma dúvida escreva para suporte@eaduino.com.br. 
 
 
 
 
Linguagem Arduino I 
www.EADuino.com.br 
19 
 
Exemplo 01 
 
Digite o sketch abaixo ou copie e cole na IDE do Arduino e veja o resultado no monitor serial. 
 
/* 
 Linguagem Arduino I - Exemplo 01 
 */ 
 
float numero = 5; 
float resultado; 
int numero_inteiro = 123.45; 
char texto[] = "Arduino"; 
 
void setup() { 
 Serial.begin(9600); 
 resultado = 4 + numero; 
 exibeResultado(); 
 resultado = numero * 2; 
 exibeResultado(); 
 resultado = 47 / 2.5; 
 exibeResultado(); 
 resultado = (int) numero % 2; 
 exibeResultado(); 
 resultado = numero_inteiro; 
 exibeResultado(); 
 Serial.println("----------"); 
 resultado++; 
 exibeResultado(); 
 resultado--; 
 exibeResultado(); 
 resultado -= 3; 
 exibeResultado(); 
 resultado *= 5; 
 exibeResultado(); 
 Serial.println("----------"); 
 resultado = sizeof( numero ); 
 exibeResultado(); 
 resultado = sizeof( numero_inteiro ); 
 exibeResultado(); 
 resultado = sizeof( texto ); 
 exibeResultado(); 
} 
 
void loop() { 
} 
 
void exibeResultado() { 
 Serial.println( resultado ); 
 return; 
} 
Linguagem Arduino I 
www.EADuino.com.br 
20 
 
 
4 Comunicação 
 
4.1 Serial 
 
Este objeto é usado para comunicação serial entre a placa Arduino e qualquer outro dispositivo 
que aceite comunicação serial. Quando em uso, o Arduino utiliza os pinos digitais 0 (RX - 
recepção) e 1 (TX - transmissão) para a comunicação, portanto não use estes pinos para entrada 
ou saída. Veremos os seguintes métodos: 
 
 begin() 
 end() 
 available() 
 read() 
 print() 
 println() 
 write() 
 
4.1.1 begin() 
 
Serial.begin( <velocidade> ) inicia a comunicação com os pinos seriais na velocidade 
informada. A unidade é bps (bits por segundo). Esta é a velocidade que a placa Arduino irá 
enviar os dados para o computador e os valores possíveis são: 300, 1200, 2400, 4800, 9600, 
14400, 19200, 28800, 38400, 57600, ou 115200. Porém, pode-se colocar outro valor caso o 
dispositivo com o qual você quer comunicar exija uma configuração diferente. 
 
Exemplo 
 
Serial.begin( 9600 ); // inicia a comunicação a 9600bps 
 
 
4.1.2 end() 
 
Serial.end() desativa a comunicação serial, permitindo que os pinos 0 e 1 possam ser usados 
para entrada e saída. Para reativar a comunicação serial use Serial.begin (). 
 
 
4.1.3 available() 
 
Serial.available() obtém o número de bytes disponíveis para leitura. Os dados que chegam pela 
serial são armazenados em uma pequena área (buffer) de memória, cujo tamanho é de 64 bytes. 
 
 
4.1.4 read() 
 
Serial.read() lê o primeiro byte da entrada serial. Retorna -1 caso não haja dado. 
 
 
Linguagem Arduino I 
www.EADuino.com.br 
21 
 
4.1.5 print() 
 
Serial.print( <dados> [,<formato>]) envia dados para o monitor serial e opcionalmente 
formatados como os seguintes parâmetros: BIN (binário ou base 2), OCT (octal ou base 8), 
DEC (decimal ou base 10) e HEX (hexadecimal ou base 16). Este método também aceita 
alguns caracteres de controle para o auxilio da impressão. Caracteres de controle são códigos da 
tabela ASCII que por si só não imprimíveis. 
 
 
Obs.: neste nosso contexto, impressão significa os dados exibidos no monitor serial. 
 
Algumas características importantes: 
 
 Após a impressão, o cursor fica posicionado na próxima coluna. 
 Os caracteres de controle \n (new line – nova linha) e \r (carriage return – retorno do 
cursor para primeira coluna) avançam o cursor para a próxima linha 
 Um caractere de controle muito útil para formatar a saída de dados é o \t (TAB – 
tabulação). O avanço é de oito posições. 
 Números float são exibidos, por padrão, com apenas duas casas decimais. 
 
 
4.1.6 println() 
 
O mesmo que Serial.print(), exceto que após a impressão o cursor vai a próxima linha. 
 
4.1.7 write() 
 
Serial.write( <dados> ) envia dados binários para a porta serial. Estes dados são enviados 
como um byte ou uma série de bytes. Este método retorna o número de bytes enviados. 
 
 
Obs.: O controle e manipulação de dados via serial não é algo tão simples de implementar. Este 
curso tem o objetivo de introduzi-lo na linguagem e por isso não nos aprofundamos no assunto. 
No curso Linguagem Arduino II há um capítulo dedicado com mais exemplos. 
 
Linguagem Arduino I 
www.EADuino.com.br 
22 
 
Exemplo 02 
 
Digite o sketch abaixo ou copie e cole na IDE do Arduino e veja o resultado no monitor serial. 
 
 
 
/* 
 Linguagem Arduino I - Exemplo 02 
*/ 
 
void setup() { 
 Serial.begin(9600); 
 int valor = 65; 
 Serial.print(valor); 
 Serial.print("\t"); 
 Serial.print(valor, DEC); 
 Serial.print("\t"); 
 Serial.print(valor, HEX); 
 Serial.print("\t"); 
 Serial.print(valor, OCT); 
 Serial.print("\t"); 
 Serial.print(valor, BIN); 
 Serial.println(' '); 
 Serial.write(45); 
 Serial.println(' '); 
 int bytesEnviados = Serial.write("Arduino"); 
 Serial.print("\tnumero de caracteres = "); 
 Serial.println( bytesEnviados ); 
} 
 
void loop() { 
 
} 
 
Linguagem Arduino I 
www.EADuino.com.br 
23 
 
5 Estruturas de Controle 
 
As estruturas de controle determinam o fluxo que o sketch deve seguir baseado em testes e 
comparações. A estrutura mais simples e comum é a sequencial, onde as instruções são executas 
uma após a outra sem interrupção. Porém se não houve outras como repetição e teste, o nossosketch não poderá “tomar uma decisão” baseado nos valores que os circuitos eletrônicos, por 
exemplo, enviam para a placa Arduino. Na linguagem Arduino temos: 
 
 if / if...else 
 switch case 
 for 
 while 
 do... while 
 
 
5.1 if / if...else 
 
if(<expressão> ) { 
 
} 
[ else { 
 
} ] 
 
Esta estrutura avalia a expressão estabelecida no comando. Caso ela seja verdadeira, isto é, se o 
resultado da avaliação atender a condição, as declarações que estiverem dentro do bloco serão 
executadas. A estrutura if possui um elemento auxiliar, opcional, que é a condição contrária a 
avaliação feita pelo if, ou seja, se a condição for falsa as declarações que estiverem dentro do 
bloco else serão executadas. 
 
Exemplo 
 
int pinoLED = 13; 
int estadoBotao; 
 
if (estadoBotao == HIGH) { 
 digitalWrite(pinoLED, HIGH); 
} 
else { 
 digitalWrite(pinoLED, LOW); 
} 
 
 
 
Obs.: Atenção mais uma vez ao sinal == que representa o operador de comparação. 
 
Linguagem Arduino I 
www.EADuino.com.br 
24 
 
5.2 switch…case 
 
switch ( <variável> ) { 
 case <valor>: 
 // declarações 
 break; 
 case <valor>: 
 // declarações 
 break; 
 . 
 . 
 . 
 [ default: 
 // declarações ] 
} 
 
Esta estrutura é muito interessante. É uma alternativa a estrutura if quando temos muitos itens 
para serem testados. break desvia o fluxo para o fim da estrutura switch...case. Se não 
colocarmos este “ponto de ruptura”, todos os cases serão executados até o fim da estrutura. 
default se assemelha ao else da estrutura if, se nenhum case for satisfeito default é executado. 
 
Exemplo: 
 
 var = analogRead( 0 ); 
 switch (var) { 
 case 1: 
 // faça alguma coisa se o valor for 1 e após vá para o fim de switch...case 
 break; 
 case 2: 
 // faça alguma coisa se o valor for 2 e após vá para o fim de switch...case 
 break; 
 default: 
 // caso contrário faça isto... 
 Serial.println( var ); 
 } 
 
 
5.3 for 
 
for( [início] ; [condição] ; [incremento] ) { 
 
} 
 
A estrutura for é uma das mais versáteis da linguagem Arduino. As declarações (dentro deste 
bloco) são repetidas até que a condição estabelecida seja verdadeira. 
 
Exemplo 
 
int intensidade; 
for( intensidade = 0 ; intensidade <= 255; intensidade++) { 
 Serial.println( intensidade ); 
} 
 
 
Linguagem Arduino I 
www.EADuino.com.br 
25 
 
5.4 while 
 
while( <expressão> ){ 
 // declarações 
} 
 
A estrutura while repete as declarações enquanto a expressão resultar e um valor verdadeiro, ou 
seja, esta estrutura só termina quando a expressão se tornar falsa. 
 
Exemplo 
 
var = 0; 
while(var < 200){ 
 var++; 
 Serial.println( var ); 
} 
 
 
5.5 do... while 
 
do { 
 // declarações 
} while( <expressão> ); 
 
do...while executa pelo menos uma vez as declarações para então avaliar a expressão. Se 
verdadeira, continua a executar até que a expressão se torne falsa. 
Exemplo 
 
var = 0; 
do { 
 Serial.println( var ); 
 var++; 
} while(var < 200); 
 
 
Obs.: for, while e do...while são estrutras de repetição (loop – laço) e o comando break, apesar 
de muito usado na estrutura switch...case, também pode ser aplicado nas estruturas de repetição 
para interromper um laço. 
 
 
Linguagem Arduino I 
www.EADuino.com.br 
26 
 
Exemplo 03 
Digite o sketch abaixo ou copie e cole na IDE do Arduino e veja o resultado no monitor serial. 
 
/* 
 Linguagem Arduino I - Exemplo 03 
 */ 
 
char texto[] = "Linguagem Arduino I"; 
int tamanho = sizeof( texto ) - 1; 
 
void setup() { 
 Serial.begin(9600); 
 Serial.print("Tamanho da string = "); 
 Serial.println( tamanho ); 
 
 for( int i = 0; i < tamanho; i++ ) { 
 Serial.print( texto[i] ); 
 Serial.print( ' ' ); 
 } 
 
 Serial.println( ' ' ); 
 for( int i = tamanho - 1; i >= 0 ; i-- ) { 
 Serial.print( texto[i] ); 
 Serial.print( ' ' ); 
 } 
} 
 
void loop() { 
 
} 
 
Linguagem Arduino I 
www.EADuino.com.br 
27 
 
6 Funções Internas 
 
6.1 pinMode (pino, modo) 
 
Usado na função setup() para configurar um pino no modo de entrada ou saída. 
 
Os pinos digitais, por padrão são configurados para entrada e não precisam ser declarados. 
Normalmente o fazemos para manter o sketch mais fácil de ser lido. 
 
O modo é uma das duas constantes pré-definidas: INPUT ou OUTPUT. 
 
Exemplo 
 
pinMode( 5, OUTPUT ); // configura o pino 5 como saida 
pinMode( 9, INPUT ); // configura o pino 9 como entrada 
 
 
6.2 digitalRead (pino) 
 
Lê o valor de um pino digital. O retorno será um dos dois valores possíveis: HIGH ou LOW. 
 
Exemplo 
 
byte retorno; 
pinMode( 9, INPUT ); // configura o pino 9 como entrada 
retorno = digitalRead( 9 ); // le o valor do pino 9 
 
 
6.3 digitalWrite (pino, valor) 
 
Escreve um valor HIGH ou LOW em pinos digitais. 
 
Exemplo 
 
byte saida = HIGH; 
pinMode( 9, OUTPUT ); // configura o pino 9 como saida 
digitalWrite( 9, saida ); // escreve no pino 9 
 
 
6.4 analogRead (pino) 
 
Lê o valor de um pino analógico. O retorno estará entre 0 e 1023, sendo que 0 representa 0 volts 
e 1023 representa 5 volts, ou seja, temos 1024 intervalos de 0.004882 volts. 
 
Exemplo 
 
int leitura; 
leitura = analogRead( 0 ); // le o valor do pino analogico 0 
 
 
 
Linguagem Arduino I 
www.EADuino.com.br 
28 
 
6.5 analogWrite (pino, valor) 
 
Escreve um valor pseudo-analógico nos pinos digitais 3, 5, 6, 9, 10 e 11 (estes pinos são válidos 
para as placas que utilizam o microcontrolador ATmega168 e Atmega328), utilizando uma 
técnica conhecida com PWM (pulse width modulation – modulação por largura de pulso). 
 
Qualquer valor intermediário vai gerar uma tensão proporcional a este valor. Por exemplo, veja 
a tabela abaixo: 
 
Valor PWM Volts 
0 0 
64 1,25 
127 2,5 
191 3,75 
255 5 
 
Exemplo 
 
byte saida = 127; 
analogWrite( 9, saida ); // escreve no pino 9 o correspondente a 2,5 volts 
 
 
6.6 delay(ms) 
 
Pausa um sketch para a quantidade de tempo especificado. Este tempo é em milissegundos, 
onde 1000 é igual a 1 segundo. 
 
Exemplo 
 
delay( 3000 ); // pausa a execução do sketch por 3 segundos 
 
 
6.7 randomSeed(semente) 
 
Esta função inicializa o gerador de números pseudo aleatórios usando como parâmetro a 
semente. Se semente é um valor fixo, a sequência gerada será sempre a mesma. 
 
Exemplos 
 
randomSeed( 1000 ); 
randomSeed(analogRead(0)); // esta e uma tecnica comumente utilizada 
 que aproveita o ruido gerado pelos pinos 
 analogicos quando nao ha nada conectado 
 
 
Linguagem Arduino I 
www.EADuino.com.br 
29 
 
6.8 random([min], max) 
 
Esta é a função que efetivamente gera o número “aleatório”. Retorna um número do tipo long 
entre min (inclusive) e max (exclusive). 
 
Exemplo 
 
long numAleatorio; 
randomSeed(analogRead(0)); // inicia o gerador com o valor lido no pino 0 
numAleatorio = random(300); // gera um número entre 0 e 299 
Serial.println(numAleatorio); // imprime o número gerado 
 
 
6.9 map(valor, deMinimo, deMaximo, paraMinimo, paraMaximo) 
 
Mapeia um valor de um intervalo para outro. 
 
Exemplo 
 
byte pinoLED = 9; 
int pinoLDR = 0; 
int valorLidoLDR = analogRead(pinoLDR); 
byte brilhoLED = map(valorLidoLDR,0, 1023, 0, 255); // os valores entre 0 e 1023 
 sao mapeados para 0 e 255 
analogWrite(pinoLED, brilhoLED); 
 
 
 
Linguagem Arduino I 
www.EADuino.com.br 
30 
 
Exemplo 04 
Digite o sketch abaixo ou copie e cole na IDE do Arduino e veja o resultado no monitor serial. 
 
 
 
/* 
 Linguagem Arduino I - Exemplo 04 
 */ 
 
long numeroAleatorio; 
 
void setup(){ 
 Serial.begin(9600); 
 delay(3000); 
 randomSeed(analogRead(0)); 
} 
 
void loop() { 
 numeroAleatorio = random(0, 256); 
 Serial.println(numeroAleatorio); 
 delay(100); 
} 
 
Linguagem Arduino I 
www.EADuino.com.br 
31 
 
7 Atividades 
 
A seguir, temos uma série de circuitos e sketches para você praticar a linguagem Arduino. No 
site www.EADuino.com.br temos outros exemplos que serão uteis para complementar este 
curso. Quaisquer dúvidas utilize o fórum ou envie mensagem para suporte@eaduino.com.br. 
 
 
Linguagem Arduino I 
www.EADuino.com.br 
32 
 
7.1 Ler status de uma chave táctil (botão) 
 
Material necessário 
 Um resistor de 10K ohms (marrom, preto, laranja) 
 Uma chave táctil (uma chave botão sem trava) 
 Diversos fios jumpers 
 
 
Figura 7-1 - diagrama da atividade 01 
 
 
Linguagem Arduino I 
www.EADuino.com.br 
33 
 
 
Figura 7-2 - interligando os componentes com a placa Arduino 
 
/* 
 Curso Linguagem Arduino 
 ---------------------------------- 
 Ler status de uma chave tactil 
 ---------------------------------- 
 Atividade01 
 ---------------------------------- 
 www.EADuino.com.br 
 */ 
 
byte pinoBotao = 12; 
 
void setup() { 
 pinMode(pinoBotao , INPUT); 
 Serial.begin(9600); 
 delay(1000); 
} 
 
void loop() { 
 byte statusBotao = digitalRead(pinoBotao); 
 Serial.print("status do pinoBotao = "); 
 Serial.println(statusBotao,DEC); 
 delay(200); 
} 
 
 
Linguagem Arduino I 
www.EADuino.com.br 
34 
 
7.2 Manter o LED apagado enquanto o botão estiver pressionado 
Material necessário 
 Um resistor de 10K ohms (marrom, preto, laranja) 
 Um resistor de 220 ohms (vermelho, vermelho, marrom) 
 Uma chave táctil (uma chave botão sem trava) 
 Um LED de qualquer cor 
 Diversos fios jumpers 
 
 
 
Figura 7-3 - diagrama da atividade 02 
 
Linguagem Arduino I 
www.EADuino.com.br 
35 
 
 
Figura 7-4 - interligando os componentes com a placa Arduino 
 
 
 
 
/* 
 Curso Linguagem Arduino 
 ---------------------------------- 
 Manter o LED apagado enquanto o 
 botao estiver pressionado 
 ---------------------------------- 
 Atividade02 
 ---------------------------------- 
 www.EADuino.com.br 
 */ 
 
byte pinoBotao = 12; 
byte pinoLED = 13; 
 
void setup() { 
 pinMode(pinoBotao, INPUT); 
 pinMode(pinoLED, OUTPUT); 
} 
 
void loop() { 
 byte statusBotao = digitalRead(pinoBotao); 
 digitalWrite(pinoLED, statusBotao); 
 delay(200); 
} 
Linguagem Arduino I 
www.EADuino.com.br 
36 
 
7.3 Exibir a tensão proporcional a resistência do LDR 
Material necessário 
 Um resistor de 100K ohms (marrom, preto, amarelo) 
 Um LDR 
 Diversos fios jumpers 
 
 
Figura 7-5 - diagrama da atividade 03 
 
Linguagem Arduino I 
www.EADuino.com.br 
37 
 
 
Figura 7-6 - interligando os componentes com a placa Arduino 
 
/* 
 Curso Linguagem Arduino 
 ---------------------------------- 
 Exibir a tensão proporcional a 
 resistência do LDR 
 ---------------------------------- 
 Atividade03 
 ---------------------------------- 
 www.EADuino.com.br 
 */ 
 
byte pinoLDR = 0; 
 
float tensaoLida = 0; 
 
void setup() 
{ 
 pinMode(pinoLDR, INPUT); 
 Serial.begin(9600); 
 delay(1000); 
} 
 
void loop() 
{ 
 // valor lido sera entre 0 e 1023, cada unidade corresponde a 
0.0048828125 volts 
 // ou arredondando: 0.0049 
 tensaoLida = analogRead( pinoLDR ) * 0.0049; 
 Serial.print( tensaoLida ); 
 Serial.println( " volts."); 
 delay(200); 
} 
Linguagem Arduino I 
www.EADuino.com.br 
38 
 
7.4 Exibir a tensão conforme a posição do potenciômetro 
 
Material necessário 
 Um potenciômetro de 100K ohms 
 Diversos fios jumpers 
 
 
Figura 7-7 - diagrama da atividade 04 
 
 
Linguagem Arduino I 
www.EADuino.com.br 
39 
 
 
Figura 7-8 - interligando os componentes com a placa Arduino 
 
/* 
 Curso Linguagem Arduino 
 ---------------------------------- 
 Exibir a tensao conforme a posicao 
 do potenciometro 
 ---------------------------------- 
 Atividade04 
 ---------------------------------- 
 www.EADuino.com.br 
 */ 
 
byte pinoPOT = 0; 
 
float tensaoLida = 0; 
byte saidaPWM = 0; 
 
void setup() 
{ 
 pinMode(pinoPOT, INPUT); 
 Serial.begin(9600); 
 delay(1000); 
} 
 
void loop() 
{ 
 // valor lido sera entre 0 e 1023, cada unidade corresponde a 
0.0048828125 volts 
 // ou arredondando: 0.0049 
 tensaoLida = analogRead( pinoPOT ) * 0.0049; 
 Serial.print( tensaoLida ); 
 Serial.println( " volts."); 
 delay(200); 
} 
 
Linguagem Arduino I 
www.EADuino.com.br 
40 
 
7.5 Mudar o estado do LED através do botão 
 
Material necessário 
 Um resistor de 10K ohms (marrom, preto, laranja) 
 Um resistor de 220 ohms (vermelho, vermelho, marrom) 
 Uma chave táctil (uma chave botão sem trava) 
 Um LED de qualquer cor 
 Diversos fios jumpers 
 
 
 
 
Figura 7-9 - diagrama da atividade 05 
 
 
Linguagem Arduino I 
www.EADuino.com.br 
41 
 
 
 
Figura 7-10 - interligando os componentes com a placa Arduino 
 
 
/* 
 Curso Linguagem Arduino 
 ---------------------------------- 
 Mudar o estado do LED atraves do botao 
 ---------------------------------- 
 Atividade05 
 ---------------------------------- 
 www.EADuino.com.br 
 */ 
 
byte pinoLED = 13; 
byte pinoBOT = 12; 
 
boolean statusLED = false; 
 
void setup(){ 
 pinMode(pinoLED, OUTPUT); 
 pinMode(pinoBOT, INPUT); 
} 
 
void loop() 
{ 
 if (digitalRead(pinoBOT) == LOW) { 
 delay(150); 
 statusLED = !statusLED; // inverte o estado lógico da 
variável 
 digitalWrite(pinoLED, statusLED); 
 } 
} 
 
Linguagem Arduino I 
www.EADuino.com.br 
42 
 
7.6 Ligar/desligar um buzzer 
 
Material necessário 
 Um BUZZER com oscilador interno 
 Diversos fios jumpers 
 
 
 
 
Figura 7-11 - diagrama da atividade 06 
 
 
Linguagem Arduino I 
www.EADuino.com.br 
43 
 
 
 
Figura 7-12 - interligando os componentes com a placa Arduino 
 
/* 
 Curso Linguagem Arduino 
 ---------------------------------- 
 Ligar/desligar um buzzer 
 ---------------------------------- 
 Atividade06 
 ---------------------------------- 
 www.EADuino.com.br 
 */ 
 
byte pinoBUZ = 12; 
byte repete; 
 
void setup() { 
 pinMode (pinoBUZ, OUTPUT); 
} 
 
void loop() { 
 for(repete = 0; repete < 3; repete++){ 
 digitalWrite(pinoBUZ,HIGH); 
 delay(100); 
 digitalWrite(pinoBUZ,LOW); 
 delay(100); 
 } 
 delay(1000); 
} 
 
Linguagem Arduino I 
www.EADuino.com.br 
44 
 
7.7 Aumentar e diminuir o brilho de um LED 
 
Material necessário 
 Um resistor de 220 ohms (vermelho, vermelho, marrom) 
 Um LED de qualquer cor 
 Diversos fios jumpers 
 
 
Figura 7-13 - diagramada atividade 04 
 
 
 
 
Linguagem Arduino I 
www.EADuino.com.br 
45 
 
 
 
Figura 7-14 - interligando os componentes com a placa Arduino 
 
/* 
 Curso Linguagem Arduino 
 ---------------------------------- 
 Aumentar e diminuir o brilho de um LED 
 ("fade in" e "fade out") 
 ---------------------------------- 
 Atividade07 
 ---------------------------------- 
 www.EADuino.com.br 
 */ 
 
byte brilhoLED = 0; 
char passo = 5; 
 
void setup() { 
 pinMode(9, OUTPUT); 
} 
 
void loop() { 
 analogWrite(9, brilhoLED); 
 brilhoLED = brilhoLED + passo; 
 if (brilhoLED == 0 || brilhoLED == 255) { 
 passo = -passo ; 
 } 
 delay(30); 
} 
 
Linguagem Arduino I 
www.EADuino.com.br 
46 
 
7.8 LED RGB 
 
Material necessário 
 Um resistor de 220 ohms (vermelho, vermelho, marrom) 
 Um LED RGB 
 Diversos fios jumpers 
 
 
 
Figura 7-15 - diagrama da atividade 08 
 
Linguagem Arduino I 
www.EADuino.com.br 
47 
 
 
 
Figura 7-16 - interligando os componentes com a placa Arduino 
 
/* 
 Curso Linguagem Arduino 
 ---------------------------------- 
 LED RGB 
 ---------------------------------- 
 Atividade08 
 ---------------------------------- 
 www.EADuino.com.br 
 */ 
 
byte pinoLED_1 = 9; 
byte pinoLED_2 = 10; 
byte pinoLED_3 = 11; 
int pausa = 500; 
 
void setup() { 
 pinMode(pinoLED_1, OUTPUT); 
 pinMode(pinoLED_2, OUTPUT); 
 pinMode(pinoLED_3, OUTPUT); 
} 
 
void loop() { 
 digitalWrite(pinoLED_1, HIGH); 
 delay(pausa); 
 digitalWrite(pinoLED_1, LOW); 
 digitalWrite(pinoLED_2, HIGH); 
 delay(pausa); 
 digitalWrite(pinoLED_2, LOW); 
 digitalWrite(pinoLED_3, HIGH); 
 delay(pausa); 
 digitalWrite(pinoLED_3, LOW); 
} 
 
Linguagem Arduino I 
www.EADuino.com.br 
48 
 
7.9 Aumentar e diminuir o brilho de um LED com potenciômetro 
 
Material necessário 
 Um potenciômetro de 100K ohms 
 Um resistor de 220 ohms (vermelho, vermelho, marrom) 
 Um LED de qualquer cor 
 Diversos fios jumpers 
 
 
Figura 7-17 - diagrama da atividade 09 
 
 
Linguagem Arduino I 
www.EADuino.com.br 
49 
 
 
 
Figura 7-18 - interligando os componentes com a placa Arduino 
 
 
/* 
 Curso Linguagem Arduino 
 ---------------------------------- 
 Aumentar e diminuir o brilho de um LED 
 ("fade in" e "fade out") com 
 pontenciômetro e função map() 
 ---------------------------------- 
 Atividade09 
 ---------------------------------- 
 www.EADuino.com.br 
 */ 
 
byte brilhoLED; 
byte pinoPOT = 0; 
byte pinoLED = 9; 
 
void setup() { 
 pinMode(pinoLED, OUTPUT); 
} 
 
void loop() { 
 brilhoLED = map(analogRead(pinoPOT), 0, 1023, 0, 255); 
 analogWrite(pinoLED, brilhoLED); 
} 
 
Linguagem Arduino I 
www.EADuino.com.br 
50 
 
7.10 Cores aleatórias com LED RGB 
 
Material necessário 
 Um resistor de 220 ohms (vermelho, vermelho, marrom) 
 Um LED RGB 
 Diversos fios jumpers 
 
 
 
Figura 7-19 - diagrama da atividade 10 
 
 
Linguagem Arduino I 
www.EADuino.com.br 
51 
 
 
 
Figura 7-20 - interligando os componentes com a placa Arduino 
/* 
 Curso Linguagem Arduino 
 ---------------------------------- 
 Cores aleatorias com LED RGB 
 ---------------------------------- 
 Atividade10 
 ---------------------------------- 
 www.EADuino.com.br 
 */ 
 
long numeroAleatorio; 
byte pinoLED_1 = 9; 
byte pinoLED_2 = 10; 
byte pinoLED_3 = 11; 
 
void setup() { 
 randomSeed(analogRead(0)); 
 pinMode(pinoLED_1, OUTPUT); 
 pinMode(pinoLED_2, OUTPUT); 
 pinMode(pinoLED_3, OUTPUT); 
} 
 
void loop() { 
 byte pwm_1 = geraNumero(); 
 byte pwm_2 = geraNumero(); 
 byte pwm_3 = geraNumero(); 
 
 analogWrite(pinoLED_1, pwm_1); 
 analogWrite(pinoLED_2, pwm_2); 
 analogWrite(pinoLED_3, pwm_3); 
 delay(500); 
} 
 
byte geraNumero() { 
 numeroAleatorio = random(0, 256); 
 return numeroAleatorio; 
} 
 
Linguagem Arduino I 
www.EADuino.com.br 
52 
 
7.11 Motor DC 
 
Material necessário 
 Um resistor de 1K ohms (marrom, preto, vermelho) 
 Um motor DC 6 volts 
 Um diodo 1N4001 
 Um transistor de potência TIP120 
 Diversos fios jumpers 
 
 
Figura 7-21 - diagrama da atividade 11 
 
 
Linguagem Arduino I 
www.EADuino.com.br 
53 
 
 
Figura 7-22 - interligando os componentes com a placa Arduino 
 
/* 
 Curso Linguagem Arduino 
 ---------------------------------- 
 Motor DC 
 ---------------------------------- 
 Atividade11 
 ---------------------------------- 
 www.EADuino.com.br 
 */ 
 
byte pinoMotor = 9; 
byte valorPWM = 127; 
 
void setup() { 
 pinMode(pinoMotor, OUTPUT); 
} 
 
void loop() { 
 analogWrite(pinoMotor, valorPWM); 
} 
Linguagem Arduino I 
www.EADuino.com.br 
54 
 
7.12 Servo Motor 
 
Neste exemplo temos um elemento extra na programação, o uso da biblioteca Servo.h. No curso 
Introdução à plataforma Arduino, você já foi introduzido ao assunto quando utilizamos um 
NTC (sensor de temperatura). Foi preciso fazer cálculos usando a função log(), que não está 
presente na biblioteca padrão Arduino. Bom, aqui vamos usar uma biblioteca pronta para 
controlar servo motores. Para incluir uma biblioteca no sketch usamos a diretiva #include. 
 
Obs.: A biblioteca Servo.h suporta até 12 motores nas placas Duemilaenove/UNO e seus 
compatíveis. O uso desta biblioteca desativa a funcionalidade PWM nos pinos 9 e 10, 
existindo ou não um servo motor nestes pinos. 
 
Aqui vamos explorar dois métodos do objeto Servo: attach() e write(). 
 
7.12.1 attach( pino ) 
 
Conecta o objeto ao pino especificado. 
 
7.12.2 write( angulo ) 
 
Movimenta o eixo do servo no angulo especificado, em graus. Tipicamente um valor entre 0 e 
180. 
 
Material necessário 
 Um servo motor 
 Diversos fios jumpers 
 
 
 
Figura 7-23 - diagrama da atividade 12 
 
Linguagem Arduino I 
www.EADuino.com.br 
55 
 
 
Figura 7-24 - interligando os componentes com a placa Arduino 
 
 
/* 
 Curso Linguagem Arduino 
 ---------------------------------- 
 Servo Motor 
 ---------------------------------- 
 Atividade12 
 ---------------------------------- 
 www.EADuino.com.br 
 */ 
 
#include <Servo.h> 
 
Servo servoMotor; 
byte posicao = 0; 
byte pinoServo = 9; 
 
void setup() { 
 servoMotor.attach(pinoServo); 
} 
 
void loop() { 
 for(posicao = 0; posicao < 180; posicao++) { 
 servoMotor.write(posicao); 
 delay(15); 
 } 
 delay(100); 
} 
Linguagem Arduino I 
www.EADuino.com.br 
56 
 
8 Conclusão 
 
Chegamos ao final do curso Linguagem Arduino I. Naturalmente o assunto não se encerra aqui. 
Há outros comandos e funções que não foram explorados nesta apostila pelo motivo de exigir 
um conhecimento mais sólido da linguagem e também para não tornar este curso longo e 
cansativo. 
 
Acessem regularmente o site www.EADuino.com.br e acompanhem as novidades. 
 
Até a próxima. 
 
Equipe EADuino.

Outros materiais