Buscar

Apostila_Minicurso_de_Programação_de_Microcontroladores_GERAL_3_atualizada

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 40 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 40 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 40 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

UNIVERSIDADE FEDERAL DO PARÁ 
FACULDADE DE ENGENHARIA ELÉTRICA E BIOMÉDICA
 LABORATÓRIO DE SISTEMAS ELETRÔNICOS 
ALEX HENRIQUE SOUSA SANTOS
ARTHUR DA SILVA MOTA
BÁRBARA ALMEIDA NEVES
JHONYS WILLIAM MARQUES MOURA
MARCILÉIA BATISTA RODRIGUES
RÔMULO DA SILVA LIMA VALE
ROSEANA MARA MONTEIRO
MINICURSO DE PROGRAMAÇÃO DE MICROCONTROLADORES
1
BELÉM – PARÁ
SUMÁRIO
1. MICROCONTROLADORES ……………………………………………….………………... 4
2. ARDUINO ………………………………………………………………………..……………... 4
3. TINKERCAD ...………………………………………………………………..……………...... 4
3.1 Cadastro...………………………………………………………….…………..…………….… 5
3.2 Ferramentas ...…………………………………………….………..…………….….… 8
3.2.1 CIRCUITOS...………………………….………….……………………..….... 8
3.2.2 CLASSROOM..………………………………………………….………………………........ 8
3.2.2.1 Entrar ...………………………………………………………….……..…… 9
3.2.2.2 INSCREVA-SE AGORA .……………………..………...………………..… 9
3.2.2.3 Não cadastrados …………………………………………………………….. 9
3.3 Circuito..………………………………………………………………………………. 10
3.4 Criação do circuito………………………………………………………………….….10
3.5 Componentes.……………………………………………………………………….… 11
4. ROTEIROS...……………………………………………….………………………………...…16
4.1 Roteiro 1...……………………………………………………………………………... 16
4.1.1 OBJETIVOS……………………………………………………………...….. 16
4.1.2 MATERIAIS…………………………………………………………………. 16
4.1.3 VARIÁVEIS E CONSTANTES……………………………………………... 16
4.1.3.1 Declarações constantes..…………………………………………… 16
4.1.3.2 Declarações de variáveis...………………………………………… 16
4.1.4 PINOS DIGITAIS...………………………………………………………..... 17
4.1.5 BOTÃO COM RESISTOR PULL-DOWN…………………………………. 17
4.1.6 TINKERCAD...…………………………………………………………….. 18
4.1.7 EXERCÍCIOS...……………………………………………………………. 19
4.2 Roteiro 2 ...……………………………………………………………………….…. 20
4.2.1 OBJETIVOS...……………………………………………………………… 20
4.2.2 MATERIAIS...………………………………………………………………. 20
4.2.3 PINOS ANALÓGICOS……………………………………………………... 20
4.4.4 FUNÇÃO MAP …………………………………………………………….. 20
2
4.4.5 COMUNICAÇÃO SERIAL ...……………………………………………… 21
4.4.6 LDR ...………………………………………………………………………. 21
4.4.7 POTENCIÔMETRO ...……………………………………………………... 22
4.4.8 EXERCÍCIOS ...…………………………………………………………… 22
4.3 Roteiro 3 ...…………………………………………………………………………... 24
4.3.1 OBJETIVOS...…………………………………………………………….… 24
4.3.2 MATERIAIS...………………………………………………………………. 24
4.3.3 COMANDO DE SELEÇÃO SIMPLES ...…………………………………... 24
4.3.4 COMANDOS DE SELEÇÃO COMPOSTO……………………………..….. 24
4.3.5 OPERAÇÕES DE COMPARAÇÃO...……………………………………..... 25
4.3.6 OPERAÇÕES LÓGICAS…………………………………………….……… 25
4.3.7 COMANDO DE REPETIÇÃO………………………………………..…….. 25
4.3.7.1 Laço for ………………………………………………………….... 26
4.3.8 LEITURA DO MONITOR SERIAL ………….…………………………….. 27
4.4.9 LED RGB ……………………………………………………..…………….. 27
4.4.10EXERCÍCIOS …………………………………………………………..….. 28
4.4 Roteiro 4 …………………………………………………………………………….... 30
4.4.2 OBJETIVOS……………………………………………………...………….. 30
4.4.1 MATERIAIS ……………………………………………………………..….. 30
4. BIBLIOTECAS ………………………………………………………….…….. 30
4.4.3.1 Bibliotecas padrões ……………………………………………... 30
4.4.3.2 Bibliotecas instaladas pelo usuário …………………………..….... 32
4.4.3 SERVO MOTOR ………………………………..……...……….……….….. 32
4. 4.3.1 Biblioteca servo.…………………………….……………….….... 32
4.4.5 DISPLAY LCD …………………………………………………….………... 32
4.4.5.1 Biblioteca LiquidCrystal ……………………………………...…... 33
4.4.6 EXERCÍCIOS ……..…………………………….……………………...….. 34
4.5 Roteiro 5 ……………………………………………………………………………... 37
4.5.1 OBJETIVOS……………………………………………………………….... 37
4.5.2 MATERIAIS……………………………………………………………..….. 37
4.5.3 FUNÇÕES ………………………….……………………………………….. 37
4.5.4 CRIANDO UMA FUNÇÃO…………………..…………………………….. 38
4..5.6EXERCÍCIOS ……………………………………………………………… 39
 
3
1. MICROCONTROLADORES
Os microcontroladores são microprocessadores que podem ser programados para funções
específicas. Geralmente, usa-se para controlar circuitos, por isso, são comumente encontrados
dentro de outros dispositivos, sendo conhecidos como "controladores embutidos". A estrutura
interna de um microcontrolador apresenta um processador, bem como circuitos de memória e
periféricos de entrada e saída.
Resumindo, os microcontroladores são apontados como uma junção de hardware com
software. Diferente de um circuito integrado, ele pode ser utilizado para diversas funções, desde que
programado previamente. 
2. ARDUINO
Arduino é uma plataforma open source ou hardware para prototipagem eletrônica, projetada
com um microcontrolador Atmel AVR com suporte para entrada/saída dados já embutido, utiliza
linguagem de programação padrão baseado no em C/C++. Utiliza-se o Arduino pela praticidade
fornecida na criação de projetos. 
A placa de Arduino está pronta com todos os componentes, conectores e soquetes soldados,
anteriormente ao Arduino, projetos eram realizados soldando componente a componente, depois
criava-se módulo por módulo, cabo por cabo; consequentemente, exigia-se muito tempo na
montagem do hardware básico, prejudicando o real projeto. A figura abaixo exibe um Arduino
Leonardo.
3. TINKERCAD
O TinkerCad é uma ferramenta online, programa baseado em navegador, de
design de modelos 3D em CAD (Desenho Assistido por Computador) e também de
simulação de circuitos elétricos analógicos e digitais. Ele foi fundado em 2011 pela
TinkerCad Company, e desde de 2013, pertence a Autodesk; os projetos publicados na
4
plataforma estão sob licença da Creative Commons. Entre os vários diferenciais do
TinkerCad, tem-se a disponibilização do TinkerCad Classroom, uma sala de aula virtual,
na qual os usuários cadastrados na plataforma podem ministrar aulas; o detalhe é que os
alunos das classes não necessitam inscrever-se no site. Portanto, o TinkerCad configura-
se uma poderosa ferramenta de aprendizagem. 
3.1 Cadastro
➔ Inicialmente, deve-se acessar o site do TinkerCad:
https://www.tinkercad.com/; nele aparecerá a seguinte tela:
 
➔ Click no item “INSCREVA-SE AGORA”, localizado no canto superior da tela:
➔ Haverá o redirecionamento para tela de cadastro/login/acesso de visitante; como se esá
tratando do cadastro, então pressione “Criar uma conta pessoal”: 
5
https://www.tinkercad.com/
➔ Depois a página de criação de conta aparecerá, nela você deve escolher a sua forma de
acesso a plataforma: 
➔ Dependendo da opção selecionada (“Entrar com e-mail”/ “Entrar com o Google”/ ”Fazer
login com a Apple”/ “Mais opções de login…”) haverá um redirecionamento. Partindo do
caso de você ter optado por “Entrar com e-mail”, uma paginá de preenchimento de
informações surgirá, você deve preencher os dados e clicar em “AVANÇAR”.
➔ Aparecerá outra tela para inserção de informações, nessa em questão, solicitar-se-á o e-mail
e senha que serão utilizados. Você insere as informações e clica em “CRIAR CONTA”: 
 
6
➔ E chega na parte final do cadastro; você poder clicar em “CONCLUÍDO”, e finalizar o
cadastro; caso queira receber o correio eletrônico cadastrado as mensagens da Autodesk,
basta marcar a caixa. Ainda nessa página, você é informado que sua conta cadastrada serve
para todas as plataformas da Autodesk. 
➔ Após a finalização do cadastro, você será redirecionado a página de usuário:
OBSERVAÇÃO: No e-mail inscrito, chegará uma mensagem de confirmação de cadastro da
Autodesk, você deve confirmar, e pronto! Agora você faz parte das plataformas da Autodesk.
7
3.2 Ferramentas
O TinkerCad possibilita a criação de circuitos analógicos e digitais, soma-se a isso a criação
de projetos dimensionais (2D e 3D), códigos em bloco, e uma plataforma de ensino/aprendizagem
online (TinkerCad Classroom). Detetemo-nos a duas ferramentas: criação de circuitos e classroom;
haja vista que objetivamos o conhecimento de microcontroladores em um ambiente virtual.
3.2.1 CIRCUITOS
Na página de usuário, é exibido as ferramentas do TinkerCad. No canto esquerdo da tela,
tem-se: “Circuitos”, clique com o botão direito do mouse, aparecer-lhe-á “Criar novo circuito” e
“Experimente os circuitos”; nessas sessões poderemos criar nosso projetos de circuitos. 
3.2.2 CLASSROOM
➔ No canto superior direito, escolha uma das opções, “Entrar”ou “INSCREVA-SE AGORA”:
8
3.2.2.1 Entrar: caso você tenha uma conta do Tinkercad ou da Autodesk, basta fazer seu login e
acessar a aula na opção “Participar da aula” na sua página inicial da conta, depois insira o código
_______ e o apelido que lhe foi enviado, em seguida click em “Ir pra minha aula”.
3.2.2.2 INSCREVA-SE AGORA: caso você deseje criar uma conta pessoal, selecione essa opção e
siga as instruções de inscrição atentamente (item 3.1 da apostila). Depois de inscrito, acesse a aula
na opção “Participar da aula” na sua página inicial da conta, depois insira o código _______ e o
apelido que lhe foi enviado; em seguida click em “Ir pra minha aula” (item 3.2.2.1 da apostila).
3.2.2.3 Sem cadastrado: para acessar a sala de aula sem se cadastrar, basta ir em qualquer uma das
duas opções citadas acima, selecionar “Alunos, entrem em uma turma” e inserir o Código _______
e o apelido que lhe foi enviado, em seguida lick em “Ir pra minha aula”.
9
3.3 Circuito
Um circuito elétrico é a ligação de elementos elétricos, tais como resistores, indutores,
capacitores, diodos, linhas de transmissão, fontes de tensão, fontes de corrente e interruptores, de
modo que formem pelo menos um caminho fechado para a corrente elétrica. O TinkerCad
possibilita que os usuários desenvolvam circuitos digitais e/ou analógicos, com ou sem a códigos,
os quais podem ser por linha de comando ou por bloco.
As informações a seguir visam o repasse de orientações quanto ao uso da ferramenta
Circuitos dessa plataforma da Autodesk.
3.4 Criação de circuito
➔ Assumido-se que o login tenha sido realizado, na página do usuário, no canto
esquerdo está a opção: “Circuitos” , clique nela. 
➔ Surgirá “Circuitos Lições”; aperte em “Criar novo circuito”, e você será
redirecionado a página do ambiente de montagem do circuito, “Vista do circuito”. A
área de montagem está destacada (limitada em vermelho), nela os componentes serão
inseridos.
10
3.4 Componentes:
O TinkerCad possui vários dispositivos para confecção do circuito: resistores, leds, diodos,
capacitores, microcontroladores, placas, osciladores, baterias, entre outros inúmeros componentes. 
➔ Componentes: no canto superior direito da tela, tem a opção “Lista de
componentes”, cujo ícone clique nele e você verá a lista de componentes do seu
circuito.
➔ Visualização dos dispositivos: a plataforma possibilita duas formas de visualizar a lista de
componentes disponíveis. No canto superior direito da tela, tem-se “Componentes”, clique
nela, e aparecerá duas alternativas “Básico” (visualiza-se os dispositivos básicos de um 
circuito) e “Todos” (todos os dispositivos fornecidos para criação de circuito).Clicando no
ícone é possível conhecer todos os dispositivos disponíveis, e uma descrição detalhada
deles.
11
➔ P esquisa de componentes : no canto superior direito da tela, de posse do nome do
dispositivo, pode-se pesquisar por ele na sessão “Pesquisar”, digite o nome e clique na
figurinha da lupa.
➔ Adição de componentes: para adicionar componentes no circuito, você deve clicar em um
deles com o botão direito do mouse, agora ele está ‘preso’ (não há necessidade de ficar
pressionando o componente, pois uma vez clicado, ele só soltará quando se clicar
novamente), clique com o botão direito do mouse na área de montagem do circuito que o
deixará. 
➔ Propriedades dos componentes: alguns componentes podem ter suas propriedades
modificadas, por exemplo o resistor, você deve informar a resistência adequada para o que
você fará. Para alterar a configuração do componente, clique com o botão direito do mouse
em cima do dispositivo que você quer alterar algo; sem seguida aparecerá uma pequena
janela, dependendo do dispositivo, haverá n-opções de modificações. 
12
➔ P rogramação: no canto superior direito, você clica em “Código”, você pode programar seu
circuito em blocos/blocos + texto/texto. Você pode baixar o código, clicando no ícone
. No canto inferior do lado direito, tem “Monitor serial”, clicando nela se pode ver a
saída/entrada serial tanto por dados, quanto por gráfico. Detalhe importantes: só se pode
programar os componentes inseridos na área de montagem de circuitos, ou seja, caso não
haja dispositivos, não programação. 
➔ Simulação: no canto superior direito, há “Iniciar simulação”, clique, e o circuito será
simulado. Detalhe: quando está em simulação, fica-se impossibilitado de alterar a
configuração do circuito, componentes e códigos ficam inalterados; sendo preciso parar a
simulação para se realizar alguma modificação. 
13
➔ Exportar: no canto superior direito, clicando em “Exportar”, você pode exportar o circuito
para o Eagle, programa de criação de circuitos da Autodesk.
➔ Compartilhar: no canto superior direito, você clica em “Compartilhar/Colaborar no
circuito”, agora aperte em “Convidar pessoas”, será gerado um link que você pode
compartilhar a pessoas que você deseja que tenham acesso ao seu projeto, ou seja, você
pode fornecer um diretório para alteração do circuito. Alguns detalhes a serem ressaltados:
primeiro, para quaisquer modificações, deve-se ser inscrito no TinkerCad; e segundo as
alterações não são síncronas, significa que ainda é impossível n-usuários modificarem um
circuito ao mesmo tempo.
➔ Funções elementares: no canto superior direito da tela, tem-se as seguintes funções
disponíveis
Girar Excluir Desfazer Refazer Anotações Exibir Ocultar
➔ Nome do circuito: no canto superior direito, ao clicar em “Swanky Wolt”, você pode digitar o
nome desejado para o circuito. 
14
15
4. ROTEIROS
 
4.1 Roteiro 1
- Introdução da Linguagem de um microcontrolador (ARDUINO)
- Entrada e saída digital
- Plataforma Tinkercad
4.1.1 OBJETIVOS
• Aprender a acionar pinos digitas como saída e entrada
• Conhecer os tipos de variáveis existentes
• Aprender a ler nível alto (HIGH) ou baixo (LOW) de um botão
• Aprender comandos básicos do IDE (declaração de variáveis, de pinos, etc.)
4.1.2 MATERIAIS
• Arduino Jumpers
• Protoboard
• Led Resistores de 10 k e 220 ohms
• Botão
4.1.3 VARIÁVEIS E CONSTANTES
Variáveis ou Constantes são espaços reservados na memória ao qual serão atribuídos um
nome e um dado de determinado tipo para ser armazenado. No caso das variáveis, como o nome
sugere, o valor armazenado pode ser alterado, enquanto nas constantes o valor é fixo. 
4.1.3.1 Declarações de constantes
const int x = 10; #define x 10 
4.1.3.2 Declarações de variáveis
boolean x =__; (true / 1 ou false / 0). 
char x =__; (um caractér qualquer). 
byte x =__; (guarda 8 bits, por exemplo números de 0 a 255). 
int x =__; (números inteiros de -32768 a 32767). 
long x=__; (números inteiros de -2147483648 a 2147483647). 
float/double x =__; (“ponto flutuante” – valores com parte decimal). 
16
unsigned char/int/long x =__; (desconsidera os valores negativos, então o int por exemplo
vai de 0 a 65535 nesse caso). 
char x[3]; (um vetor de 3 “casas” do tipo caractere – uma cadeia de caracteres forma uma
string). 
int x[3][4]; (matriz de 3 linhas e 4 colunas do tipo inteiro). 
4.1.4 PINOS DIGITAIS
Cada pino do Arduino possui determinados usos possíveis, por isso quando se utiliza
esses pinos é preciso declarar qual o pino e como ele será manipulado, só depois esse pino
poderá ser usado para as atividades desejadas. 
Além disso, existem três tipos principais de pinos usados no Arduino: digitais, analógicas
e PWM. Como o nome sugere, as portas analógicas trabalham com dados analógicos, as portas
digitais trabalham com dados digitais, e as portas PWM são portas digitais capazes de escrever
valores analógicos. 
➔ Configuração do pino 
pinMode(pino, OUTPUT); //pino digital de saída ; 
pinMode(pino, INPUT); //pino digital de entrada; 
➔ Escrita 
digitalWrite(pino, HIGH); // Nível alto;
digitalWrite(pino, LOW); // Nível baixo; 
➔ Leitura:digitalRead(pino); 
 Uma vez feito a configuração de um pino digital como entrada, a informação contida
nesse pino pode ser lida com a função digitalRead e podendo ser armazenada em um variável. 
Exemplo: 
 int botao = digitalRead(2); 
 Neste exemplo à variável inteira “botão” irá guardar o estado lógico (verdadeiro ou
falso), contido no pino digital (2). 
4.1.5 BOTÃO COM RESISTOR DE PULL-DOWN:
 Este circuito funciona da seguinte maneira: Caso o botão esteja pressionado, o pino de
saída (out) terá nível lógico alto, caso contrário, o pino de saída terá nível lógico baixo. Repare
17
que com o botão não pressionado a porta está ligada ao GND (LOW), e com o botão pressionado,
o caminho com menor resistência será os 5V (HIGH). 
 
 Figura 1: Conexão de botão com resistor de pull-down. 
 - Observação : digitalRead(pino): faz a leitura do estado do pino digital. 
4.1.6 TINKERCAD
Aqui está um breve lembrete para acessar a sala de aula no tinkercak, caso ainda não
tenham acessado. Para utilizar a plataforma, primeiro entre no site: www.tinkercad.com;
No canto superior direito escolha uma das opções:
➔ Entrar: caso você tenha uma conta do Tinkercad ou da Autodesk, basta fazer seu login e
acessar a aula na opção “Participar da aula” na sua página inicial da conta, depois insira
o código _______ e o apelido que lhe foi enviado; em seguida click em “Ir pra minha
aula”.
➔ Inscreva-se: caso você deseje criar uma conta pessoal, selecione essa opção e siga as
instruções de inscrição atentamente. Depois de inscrito, acesse a aula na opção
“Participar da aula” na sua página inicial da conta, depois insira o código _______ e o
apelido que lhe foi enviado; em seguida click em “Ir pra minha aula”.
➔ Para acessar a sala de aula sem se cadastrar, basta ir em qualquer uma das duas opções
citadas acima, selecionar “Alunos, entrem em uma turma” e inserir o Código _______ e
o apelido que lhe foi enviado.em seguida click em “Ir pra minha aula”.
Quando estiver na sala de aula do Tinkercad, você terá acesso a todas as ferramentas utilizadas
nos vídeos, além de muitas outras, sinta-se livre para explorar! Mas não esqueça de concluir as
atividades propostas para que seja vista sua participação.
18
http://www.tinkercad.com/
4.1.7 EXRCÍCIOS
1 Faça um programa para piscar um led que está conectado a um pino digital.
Lembre-se que esse pino vai se comportar como um pino de saída. 
2 Faça um programa que deve funcionar da seguinte maneira, quando o botão for
pressionado o led deve piscar, quando não pressionado o led deve permanecer apagado. 
 Figura 2: Esquemático para o exercício 1. 
 Figura 3: Esquemático para o exercício 2.
19
4.2 Roteiro 2
• Entrada e saída analógica
• Comunicação Serial
4.2.1 OBJETIVOS
• Entender o funcionamento da comunicação seria
• lAprender a trabalhar com dados analógicos. 
• Saber utilizar a função map
 
4.2.2 MATERIAIS
• Arduino
• Jumpers
• Protoboard
• LDR
• Potenciômetro
• Resistores de 10k e 220 ohms
 
4.2.3 PINOS ANALÓGICOS
Como já foi visto, os três principais pinos utilizados no Arduino são digitais, analógicas
e PWM. De forma análoga ao que vimos com as portas digitais, as portas analógicas trabalham
com dados analógicos, já as portas PWM são portas digitais capazes de escrever valores
analógicos. 
A placa Arduino possui um conversor analógico-digital de 10 bits, ou seja, mapeia um
total de 1024 (210) tensões, isso sinifica que há uma variação de 0 à 1023. O Arduino Uno
possui um total de 6 portas analógicas enumeradas de A0 à A5 (a quantidade varia dependendo
do tipo de Arduino), essas portas são utilizadas para realizar leituras de componentes que tem
seus valores variados. 
Se o seu objetivo é usar um valor analógico para escrever em um componente digital,
basta usar uma porta PWM. Os valores nessas portas devem variar de 0 à 255 (8 bits). 
• Comandos analógicos:
analogRead(Apino); //Faz a leitura de um pino analógico 
analogWrite(Apino, valor); //Escreve um valor analógico em uma porta PWM 
4.2.4 FUNÇÃO MAP [ map(valor, min1, max1, miin2, max2)]
A função map () remapeia um número de um intervalo para o outro. O parâmetro “valor” é o
número a ser mapeado, enquanto os parâmetros min1 e max1 são os limites do intervalo atual e
os parâmetros min2 e max2 serão os limites do novo intervalo. 
Exemplo: int v = map (analogRead(A0), 0, 1023, 0, 255); 
20
 
A variável ‘v’ irá guardar a leitura do nível analógico do pino A0 e será convertida do 
intervalo [ 0, 1023] para o intervalo [ 0, 255]. 
 
4.2.5 COMUNICAÇÃO SERIAL
A placa Arduino tem a poderosa possibilidade da comunicação serial, que permite a 
comunicação direta da placa com um computador ou outra placa que possua a mesma 
comunicação, pelos pinos RX e TX ou pela porta serial. 
➔ Inicialização da comunicação serial
Serial.begin(velocidade): A velocidade padrão da IDE é 9600, por isso é a mais usada em
projetos simples, e diz respeito à velocidade de transmissão e recepção de dados. Contudo,
dependendo do projeto pode ser necessária uma velocidade maior. 
➔ Comandos de comunicação serial
Serial.print( ); // Imprime dados na porta serial como texto ASCII. 
Serial.println( ); // Imprime dados na porta serial como texto ASCII com quebra de linha 
ao final. 
Serial.print(valor, formato[opcional]): Um segundo parâmetro opcional especifíca a base
(formato) a ser usada; valores permitidos são BIN(binário, ou base 2), OCT(octal, ou base
8), DEC(decimal, ou base 10), HEX(hexadecimal, ou base 16). Para números de ponto
flutuante, esse parâmetro especifica o número de casas decimais a serem impressas. 
Serial.println(valor, formato[opcional]); 
Serial.read( ); // Lê um texto escrito na porta serial. 
Serial.availabe( ); // Retorna a quantidade de dados disponíveis para leitura em bytes na 
porta serial. 
4.2.6 LDR:
 
 Figura 1: LDR. 
21
 O LDR é um resistor dependente de luz, ou seja, quanto maior a luz incidente nesse 
componente menor será sua resistência. 
O LDR é constituído de um semicondutor de alta resistência, que ao receber uma grande
quantidade de fótons oriundos da luz incidente, ele absorve elétrons que melhoram sua 
condutibilidade, reduzindo assim sua resistência. Dessa forma, esse semicondutor pode assumir 
resistências na ordem de mega Ohm no escuro e resistência na ordem de poucas centenas 
quando exposto a luz. 
Para conectar o LDR em um circuito apenas ligamos uma perna ao GND e a outra, 
conectado à um resistor de 10k Ohms, em uma entrada analógica do Arduino. 
 
4.2.7 POTENCIÔMETRO
 
Figura 2: Potenciômetro. 
Potenciômetro é um componente eletrônico que cria uma limitação para o fluxo de 
corrente elétrica que passa por ele, e essa limitação pode ser ajustada manualmente, podendo 
ser aumentada ou diminuída. 
 Os potenciômetros tem a mesma funcionalidade que os resistores, nos quais limitam o 
fluxo de corrente elétrica em um circuito, a diferença é que o potenciômetro pode ter sua 
resistência ajustada e o resistor comum não pode, pois ele possui um valor de resistência fixo. 
O potenciômetro possui 3 terminais, onde os terminais das extremidades devem estar 
ligados um no GND e o outro no VCC. O terminal central será ligado em uma porta analógica 
do Arduino. 
4.2.7 EXERCÍCIOS
1 Elabore um programa onde o brilho do led é controlado com o potenciômetro. 
2. Elabore um programa onde o brilho do led é controlado com o LDR. 
 Observação: O led deve ter o brilho forte quando o LDR captar o mínimo de luz e ter
brilho fraco se a intensidade de luz for máxima.
22
Figura 3: Esquemático para a questão 1. 
23
4.3 Roteiro 3
• Comandos de seleção
• Comando de repetição
• Led RGB
4.3.1 OBJETIVOS
• Conhecer e aprender como usar a comando de seleção simples ( IF) e o 
comando de seleção composto (IF/ELSE) . 
• Entender o funcionamento de um comando de repetição. 
 
4.3.2 MATERIAIS
 
• Arduino.• Jumpers. 
• Protoboard. 
• Led RGB. 
• Leds. 
• Resistores de 220 ohms. 
 
4.3.3 COMANDO DE SELEÇÃO SIMPLES
 
Um comando de seleção simples avalia uma condição, ou expressão, para 
executar uma ação ou conjunto de ações. No Arduino o comando de seleção simples 
é dado pela condição IF, que pode ser executada da seguinte maneira: 
 
if (condição) { 
 //comando(s) 
} 
 
O bloco de comandos delimitado por chaves é executado, se a condição é 
verdadeira. 
 
4.3.4 COMANDO DE SELEÇÃO COMPOSTO 
Um comando de seleção composto é complementar ao comando de seleção 
simples. No Arduino o comando de seleção composto é dado pela condição ELSE 
(além do ja visto IF), que pode ser executado da seguinte maneira: 
if { (condição)
{ comandos A)}
eles {comandos b}
}
24
O bloco de comando(s) A é executado somente se a condição do IF for
verdadeira. Por outro lado, o bloco de comando(s) B é executado somente se a
condição do IF for falsa. 
4.3.5 OPERAÇÕES DE COMPARAÇÃO
OPERAÇÕES RESULTADO
X == Y X é igual a Y
X != Y X é diferente de Y
X > Y X é maior que Y
X < Y X é menor que Y
X<=Y X é menor igual que Y
X > = X X é maio igual a C
4.3.6 OPERAÇÕES LÓGICAS
Operador AND ( && ): A expressão resultante só é verdadeira se todas as
expressões unidas por esse operador também forem. Por exemplo, a expressão (x >
=0 && x <=9) será verdadeira somente se as expressões (x >=0) e (x <=9) forem
verdadeira. 
Operador OR ( || ): A expressão resultante é verdadeira se alguma das
expressões unidas por esse operador também for. Por exemplo, a expressão (a == 'F'
|| b !=32) será verdadeira se uma de suas duas expressões, (a == 'F') ou (b !=32) for
verdadeira. 
Operador NOT ( ! ): Inverte o valor lógico da expressão a qual se aplica. Por 
exemplo, a expressão !(x == 10) se transforma em (x > 10 || x < 10). 
 
4.3.7 COMANDO DE REPETIÇÃO 
Existe casos em que é preciso que um bloco de comandos seja executado
mais de uma vez se uma determinada condição for verdadeira. Para isso, precisamos
de uma estrutura de repetição que permita executar um conjunto de comandos
quantas vezes forem necessárias. Isto é muito similar ao que ocorre no fluxograma
abaixo, onde o símbolo do losango permite escolher entre diferentes caminhos com
base em uma condição do tipo verdadeiro/falso, com a diferença de que agora o
fluxo do programa é desviado novamente para a condição final da sequência de
comandos 
 
25
 
Figura 1: Fluxograma de um comando de repetição. 
 
De acordo com a condição, os comandos serão repetido zero (se falsa) ou
mais vezes (enquanto a condição for verdadeira). Essa estrutura normalmente é
denominada laço ou loop. 
4.3.7.1 Laço for
Basicamente, o comando for é usado para repetir um comando, ou uma
sequência de comandos, diversas vezes. A forma geral de um comando for é: 
for ( inicialização; condição; incremento){ 
 // Sequência de comandos 
} 
 
 
Na execução do comando for, a seguinte sequência de passos é realizada: 
 
➔Inicialização é executada: Nela as variáveis recebem um valor incial para usar
dentro do for. 
 
➔Condição é testada: 
 
- Se a condição for considerada verdadeira, a sequência de comandos será
executada. Ao final da sequência de comandos, o fluxo do programa é desviado
para o incremento. 
 
- Se a condição for considerada falsa, a sequência de comandos não será
executada (fim do laço for). 
• Incremento: Terminada a execução da sequência de comandos, ocorre a etapa 
incremento das variáveis usadas no for. Ao final dessa etapa, o fluxo do programa 
é novamente desviado para a condição. 
26
➔ 4.3.8 LEITURA DO MONITOR SERIAL
Em muitos programas precisamos ler dados recebidos do monitor serial e 
para isso utilizamos algumas funções de Comunicação Serial do Arduino. A figura 3
é um exemplo de código que realiza essa função. 
 
 
Figura 2: Exemplo de código. 
 
4.3.9 LED RGB (Red Green Blue) 
 
 
Figura 3: Led RGB catodo comum. 
 
Assim como os Led’s tradicionais, o Led RGB emite luz por meio da 
passagem de corrente elétrica, mas ele apresenta a peculiaridade de ser composto por
três Led’s de cores diferentes, sendo elas: vermelho (Red), verde (Green) e azul 
(Blue), surgindo daí o nome “RGB”. 
 
27
Cada Led pode ser controlado de maneira individual, conectando apenas os 
seus terminais em alguma fonte de energia e deixando os outros desconectados, mas 
o seu grande diferencial está em justamente utilizar os três ao mesmo tempo, no qual
utilizando pulsos PWM para realizar o controle de intensidade de cada cor 
individualmente obtemos uma grande variedade de cores. Podemos também utilizar 
pulsos digitais para adquirir outras cores, porém existe apenas 7 possibilidades como
mostra a tabela abaixo. 
 
Figura 4: Tabela de cores para pulsos digitais. 
 
4.3.10 EXERCÍCIOS:
 
1. Faça um programa, onde uma sequência de 7 cores de um Led RGB é definida
por um caracter digitado no monitor serial. (b = Branco, A = Azul, V =
Vermelho, v = Verde, a = Amarelo, m = Magenta, c = Ciano). Se não for
pressionado nem uma das teclas mencionadas anteriormente, o Led deve ser
apagado. Utilize a tabela da figura 4 como referência de quais Leds devem ser
acesos para cada cor. 
 
2. Utilizando o comando de repetição for, crie um programa que aumente
gradativamente o brilho de um Led, e após atingir seu brilho máximo, diminua
gradativamente. Mostre no monitor serial o valor da variável de controle do
brilho. 
 
3. Controle um arranjo com 4 Leds utilizando o comando for de modo que os
Leds acendam e apaguem de forma sequencial. 
28
 
Figura 5: Esquemático para a questão 1. 
 
Figura 6: Esquemático para a questão 2. 
 
Figura 7: Esquemático para a questão 3. 
29
4.4 Roteiro 4
• Bibliotecas 
• Servo Motor 
• Display LCD 
4.4.1 OBJETIVOS
• Aprender o funcionamento do display lcd 16x2
• Conhecer e aprender sobre o funcionamento de um Servo Motor. 
 
4.4.2 MATERIAIS
• Arduino Jumpers 
• Resistor. 
• Protoboard 
• Servo motor 
• Potenciômetro 
• Display LCD
 
4.4.3 BIBLIOTECA
 
Uma biblioteca é um arquivo contendo um conjunto de funções (pedaços de código) já 
implementados e que podem ser utilizados pelo programador em seu programa. O comando 
#include é utilizado para declarar as bibliotecas que serão utilizadas pelo programa. De modo 
geral, os arquivos de bibliotecas na linguagem do Arduino são terminados com a extensão .h. 
 
Abaixo temos um exemplo do uso do comando #include: 
 
#include <Nome_da_Biblioteca.h>: O pré-processador procurará pela biblioteca nos 
caminhos de procura pré-especificados do compilador. 
4.4.3.1 Bibliotecas padrões: 
As bibliotecas padrão são incluídas na instalação do IDE do Arduino e estas bibliotecas 
podem ser acessadas através do caminho: Sketch > Incluir biblioteca > Arduino bibliotecas. 
30
 
 
Figura 1: Incluindo uma biblioteca. 
 
Podemos também acessar códigos de exemplo que o Arduno dispõe, basta acessar o 
caminho: Arquivo > Exemplos. 
 
Figura 2: Acessando os códigos de exemplo. 
 
 
4.4.3.2 Bibliotecas instaladas pelo usuário: 
 
Podemos baixar bibliotecas da internet e utiliza-las em nossos códigos. Para isso, basta 
seguir os seguintes passos: Sketch > Incluir biblioteca > Adicionar biblioteca .ZIP. 
 
Figura 3: Biblioteca instalada pelo usuário. 
31
4.4.4 SERVO MOTOR
 
 
Figura 4: Servo motor. 
 
Um Servo Motor, também chamado de servo, é um motor que nos possibilita o controle 
de sua posição angular através de pulsos PWM. Este módulo é excelente para atender as suas 
necessidades seja elas em aeromodelismo ou em projetos mecatrônicos. 
 
Servo Motores consomem uma corrente significativa ao se movimentarem. A utilização 
de uma fonte externa pode ser necessária e é recomendada. Lembre-se de conectar o pino GND 
da fonte externa ao GND do Arduino para que a referência seja a mesma. 
 
Geralmente os Servos possuem 3 pinos: 
 
i.1 Alimentaçãopositiva (Vermelho): 5V. 
i.2 Terra (Preto ou marrom): GND. 
i.3 Controle (Amarelo, laranja ou branco): Ligado à um pino digital. 
 
4.4.4.1 Biblioteca Servo.h 
 
Para programa-lo, utilizaremos a biblioteca padrão da IDE do Arduino Servo.h, também 
presente no Tinkercad. Abaixo temos algumas funções dessa biblioteca. 
 
Servo NomedoServo; // Declara o servo com o nome "NomedoServo" 
 
NomedoServo.attach(pino); //Declara o pino em que o Servo está conectado (void setup). A 
biblioteca Servo suporta apenas servos nos pinos 9 e 10. 
 
NomedoServo.write(ângulo); //Gira o Servo no ângulo especificado (Dependendo do 
módulo, o ângulo varia entre 0° e 180° ou entre 0° e 360°). 
 
4.4.5 DISPLAY LCD
 
 
Figura 5: Sensor ultrassônico. 
32
O display lcd permite que tenha uma interface visual no circuito funcionando externo a 
um computador, permitindo por exemplo que, se uma informação importante é mostrada no 
monitor serial, essa informação seja mostrada no display quando o circuito for testado longe do 
computador. Além disse, abre possibilidades de customização e criação maiores, podendo ser 
usado para funções meramente estéticas quando não estiver mostrando as informações 
importantes do circuito.
 
As conexões do Display estão representadas na tabela a seguir: 
 Figura 6: Pinagem do Display LCD 16x2. 
4.4.5.1 Biblioteca LiquidCrystal.h 
 
Para programá-lo, utilizaremos a biblioteca LiquidCrystal.h que está disponível na 
internet para download e uso na IDE Arduino, mas já tem no Tinkercad. Abaixo temos algumas 
funções dessa biblioteca. 
 
• LiquidCrystal NomeLCD (pinoRS, pinoE, Pinosbit); //Declara o display com o nome 
“NomeLCD” e nos parâmetros deve ser informado os pinos RS, E e todos os pinos de bit 
usados. 
• NomeLCD.begin(NúmeroDeColunas, NúmeroDeLinhas); //Inicia a comunicação com
o display, de acordo com o tipo de display por colunaXlinha (no nosso caso é o display
16x2).
• NomeLCD.clear(); //O comando .clear() vai limpar a tela do display, vai apagar todos
os caracteres presentes no momento de execução.
33
• NomeLCD.setCursor(coluna, linha); //O cursor de escrita será posicionado em uma
posição específica definido em número de linha e coluna (Obs.: o display 16x2 tem 2
linhas e 16 colunas, mas a contagem começa sempre em 0, então a primeira coluna é a
coluna 0 e a última é a coluna 15).
• NomeLCD.print(); //O commando .print() vai mostrar na tela do display o que for
inserido dentro do parênteses. Lembrando que caracteres ou frases devem ser identificados
por ‘’.
• NomeLCD.scrollDisplayLeft() ou NomeLCD.scrollDisplayRight(); //Esse commando
irá mover todos os caracteres da tela uma casa para a esquerda (Left) ou direita (Right),
dando a impressão de o texto estar “deslizando” na tela.
• NomeLCD.noDisplay(); ou NomeLCD.display(); //Fará com que o display se desligue
ou se ligue, respectivamente (isso não apaga o que estava no display).
• NomeLCD.noBlink(); ou NomeLCD.blink(); // Fará com que o cursor de escrita
apareça piscando ou fique apagado, respectivamente.
• NomeLCD.noAutoscroll(); ou NomeLCD.autoscroll(); //Esse commando destaiva ou
ativa o scroll automático, respectivamente, e assim como o .scrollDisplay, o Autoscroll
irá mover todos os caracteres, porém agora de forma automática. Ou seja, pode ser
inserido vários caracteres em um mesmo ponto do display, e essa função automaticamente
irá mudar a posição do character antigo (se houver) uma casa para a esquerda, dando a
mesma impressão de “deslize”, porém agora mais suave.
• NomeLCD.rightToLeft(); ou NomeLCD.leftToRight(); //Determina a escrita
automática da direita para a esquerda ou da esquerda para a direita, respectivamente. De
forma parecida ao commando anterior, essa função fará uma escrita automática para o
usuário, a diferença é que está passará os novos caracteres para a esquerda (rightToLeft)
ou para a direita (leftToRight) do character anterior (se houver).
• NomeLCD.createChar(número, nome); //Essa função permite adicionar um caracter
especial criado por você na memória do display e usa-lo no código, para fazer isso deve
ser passado um número de identificação do caracter e a variável onde ele está salvo. Para
usar esse caracter deve-se usar o commando NomeLCD.write((byte)número); onde
“número” é a identificação que você determinou anteriormente.
4.4.6 EXERCÍCIOS
 
1. Crie um programa que movimente o Servo Motor de um lado para o outro quando digitado 
algum caracter no Monitor Serial. Quando digitado o caracter 'a' o servo deve girar para a 
posição 0°, se for digitado ‘b’ o servo deve girar para a posição 90° e se o caracter digitado 
for 'c' o servo deve girar para a posição 180°. 
34
2. Faça um programa em que um potenciômetro controle a angulação do Servo Motor. 
3. Faça um programa que escreva uma mensagem pré-digitada no display, letra por letra, de 
forma automática e em loop.
4. Faça uma interface interativa do display LCD com o usuário. Seja criativo!
5. Utilize os caracteres especiais para fazer uma animação ou para dar uma aparência diferente 
para o display LCD. 
6. Utilizando o comando de repetição for, crie um programa que aumente gradativamente a 
posição do Servo Motor até atingir seu máximo, e após isso diminua a posição 
gradativamente. Enquanto isso, a angulação deve ser mostrada no display. Porém, caso um 
valor de 0 até 180 seja digitado no terminal, o servo deve ir para essa posição, e depois 
encerrar o programa. 
 
 
 
 
 
Figura 7: Esquemático para a questão 1. 
 
Figura 8: Esquemático para a questão 2. 
 
35
 
 Figura 9: Esquemático para questão 3, 4 e 5. 
 
Figura 10: Esquemático para questão 6.
 
36
4.5 Roteiro 5
 
• Criação de funções. 
• Uso de funções criadas. 
4.5.1 OBJETIVOS
• Aprender e entender como criar uma função qualquer. 
• Aprender como usar a função criada, com ou sem parâmetros. 
 
4.5.2 MATERIAIS
• Arduino.
• Jumpers
• Resistor
• Protoboard.
• Led RGB
 
4.5.3 FUNÇÕES
Uma função é um commando único que tem como objetivo tornar a programação mais 
simples, rápida, organizada e intuitiva. Por trás da função, estão escondidas várias linhas de 
códigos, mais complexas que o comando usado para executar a função, deixando o código muito
mais fluido para o caso de blocos de códigos muito complexos, repetitivos, ou até programas 
muito bagunçados. 
Apesar de ainda não termos definido o que é função antes desta aula, já usamos e 
apresentamos várias funções e já falamos de funções de forma indireta anteriormente. A seguir 
estão alguns exemplos das muitas funções já vistas:
 pinMode(3, OUTPUT);
 digitalWrite(4, HIGH);
 map (ldr, 0, 1023, 0, 255);
 Servo.write(100);
Assim, fica mais claro entender o motivo de dizer que uma biblioteca acrescenta funções 
no programa, pois os commandos da biblioteca são nada mais que funções que escondem uma 
condificação mais complexa por trás de uma única linha mais fácil de ser entendida pelo 
usuário.
Obs.: uma função não salva nada, se a função retorna algo, isso deve ser salvo em uma 
variável para não ser perdido.
4.5.3 CRIANDO UMA FUNÇÃO
 
As funções são criadas seguindo as mesmas ideias já vistas, deve ser declarado que tipo 
de função é, seu nome e seus parâmetros, no caso de uma função é opcional receber parâmetros. 
O tipo de função diz respeito a que tipo de valor ela vai retornar, contudo existe a função do tipo
void, que é uma função que por padrão não retorna nada.
void NomeDaFunção(parâmetro){} // Cria a função; O parâmetro deve ser declarado dentro dos 
parênteses como que tipo de variável será recebida e qual seu nome (ex.: double resistor); 
Dentro de “{}” é onde ficará o bloco de códigos a ser executado.
37
NomeDaFunção(); //Chama a função para ser executada; Caso a função receba algum 
parâmetro, este dever colocado dentro de “()”.
return valor; //Devolve um valor da função. Assim como a função pode receber um parâmetro, 
também pode devolver algo (com exceção da função de tipo void).
A estruturalembra a das funções padrão de execução do Arduino, Setup e Loop, a 
diferença é que essa função criada só será executada quando chamada no programa.
 
Figura 1: Exemplo de criação e uso de funções. 
 
No exemplo acima, foram criadas duas funções, uma do tipo void e outra do tipo int, isto
pois a primeira não retorna nenhum valor e a segunda retorna um valor inteiro. A primeira 
função é chamada no setup e faz apenas o papel de pinMode, que é justamente o único 
commando dentro da função. Já a segunda função, é usada para fazer um led piscar, recebendo o
pino em que o led está e o estado que será escrito no mesmo, e devolvendo este mesmo estado 
também, o valor retornado passa então por um NOT e é salvo na variável “binario”.
Perceba que as variáveis “led” e “pino” não são as mesmas, e mesmo assim podem ser 
usadas “juntas”, acontece que quando led é passsado como parâmetro para uma das funções, na 
verdade a variável pino salva o valor que está em led, e a variável pino é que está sendo usada 
nas funções (Obs.: pino e estado são variáveis locais das suas respectivas funções), e é 
importante que ambas as variáveis sejam do mesmo tipo para isso ser possível. Note também 
que a ordem de valores inseridos faz diferença quando existe mais de um parâmetro na função.
No fim, olhando apenas para a parte de execução do Código, vemos que o Código de 
piscar o led foi reduzido a uma linha no setup e uma linha no loop, podendo comparar com o 
código feito no início do minicurso que tinha mesma finalidade.
38
4.5.4 EXERCÍCIOS:
 
 
1. Faça um programa utilizando uma função, onde se um botão for pressionado o led irá trocar 
de estado e permanecer assim, a não ser que o botão seja pressionado novamente. 
2. Faça um programa em que um fotorresistor controle o brilho de um led através de uma 
função. 
3. Faça um programa em que um fotorresistor controle o brilho de um led através de uma 
função. 
4. Crie uma função para controlar um servo motor recebendo o valor do angulo desejado 
diretamente da porta serial, escolhido pelo usuário.
5. Utilize uma função para um código onde o usuário insere uma palavra na entrada serial e ela
é escrita no display lcd. 
Figura 2: Esquemático para a questão 1. 
39
 
 
 Figura 5: Esquemático para questão 4. 
 
Figura 6: Esquemático para questão 5.
40
	4.2.3 PINOS ANALÓGICOS
	4.2.6 LDR:
	4.2.7 POTENCIÔMETRO
	4.2.7 EXERCÍCIOS
	4.3.3 COMANDO DE SELEÇÃO SIMPLES
	4.3.4 COMANDO DE SELEÇÃO COMPOSTO
	4.3.5 OPERAÇÕES DE COMPARAÇÃO
	4.3.6 OPERAÇÕES LÓGICAS
	4.3.7 COMANDO DE REPETIÇÃO
	4.3.7.1 Laço for
	4.3.8 LEITURA DO MONITOR SERIAL
	4.3.9 LED RGB (Red Green Blue)
	4.3.10 EXERCÍCIOS:

Continue navegando