7/22/2019 MD - Microcontrolador - Arduino.docx
1/82
NOME DO CURSO
MICROCONTROLADORES
7/22/2019 MD - Microcontrolador - Arduino.docx
2/82
MICROCONTROLADORES
7/22/2019 MD - Microcontrolador - Arduino.docx
3/82
SISTEMA FIESCONSELHO REGIONALDESERGIPEEduardo Prado de OliveiraPresidente
SUPERINTENDENTE CORPORATIVOPaulo Srgio de Andrade Bergamini
SENAIDEPARTAMENTO REGIONALPaulo Srgio de Andrade Bergamini
GERNCIADEEDUCAO PROFISSIONAL-GEPSilvia Regina Delmondes Freitas Dantas
NCLEORESPONSVELPELAELABORAO DEMATERIALDIDTICOMarco Antnio Moreira Pacheco
7/22/2019 MD - Microcontrolador - Arduino.docx
4/82
FEDERAO DAS INDSTRIAS DO ESTADO DE SERGIPESERVIO NACIONAL DE APRENDIZAGEM INDUSTRIAL
DEPARTAMENTO REGIONAL DE SERGIPE
MICROCONTROLADORES
2013
7/22/2019 MD - Microcontrolador - Arduino.docx
5/82
2013.SENAI.DR.SEQualquer parte desta obra pode ser reproduzida, desde que citada a fonte
SENAI.DR.SECentro de Educao e Tecnologia Albano Franco - Aracaju
Este trabalho foi elaborado por uma equipe cujos nomes esto relacionados na folha de crdito
Ficha Catalogrfica
MICROCONTROLADORES. Aracaju: SENAI-SE, 2013. 130p.il.
1. MICORCONTROLADOR. 2. ARDUINO. 3. ELETRNICA I. Ttulo.
CDU: 681.2
SENAI.DR.SECETAFAJU - Centro de Educao e Tecnologia Albano Franco AracajuAv. Tancredo Neves, 2001Incio Barbosa49.040-490AracajuSETel.: 0800-728-0303E-mail: [email protected]
7/22/2019 MD - Microcontrolador - Arduino.docx
6/82
SUMRIO
1 INTRODUO 7
1.1MICROCONTROLADORES 71.2ARDUINO 8
1.3HARDWAREE SOFTWARELIVRE 9
2 HISTRICO 10
3 HARDWAREARDUINO UNO 11
3.1CARACTERSTICAS 11
4 SOFTWAREARDUINO 14
4.1AQUISIO DO SOFTWARE 144.2INSTALAO (SOFTWAREE HARDWARE) 144.3CONFIGURAO DO SOFTWARE 15
4.4DETALHES DO SOFTWARE 15
5 LGICA DE PROGRAMAO 17
5.1FASES DE DESENVOLVIMENTO 195.2DIAGRAMA DE BLOCO 195.3ALOCAR DADOS TEMPORARIAMENTE NA MEMRIA 205.4INSTRUES DE LER E ESCREVER 215.5OPERADORES 215.6ESTRUTURA DE SELEO 235.7CONTADOR E ACUMULADOR 24
5.8ESTRUTURA DE REPETIO 245.9VETORES 275.10EXERCCIOS 27
6 PRTICA DE PROGRAMAO 28
6.1ATIVIDADE 1:LED ACESO 296.2ATIVIDADE 2:LED PISCANDO 336.3ATIVIDADE 3:LED ACIONADO POR BOTO 366.4ATIVIDADE 4:CONTROLE LUMINOSO POR PWM 426.5ATIVIDADE 5:SEMFORO 476.6ATIVIDADE 6:LED RGB 526.7ATIVIDADE 7:LED RGBMULTICOLORIDO 576.8ATIVIDADE 8:ACENDENDO LEDS EM SEQUNCIA 636.9ATIVIDADE 9:COMUNICAO SERIAL 676.10ATIVIDADE 10:ESCREVER NO DISPLAY LCD 73
7. OUTROS PROJETOS PROPOSTOS 79
REFERNCIAS 81
FOLHA DE CRDITOS 82
7/22/2019 MD - Microcontrolador - Arduino.docx
7/82
7
1INTRODUOO componente Microcontrolador proporciona o acesso ao conhecimento
de dispositivos eletrnicos programveis aos alunos dos cursos relacionados
eletrnica ou eletroeletrnica.A caracterstica dos componentes programveis a abertura criao
do usurio, permitindo o desenvolvimento de equipamentos eletrnicoscomplexos que operem conforme a necessidade da aplicao, embarcados ouno.
1.1MICROCONTROLADORES
Microcontroladores so dispositivos integrados criados para integrarcontrolar dispositivos embarcados de certa complexidade que no dependam
de um grande processamento. Porm estes equipamentos precisam de umprocessamento local para administrar suas aes.
Para diferenci-los dos microprocessadores de maneira simples,podemos dizer que os microprocessadores precisam de componentesadicionais para se comunicar com o mundo externo e os microcontroladorespossuem os componentes adicionais instalados em seu prprioencapsulamento, ou seja, o circuito integrado de um microcontrolador jcontm sua forma de relacionamento com o mundo externo. Podemos entodizer que o microcontrolador um microprocessador com seus perifricosembutidos.
Porm, mesmo sendo um componente integrado verstil, sua utilizaodepende de uma programao Assembly, um pouco complexa para atividadesque dependam de um aprendizado rpido, pois exige que o usurio tenhaconhecimento de todo o sistema interno do microcontrolador. Adquirir esteconhecimento demanda tempo do usurio, o que o mesmo pode no terdisponvel.
Outro fator a dificuldade encontrada pelos usurios para programar omicrocontrolador, pois a linguagemAssembly uma linguagem de baixo nvel,exigindo do usurio um bom entendimento da programao para utilizar oequipamento.
Logo, o usurio de um microcontrolador necessita entender de lgica deprogramao e ter um bom conhecimento de eletrnica e, principalmente domicrocontrolador que utiliza.
Essas justificativas no querem nos levar a entender que osmicrocontroladores sejam inutilizveis, mas que uma ferramenta que exige
grande dedicao do usurio.
7/22/2019 MD - Microcontrolador - Arduino.docx
8/82
8
Com a ideia de desmistificar um microcontrolador e tornar os sistemasembarcados mais acessveis, um grupo desenvolveu um projeto baseado emum microcontrolador, produzindo um hardwareespecfico que visava agilizar efacilitar o trabalho com os microcontroladores. Dois projetos semelhantes foramdesenvolvidos: o Wiring (2003) e o Arduino (2005), sendo que o segundorecebeu uma aceitao maior pelos desenvolvedores e por isso trataremosdeste elemento em nosso trabalho.
1.2ARDUINO
O Arduino um dispositivo estruturado na forma de hardware livre, umaideia de desenvolvimento sem patente, livre para que qualquer pessoa possaconstruir seu hardware a partir do projeto j desenvolvido pelos colaboradoresou comprar de um fabricante, original ou no. Isto significa que o hardware esuas tecnologias esto totalmente disponveis para o conhecimento de
qualquer pessoa.
Alm da estrutura livre do hardware, o softwarede programao tambmest disponvel para download gratuitamente no site (www.arduino.cc). Aprogramao neste caso no Assembly, na verdade uma programaobaseada na linguagem C. Construiu-se o software e a programao domicrocontrolador baseado na plataforma de programao chamada Processing,tambm utilizada na formulao do Wiring.
O site oficial do Arduino (www.arduino.cc) a principal referncia para
entender e desenvolver equipamentos utilizando a plataforma Arduino. Oinconveniente de utiliz-lo o fato de no estar disponvel em portugus, o quepode dificultar um pouco o entendimento, mas a quantidade de exemplosdesenvolvidos grande o suficiente para testar e entender como funciona aplataforma.
Segundo os desenvolvedores, Arduino uma plataforma eletrnica livrebaseada em hardware e software flexveis, fceis e de cdigo aberto. indicada para artistas, designers, hobistas, e qualquer outra pessoainteressada em criar ambientes e objetos interativos. [1]
Arduino uma ferramenta computacional capaz de captar informaese controla-las com mais facilidade do que seu computador. uma plataformacomputacional livre baseada em um simples microcontrolador e um ambientede desenvolvimento para escrever os programas para o hardware. [1]
Utiliza-se o Arduino para desenvolver equipamentos interativos, comdiversas entradas para sensores e botes e controlar uma variedade de sadas,como luzes, motores e outros equipamentos. [1]
A utilizao do Arduino se justifica pelo baixo custo, multi-plataforma,programao simplificada, software de programao livre e hardware livre.
http://www.arduino.cc/http://www.arduino.cc/http://www.arduino.cc/http://www.arduino.cc/http://www.arduino.cc/http://www.arduino.cc/http://www.arduino.cc/http://www.arduino.cc/7/22/2019 MD - Microcontrolador - Arduino.docx
9/82
9
Existem vrios modelos de hardware Arduino, porm o utilizado noslaboratrios do SENAI-SE o Arduino Uno, por isso trataremos somente deleem nossa apostila.
1.3HARDWAREE SOFTWARELIVRE
Vamos entender as nomenclaturas Hardware e Software Livre e OpenSource(Cdigo Aberto).
Primeiro, vale lembrar que Hardware o nome dado aos equipamentoscom capacidade de processamento e armazenamento de informaes, porm,este equipamento necessita de Softwares ou programas, responsveis pelotipo de informao a ser processada. Logo, hardware a parte fsica e osoftware, a parte virtual do processamento.
No incio das mquinas computacionais, os softwares eram embutidosna venda da mquina e com cdigo aberto, pois os usurios poderiam melhor-los para atender a suas necessidades. Porm, em 1969 o Governo dosEstados Unidos moveu uma ao antitruste contra a IBM e impediu a vendacasada. Desde essa poca, os softwares passaram a ser vendidosseparadamente [9]. Por conta disso, os softwares passaram a tratados comopropriedade intelectual e software proprietrio.
O software proprietrio construdo de maneira restrita, ou seja, ocdigo fonte inacessvel ao usurio. Toda a responsabilidade de
desenvolvimento da empresa que vende o programa. O usurio apenasutiliza os recursos permitidos.
A ideia do software livre est fundamentada no fato de que quanto maispessoas analisarem o cdigo, pode-se encontrar e corrigir uma quantidademaior de erros. Richard Stallman comeou a estruturar essa ideia quandoencontrou dificuldades para resolver problemas de equipamentos que utilizavano laboratrio de Inteligncia Artificial do MIT, em 1984. Saiu de seu trabalhopara desenvolver a Free Software Foundation (FSF), idealizando trabalhos comprogramas abertos de desenvolvimento livre, tanto do ponto de vista tcnico
quanto tico. A ideia principal se concentrava na liberdade do usurio. [9]
Em 1998 Eric Raymond junto com outros colaboradores, dentre elesLinus Torvalds, criou a Open Source Initiative(OSI). Esta se diferencia da FSFporque d maior ateno as questes tcnicas e corporativas do software decdigo aberto. [10]Dentro deste contexto, muitas licenas foram desenvolvidaspara proteger os desenvolvedores de software livre. A Creative Commons afundao que mais licencia trabalhos livres, atribuindo o mesmo ao criador.
A ideia do Hardware livre semelhante do Software livre, pois
fundamentada no compartilhamento das estruturas como esquemticos dohardware e layoutda placa de circuito impresso. A forma para manter viva a
7/22/2019 MD - Microcontrolador - Arduino.docx
10/82
10
ideia de hardware livre se produzir os mdulos, desenvolver mdulosadicionais e vende-los a um preo adequado. Alm disso, manter umaconstante atualizao e desenvolvimento de novos mdulos mantem aspessoas interessadas na utilizao do equipamento. Esta frmula procuragarantir a existncia do hardwarelivre.
2HISTRICO importante ressaltar que alguns fatos foram determinantes para o
desenvolvimento da eletrnica, permitindo utilizarmos equipamentos muitosofisticados. Neste histrico tratamos desde a criao de componenteseletrnicos at o desenvolvimento da ferramenta Arduino.
1873: Frederick Guthrie descobre a emisso terminica, mas sem muitosucesso no meio acadmico [2];
1883: Thomas Edison patenteia um regulador de voltagem utilizando aemisso terminica, chamada por ele de Efeito Edison[2];
1904: John Ambrose Fleming criou o tubo de vcuo ou vlvula deFleming, posteriormente conhecida como diodo. Esta criao se torna omarco inicial da eletrnica [3];
1907: Lee De Forest inventou o trodo, mas o trodo era frgil econsumia muita potncia [4];
1925: Julius Edgar Lilenfeld criou um novo trodo (FET), mas por falta dedivulgao, praticamente no o utilizaram na dcada de 30 [5]; 1939: Russel Shoemaker Ohl descobre a juno PN [6]; 1947: John Bardeen, Walter Brattain e Willian Shockley inventaram o
primeiro transistor com pequenos contatos [5];
1948: Herbert Matar e Heinrich Welker tambm inventaram umtransistor similar ao inventado em 1947 [5];
1958: Jack Kilby patenteia o primeiro circuito integrado, ideia difundidapor toda a dcada de 50 [7];
1959: Robert Noyce, em trabalho paralelo, tambm inventa um circuitointegrado [7]; 1969 a 1974: As empresas Garrett AiResearch, Texas Instruments e
Intel desenvolvem simultaneamente os primeiros microprocessadorese/ou microcontroladores [8];
2003: Hermando Barragn cria o Wiring, primeira plataforma dedesenvolvimento com microcontroladores baseada em hardwarelivre [9];
2005: Massimo Banzi e David Cuartielles criam o Arduino, plataforma dedesenvolvimento com microcontroladores baseada em hardware livre,atualmente difundida em todo mundo [1].
7/22/2019 MD - Microcontrolador - Arduino.docx
11/82
11
3HARDWAREARDUINO UNOComo j dissemos anteriormente, o hardware utilizado ser o Arduino
UNO, uma ferramenta compacta para desenvolvimento de dispositivosmicrocontrolados.
3.1CARACTERSTICAS
O Arduino Uno uma ferramenta desenvolvida com um microcontroladorATMEL ATmega328. As caractersticas mais importantes do hardware so asseguintes:
Microcontrolador ATmega328
Tenso de operao 5V Tenso de alimentao 7 a 12 V Tenso de alimentao limite 6 a 20 V Pinos I/O (E/S) Digitais 14 (6 funcionam como sada PWM)
Pinos de Entrada Analgica 6 Corrente DC por pino I/O 40 mA Corrente DC por pino 3,3V 50 mA Memria Flash 32 kB (ATmega) das quais 0,5kB
utilizadas para o bootloader
SRAM 2 kB (ATmega) EEPROM 1 kB (ATmega) Velocidade do clock 16 MHz Conexo USB;
ICSP header (In-Circuit Serial Programming); Alimentao externa;
Boto de reset.
A estrutura eletrnica da placa permite conexes rpidas com oselementos adicionais necessrios o desenvolvimento desejado. Na figura 1
encontramos o esquema eletrnico da placa Arduino UNO Reviso 3. Vemosque o hardware no muito complexo.
FIGURA 1: VISTAS ANTERIOR E POSTERIOR DA PLACA ARDUINO UMO R3 .FONTE: www.arduino.cc/en/main/arduinoboarduno
7/22/2019 MD - Microcontrolador - Arduino.docx
12/82
12
FIGURA 2: ESQUEMTICO DO ARDUINO UNO R3 [1].FONTE: www.arduino.cc/en/uploads/Main/Arduino_Uno_Rev3-schematic.pdf
7/22/2019 MD - Microcontrolador - Arduino.docx
13/82
13
3.1.1 Terminais de I/O Digital
Como auxilio da figura 1, identificamos as portas de entrada e sada, queesto no barramento de conexo superior identificados de 1 a 13. Suasatribuies, alm das de entrada e sada digital, so:
Pinos 0 e 1: Comunicao serial, onde o pino 0 o receptor (RX) e o pino 1 otransmissor (TX). Esta comunicao serve para conectar o Arduino aocomputador atravs da USB (ATmega8), tanto para download dos programas,como para comunicao com o Serial Monitor. O Arduino UNO possui doisLEDs identificados com RX e TX para o usurio visualizar se a comunicaoserial est em uso.
Pinos 2 e 3: Pinos que trabalham com interrupo externa. A interrupoexterna acionada quando a porta recebe 0 V (nvel lgico 0).
Pinos 3, 5, 6, 9, 10 e 11: Podem funcionar como sada PWM (Modulao porLargura de Pulso). Estas portas so identificadas com um til (~) antes donmero da porta (Ex.: ~3)
Pinos 10, 11, 12 e 13: Estes pinos podem trabalhar como comunicao SPI(Interface Serial Perifrica).
Pino 13: O pino 13 j possui um led conectado a ele na prpria placa parasinalizao. Este ledest indicado com a letra L e est prximo do pino 13.
3.1.2 Terminais de Sadas Analgicas
As portas de entradas analgicas esto na parte inferior direita da placa,de acordo com a figura 1, e so identificadas com a letra A, variando de A0 atA5. No conector superior, ao lado do pino 13 temos a identificao AREF(referncia analgica), tenso de referncia para as entradas analgicas.
3.1.3 Reset
Para realizar o reset do microcontrolador, pode-se tanto utilizar o boto
localizado no canto superior esquerdo (figura 1), como utilizar a entrada noterminal inferior identificada como reset.
3.1.4 Alimentao (Power)
O conector inferior possui algumas sadas de alimentao para alimentaros circuitos adicionais, ShieldsArduino ou circuitos desenvolvidos pelo usurio.Encontramos os seguintes terminais:
Vin: Alimentao externa (conector jack), quando no utiliza a alimentao pelaporta USB.
GND: So os pinos de terra da placa.
7/22/2019 MD - Microcontrolador - Arduino.docx
14/82
14
5 V e 3,3 V: Tenses estabilizadas pelo regulador instalado na placa. Noalimentar o Arduino Uno atravs destes pinos.
IOREF: O pino IOREF serve como referncia de tenso digital para outrosequipamentos instalados junto ao Arduino UNO, como os ShieldsArduino.
Outras caractersticas sobre o hardware sero comentadas durante oestudo.
4SOFTWAREARDUINOO papel de um software de programao permitir que o usurio crie
funes para o Arduino executar, j que o microprocessador no possuifunes operacionais instaladas. O usurio escreve no software o programaque o Arduino executar. Depois, instala o programa no Arduino e monta ocircuito eletrnico necessrio ou instala o shield respectivo para o Arduinoexecutar aquela operao.
4.1AQUISIO DO SOFTWARE
Primeiramente, para programar o Arduino UNO ou outra verso, necessrio realizar o download do software na internet. Assim, acesse o sitewww.arduino.cc. Em seguida, acesse a pgina chamada Download. EmDownload, acesse o link para o Sistema Operacional Windows, que utilizamosno laboratrio, ou realize o download da verso para o sistema que preferir.Certifique-se que a verso utilizada a mais atual para instalar a ltima versodesenvolvida. O arquivo baixado est zipado e possui todas as informaesnecessrias para a utilizao do Arduino.
O software Arduino j se encontra instalado
nos laboratrios de eletrnica do SENAI,dispensando a instalao.
4.2INSTALAO (SOFTWAREE HARDWARE)
Para instalar o software Arduino no computador, deve-se somente extrairos arquivos zipados na raiz (C:\) do computador. Dentro da pasta criada
encontra-se o executvel Arduino para programao.
http://www.arduino.cc/http://www.arduino.cc/http://www.arduino.cc/7/22/2019 MD - Microcontrolador - Arduino.docx
15/82
15
Para configurar o driver do dispositivo Arduino, deve-se conectar umaextremidade do cabo na placa do Arduino UNO e a outra em uma das portasUSB do computador. O dispositivo Plug & Play tentar o reconhecimento dodriver, mas no encontrar um driver compatvel. Ser necessrio buscar odriver na pasta instalada. Para tanto, acesse o Gerenciador de Dispositivos eentre no item identificado com um alerta. Acesse Atualizar Driver e busque apasta C:\arduino-1.0x\drivers, selecionando-a. Este procedimento instalar odriver do dispositivo e automaticamente o computador reconhecer o ArduinoUNO como dispositivo compatvel.
4.3CONFIGURAO DO SOFTWARE
O funcionamento do software simples, tendo poucas aes paraexecutar. O mais importante integrar o software e o hardware. Para isto,deve-se entrar em Tools->Boardere selecionar o hardware utilizado.
necessrio configurar tambm a porta serial que o Arduino estinstalado. Para isso, entre em Tools->Serial Porte selecione a porta correta.
Ateno! Nos laboratrios de eletrnica doSENAI, o hardware utilizado o Arduino UNO,
basta selecion-lo.
4.4DETALHES DO SOFTWARE
O software Arduino uma ferramenta de desenvolvimento que possuiuma tela de edio para escrever os programas, uma tela de mensagens parainformar o andamento das aes em operao, uma barra de botes rpidos,para executar mais facilmente as aes e alguns menus para configuraesmais avanadas.
A tela de edio chamada de sketch(esboo) porque durante a escritaou desenvolvimento do programa ele ainda apenas uma ideia. Ela sertratada com este nome sempre, mas no instante que o programa for compiladoe estiver pronto para ser carregado no Arduino UNO, j no mais um esboo,mas sim um projeto concludo, apesar de continuar com o nome sketch.
O nome das telas de edio possui sempre o mesmo formato, como oexemplo a seguir: sketch_feb08a. Veja que feb a abreviao do ms em
ingls, no caso fevereiro. O nmero (08) significa o dia de abertura do sketch. A
7/22/2019 MD - Microcontrolador - Arduino.docx
16/82
16
letra final numera quantos sketchsforam criadas no dia, iniciando com a letraa.A imagem da figura 3 contm o mesmo sketchdo exemplo.
Quando o usurio concluir o desenvolvimento de um programa, osoftwareverificar (Verify) se o cdigo est correto. Se o cdigo no contiver
erros, o programa Arduino passar este cdigo para o compilador AVR-GCC(compilador para microcontroladores ATMEL), transformando-o em um arquivointermedirio. Este cdigo intermedirio combinado com bibliotecas padroArduino e o resultado um arquivo com cdigos prontos para a leiturarealizada por um microcontrolador Atmel.
FIGURA 3: IMAGEM DO SOFTWARE ARDUINO.FONTE: AUTOR
J dissemos que o ambiente de programao possui alguns botes deacesso rpido, que so comentados a seguir:
7/22/2019 MD - Microcontrolador - Arduino.docx
17/82
17
Verify/Compile: Verifica se no h erros sintticos no programaescrito no sketch. Realiza tambm a compilao do programa para o formatocarregado no hardwareArduino.
Upload: Envia o cdigo existente no sketchpara a placa Arduino.
New: cria um novo sketchpara edio.
Open: Lista todos os modelos existentes no softwareArduino, listaos ltimos 12 programas criados pelo usurio e ainda permite o mesmo buscarem alguma pasta.
Save: Salva o programa desenvolvido em Documentos/Arduino/NomeDoArquivo/NomeDoArquivo.ino.
5LGICA DE PROGRAMAOAutor: Alisson Freire Batista
Este captulo foi editado a partir da apostila de Lgica de Programaodo SenaiDR Sergipe.
Lgica de programao como o programador consegue entender comoos computadores executam as instrues.
LGICA
uma sequencia de instrues desenvolvidas pelo programador queexecutam um programa independente da linguagem.
SEQUENCIA LGICA
Passo que so executados por meio de instrues de computador pararealizar uma tarefa.
INSTRUES
So conjuntos de regras em que os computadores executam comandos,de modo ordenado, para realizar as operaes.
PROGRAMAS
um conjunto de algoritmos criada em uma linguagem qualquer, taiscomo: PHP, Java, Delphi, C etc, para realizar diversas tarefas nos
computadores.
7/22/2019 MD - Microcontrolador - Arduino.docx
18/82
18
Os programas possuem diversas utilidades: Controle de estoque,controle areo, diagnostica um paciente, possibilita compras pela internet,realizar comunicao entre pessoas, editar imagens, controlar oscomputadores, fazer a comunicao entre computadores etc.
ALGORITMO
uma descrio objetiva de como os comandos devem ser executados.
Algoritmo um roteiro pelo qual os desenvolvedores seguem fielmenteas suas sequencia para que possam fazer programas que realizam diversastarefas.
Exemplo: Trocar Pneu de um Carro
Folgar os parafusos Posicionar o macaco no lugar devido Acionar o macaco para levantar o carro; Retirar os parafusos Retirar o pneu furado Colocar o pneu reserva no local do pneu que furou Posicionar um leve aperto dos parafusos Acionar o macaco para descer o carro Apertar os parafusos
No exemplo acima vimos uma sequencia em que possvel substituir
um pneu furado pelo pneu reserva.
Os algoritmos so chamados de pseudocdigo, uma vez que, o que foidescrito neles sero implementados em uma linguagem de desenvolvimento.
Nos algoritmos no rgido o seu desenvolvimento, diferente daslinguagens que necessitam de um padro.
O algoritmo em geral um elo entre a linguagem humana paralinguagem de mquina.
Algumas regras so estabelecidas no desenvolvimento dos algoritmos.
Os algoritmos devem ser claros e objetos de modo que at mesmo umapessoa leiga a rea de informtica seja capaz de entender, ao menos ler.
Algumas regras so usadas no desenvolvimento:
Usar somente um verbo por frase Imaginar que voc est desenvolvendo um algoritmo para pessoas que
no trabalham com informtica Usar frases curtas e simples Ser objetivo Procurar usar palavras que no tenham sentido dbio
7/22/2019 MD - Microcontrolador - Arduino.docx
19/82
19
5.1FASES DE DESENVOLVIMENTO
Na prtica os algoritmos devem seguir trs sequencias bsicas:
Entrada de Dados:So os dados de entrada do algoritmo.
Processamento: So os procedimentos utilizados para chegar aoresultado Final.
Sada:So os dados j processados.
5.2DIAGRAMA DE BLOCO
uma maneira para demonstrar de modo padronizado para representara sequncia lgica do processamento.
Simbologias
Diversos smbolos so utilizados para descrever os passos que umasequencia executa.
Esse smbolo determina incio e o fim de umprocessamento.
Processamentos em geral.
Indicam entrada de dados pelo teclado.
Exibir uma informao ou resultado.
Usado para tomada de deciso.
Smbolo de conexo.
Entrada de
DadosProcessamento Sada
7/22/2019 MD - Microcontrolador - Arduino.docx
20/82
20
Exemplo de simbologia:
5.3ALOCAR DADOS TEMPORARIAMENTE NA MEMRIA
Constantemente os programas fazem diversas execues temporrias ede diversos tipos. Esses dados so colocados na memria do computador,porm, quando sofrem uma atualizao estes so substitudos por novosdados.
A funcionalidade das execues temporria depende muito dodesenvolvedor, pois o excesso de reserva de memria acarreta em sobrecarga
de memria o que deixa o computador lento.
Varivel
Toda linguagem de desenvolvimento tem a capacidade de alocar namemria os dados, essa tcnica chamamos de criar ou definir varivel.
Em geral, as variveis possuem um tipo de dado, ou seja, a depender dalinguagem de programao, preciso definir que tipo de dados a varivel devereceber: caractere, nmero inteiro, nmero decimal, data hora etc.
Para declarar uma varivel em algoritmo usamos o operador var.
Exemplo: var valor1, valor2, valor3 0;
Tipo de dados
Os tipos de dados esto relacionados a que informao deve serexecutada em determinado instante.
Assim temos vrios tipos de dados. Abaixo descrevemos os diversos
modos:
INCIO
ESCREVA
OL MUNDO
FIM
7/22/2019 MD - Microcontrolador - Arduino.docx
21/82
21
a. Caracteres:Esse tipo de dados utilizado para guardar informaes que no sejam
do tipo numrico.
b. Numricas:
Usado para manipular nmeros, que podem ser inteiro ou real. So reaisos nmeros com casas decimais.
c. Alfanumricas:Armazenamento de dados em que encontramos caracteres e nmeros.
d. Lgicas:Para definir se um tipo verdadeiro ou falso.
Atribuio
modo pelo qual utilizamos para inserir dados em uma varivel, representado por diversas formas a mais comum o uso da seta paraesquerda, mais diversos smbolos so utilizados.
Exemplos:
Varivel Valor valor1 10 (ler-se valor1 recebe 10)
Varivel Varivel valor1 valor2
Varivel Expresso valor1 valor2 + valor3Constante
Constantes so variveis que mantem o valor mesmo aps a suaexecuo. Seu valor nico at o final do processo.
5.4INSTRUES DE LER E ESCREVER
Duas instrues importantes no uso dos algoritmos, Ler e Escrever.
Quando desejamos que uma informao seja impressa na tela docomputador usamos o comando de Escrever.
Quando se faz necessrio ler uma informao digitada pelo teclado usa-se a instruo LER.
Exemplo:
escreval( Ol Mundo)
leia(valor1)
5.5OPERADORES
7/22/2019 MD - Microcontrolador - Arduino.docx
22/82
22
Os operadores so meios pelos quais realizamos diversos clculos,assim temos os operadores aritmticos, relacional e lgico.
Operadores aritmticos
So os operadores usados para realizar as operaes matemtica declculo como: Adio, Subtrao, Multiplicao e Diviso.
Adio +Subtrao -Multiplicao *Diviso /
Exemplo:
total 10 + 12;
total 50 - 30;
Hierarquia dos clculos
A hierarquia determina a ordem de execuo dos clculos:
1 ( ) Parnteses
2 Potenciao
3 Multiplicao, diviso (o que aparecer primeiro)4 + ou(o que aparecer primeiro)
Exemplo:
1 + 7 * 2 * 21 = 28
Operadores relacionais
So operadores usados para comparar com caracteres ou nmeros. Seuretorno verdadeiro ou falso ou true ou false.
Igual =Maior >Menor =Menor ou Igual
7/22/2019 MD - Microcontrolador - Arduino.docx
23/82
23
Valor1 = 10
Valor2 = 5
Valor1 = Valor2 Falso
Valor1 > Valor2 VerdadeiroValor1 < Valor2 FalsoValor1 >= Valor2 VerdadeiroValor1 Valor2 AND Valor1 > Valor3 VerdadeiroValor2 > Valor3 OU Valor3 > Valor1 VerdadeiroValor1 > Valor2 NOT Valor1 > Valor3 Falso
5.6ESTRUTURA DE SELEO
Estrutura de seleo um modo que temos para executar instrues.Estas instrues dependem de como os resultados do valor de teste lgicoser realizado.
Exemplo:
iniciovar valor =10se valor >= 10 ento
escreval(o valor maior que 10)
fim sefim
7/22/2019 MD - Microcontrolador - Arduino.docx
24/82
24
Seleo aninhada
Um uma seleo aninhada consiste em executar ou uma instruo ououtra, depende do resultado do teste lgico.
Exemplo:inicio
var valor =10se valor >= 10 ento
escreval(o valor maior que 10)seno
escreval(o valor menor que 10)fim se
fim
5.7CONTADOR EACUMULADOR
Um contador uma varivel que tem como funo armazenar umacontagem.
Exemplo:
cont cont + 1;
Acumulador uma varivel cuja funo acumular um clculo;
Exemplo:
var valor1 = 1;
acum acum + valor1
Observao:
Tanto um contador, bem como um acumulador, so uteis apenas emuma Estrutura de repetio.
5.8ESTRUTURA DE REPETIO
Os comandos de repetio executam instrues at encontrar umacondio de parada.
7/22/2019 MD - Microcontrolador - Arduino.docx
25/82
25
Esses comandos so utilizados constantemente quando desejamosexecutar por diversas vezes alguma instruo.
Enquanto Faa
O comando Enquanto Faa, s ir executar as repeties caso o testelgico seja verdadeiro. No incio do comando feito o teste lgico que podeno executar as repeties instrues se o teste no for verdadeiro.
Sintaxe
enquanto faa
Instrues
fim-enquanto
Condio Lgica Condio de parada se verdadeira
Exemplo:
Incioi=0
acum = 0
enquanto i
7/22/2019 MD - Microcontrolador - Arduino.docx
26/82
26
Condio Lgica Condio de parada se verdadeira
Exemplo:
Iniciovar valor = 0;repita
escreval(Ol mundo)valor valor + 1
at valor < 10fim
Para Faa
Como toda estrutura de repetio esse comando repetira at que umacondicional chegue ao fim.
A estrutura de comando exige um incio, um fim e um passo, que omodo como deve percorrer um lao.
Sintaxe
para at passo faa
instrues
fim-para
Varivel de incio Valor inicialFim Condicional de trminoIncremento passo como deve ser percorrido. Ex.: i de 0 ate 10
passo 2 significa que i assumir os valores 0,2,4,6,8,10.
Nesse caso, o lao seria executado 5 vezes.
Exemplo:
inciovar i : inteiropara i de 0 ate 20 passo 1 faca
escreval(i)fimpara
fim
7/22/2019 MD - Microcontrolador - Arduino.docx
27/82
27
5.9VETORES
uma coleo de posies nas quais armazenamos informaes.
Genericamente uma varivel de diversas posies.
Vetores tambm podemos dizer que um conjunto de variveis, ondecada posio armazena diversos dados com o mesmo nome.
Exemplo:
Vetor [nomes]
ndice das posies 0 1 2 3 4 5 6 7 8 9Elementos das posies Marcos Antnio Tales Ana
O exemplo acima demonstra um vetor com nome, posies e seuselementos.
Para inserir uma informao no vetor basta informar o ndice e digitar ocontedo.
Nomes[0] MarcosNomes[1] Antnio
Para visualizar uma posio basta informa o nome e a posio.
Exemplo:
escreva nomes[3]
5.10EXERCCIOS
1. Faa um algoritmo que receba dois nmeros e ao final mostre a soma,
subtrao, multiplicao e a diviso dos nmeros lidos.2. Escrever um algoritmo para determinar o consumo mdio de um automvel
sendo fornecida a distncia total percorrida pelo automvel e o total de
combustvel gasto.
3. Escrever um algoritmo que leia o nome de um aluno e as notas das trs
provas que ele obteve no semestre. No final informar o nome do aluno e a
sua mdia (aritmtica).
4. Ler dois valores para as variveis A e B, e efetuar as trocas dos valores de
forma que a varivel A passe a possuir o valor da varivel B e a varivel B
passe a possuir o valor da varivel A. Apresentar os valores trocados.
7/22/2019 MD - Microcontrolador - Arduino.docx
28/82
28
5. Ler uma temperatura em graus Celsius e apresent-la convertida em graus
Fahrenheit. A frmula de converso : F=(9*C+160) / 5, sendo F a
temperatura em Fahrenheit e C a temperatura em Celsius.
6. A Loja Mamo com Acar est vendendo seus produtos em 5 (cinco)
prestaes sem juros. Faa um algoritmo que receba um valor de umacompra e mostre o valor das prestaes.
7. Faa um algoritmo que receba um nmero e mostre uma mensagem caso
este nmero seja maior que 10.
8. Faa um algoritmo que receba um nmero e diga se este nmero est no
intervalo entre 100 e 200.
9. Ler 80 nmeros e ao final informar quantos nmero(s) est()o no intervalo
entre 10 (inclusive) e 150 (inclusive).
10. Faa um algoritmo que receba um nmero e mostre uma mensagem caso
este nmero seja maior que 80, menor que 25 ou igual a 40.11. Faa um algoritmo que leia dois nmeros e identifique se so iguais ou
diferentes. Caso eles sejam iguais imprima uma mensagem dizendo que
eles so iguais. Caso sejam diferentes, informe qual nmero o maior, e
uma mensagem que so diferentes.
12. Faa um algoritmo que leia um nmero de 1 a 5 e escreva por extenso.
Caso o usurio digite um nmero que no esteja neste intervalo, exibir
mensagem: nmero invlido.
6PRTICA DE PROGRAMAONeste captulo trataremos de programas que leve o aluno a entender o
funcionamento do Arduino UNO e a familiarizao com a estrutura deprogramao do softwareArduino.
As informaes pertinentes quanto aos elementos de programaoutilizados ou quanto aos detalhes da estrutura do hardware Arduino UNO
estaro nas caixas de aviso. Este mtodo de trabalho far o trabalho com oArduino mais interessante, focando nos projetos, sem deixar de falar de comofuncionam.
Os trabalhos so divididos em atividades e projetos. As atividades jesto solucionadas, servem para o estudo do sistema Arduino. J os projetosso propostos e no possuem soluo.
7/22/2019 MD - Microcontrolador - Arduino.docx
29/82
29
6.1ATIVIDADE 1:LED ACESO
Vamos desenvolver um programa para acender o LEDinstalado no pino13 do Arduino UNO. O programa simples, mas nos trar muitas informaessobre a programao do Arduino.
IMPLEMENTAO DO PROGRAMA
- Componentes necessrios
a. Placa Arduino Uno;b. Cabo USB.
- Programao
O cdigo abaixo o programa que executa esta ao e foi elaborado apartir do modelo de domnio pblico Blinkencontrado no Software Arduino.
Programa
/*
AcendeLed
Este commando serve para acender um led.
O led que acender est instalado no pino 13 da
placa Arduino UNO. Todas as placas possuem um led
neste pino.
adapted 10 Feb 2013
by Gualter Atanasio Junior and Maycon Novais
*/
// D um nome ao pino utilizado:
int led = 13;
// Funo setup
void setup() {
// configurao do pino como sada:
pinMode(led, OUTPUT);
}
// Funo loop (ciclo).
void loop() {digitalWrite(led, HIGH); // acende o led
7/22/2019 MD - Microcontrolador - Arduino.docx
30/82
30
}
// fim do programa
ConceitosPara aprendermos a programar, temos que
entender alguns conceitos que se encontram noprograma acima. Estes conceitos estaro entre asatividades e projetos. Por isto, quando encontrar estaimagem, j sabemos que o objetivo fornecerfundamentos tericos ao estudo.
/* .. */ Comentrio: todas as linhas entre o incio e o fim se tornamcomentrios, no so comandos do programa.
// Comentrio: a linha se torna um comentrio.{ .. } Como a linguagem estruturada, para sinalizar o incio e o fim de uma
funo, utiliza-se as chaves.; Toda vez que terminar uma linha de comando, ela necessita ser
encerrada por um ponto e vrgula.
Conceito 1: FUNES
As funes so fragmentos de cdigos que podem ser utilizados mais deuma vez na programao. O Arduino possui, alm da possibilidade de utilizarfunes, duas funes especiais, identificadas abaixo:
FUNO SETUP
Os microcontroladores possuem perifricos internos e alguns no podemoperar simultaneamente. Para isso, necessrio escolher o perifrico a utilizare ento configurar o microcontrolador.
Esta configurao realizada atravs da funo setup. Esta funo executada toda vez que ocorrer o reset do sistema. O reset do sistemaocorrer caso o boto de reset seja pressionado ou o programa for inicializadoa primeira vez aps a alimentao da placa.
void setup() {
}
A palavra void (vazio) indica que a funo no retorna nenhum valor.Trataremos a questo de funes com retorno posteriormente.
7/22/2019 MD - Microcontrolador - Arduino.docx
31/82
31
Observe o uso das chaves { } para delimitar o incio e o fim doscomandos da funo. Os cdigos inseridos entre as chaves so cdigosexecutados quando a funo setup chamada.
FUNO LOOP
void loop() {
}
A funo loop outra funo especial da programao Arduino. Ela temo objetivo de conter os comandos principais. Isto porque o loop funciona comoum lao infinito, ou seja, repetido enquanto o sistema estiver alimentado.
Conceito 2: VARIVEIS
As variveis servem para armazenar alguma informao, ou seja, elaarmazena essa informao na memria do microprocessador. Para declarar avarivel deve-se indicar o tipo de varivel, o nome da varivel e o valor davarivel, como o exemplo abaixo:
int led = 13;
Neste caso, a varivel do tipo inteiro (int), o nome da varivel led eo valor atribudo 13. A qualquer momento da programao, o usurio pode
alterar o valor da varivel, mas isto deve ocorrer dentro de uma funo.led = 10;
Conceito 3: COMANDOS
Os comandos so a estrutura das aes do programa. Eles so osresponsveis por executar aes que orientam o programa.
Comando pinMode()O comando pinMode() serve para configurar os pinos digitais como
entrada ou sada. O comando exige a especificao do pino, em nmero ounome de varivel (led) e se este pino funcionar como entrada (INPUT) ousada (OUTPUT). Veja os exemplos:
pinMode(13, OUTPUT); // sada no pino 13
pinMode(led, OUTPUT); // sada no pino de valor da
// varivel led
pinMode(4, INPUT); // entrada no pino 4
7/22/2019 MD - Microcontrolador - Arduino.docx
32/82
32
Comando digitalWrite ()
Este comando escreve nvel lgico (NL) alto (HIGH) ou baixo (LOW) emuma porta configurada como sada digital.
digitalWrite(led, HIGH)
A identificao led indica o pino que ter sua sada alterada. Pode serutilizado o nmero do pino para identificao da porta.
DICA
Nomear a varivel conveniente porque o usuriono tem a necessidade de decorar o nmero da porta e
sim a varivel que possui a informao necessria. Nestecaso o pino 13 est identificado com a varivel led, queinclusive indica que o que est instalado no pino.
PROGRAMANDO
Agora que voc j conhece os elementos doprograma, realize a sequncia abaixo para programar o
Arduino UNO e rodar o programa:
a. Instale o Arduino UNO no computador atravs da porta USB.b. Escreva o programa da Atividade 1 no sketchdo softwareArduino;c. Verifique se o programa est correto e corrija se necessrio;d. Realize o uploaddo programa no Arduino UNO;e. Se tudo estiver correto, o Arduino UNO executar a o programa e o led
amarelo da placa Arduino UNO ficar permanentemente aceso.
ANLISE DO PROGRAMA
a. Declaramos uma varivel chamada led com valor 13,o nmero do pino que vamos trabalhar;
b. Vemos que na funo setup, o programa configura opino 13 como sada atravs da varivel led;
c. Por ltimo, na funo loop, o programa acende o led, executando a aoHIGH no pino, elevando sua tenso para 5 V, ou seja, seu NL para alto.
7/22/2019 MD - Microcontrolador - Arduino.docx
33/82
33
6.2ATIVIDADE 2:LED PISCANDO
Esta atividade tem como objetivo inserir duas questes: uma o fato depodermos inserir leds em outros pinos externamente, a outra comoprogramar o Arduino para a ao de piscar um led. Para isto, vejamos a
sequncia da atividade.
- Componentes necessrios
a. Placa Arduino Uno;b. Cabo USB;c. Protoboard;d. Resistor de 320 ohms (o valor depende do Led
utilizado);e. LED de 5 mm;
f. Diversos fios jumpers (fios).
- Esquemtico
Aqui encontramos a representao esquemtica do circuito. Sempre queencontrar alguma dvida na interligao dos componentes, consulte estediagrama.
FIGURA 4: ESQUEMA ELTRICO DA ATIVIDADE 2.FONTE: AUTOR
7/22/2019 MD - Microcontrolador - Arduino.docx
34/82
34
- Montagem do circuito
Antes de montar o circuito, certifique-se de que placa do Arduino UNOesteja desligado, desconectando o cabo USB e/ou a fonte externa. Monte ocircuito como mostrado a seguir:
FIGURA 5: MONTAGEM DA ATIVIDADE 2.
FONTE: AUTORNo necessrio que seu circuito esteja igual a este, voc deve seguir
apenas a conexo dos componentes. Quando tudo estiver conectadocorretamente, ligue o Arduino UNO e conecte o cabo USB.
- Programao
O cdigo abaixo o programa que executa esta ao e foi elaborado a
partir do modelo de domnio pblico Blinkencontrado no Software Arduino.
PROGRAMA
/*
Este programa serve para alternar a sada entre
nvel lgico alto (NL1) e baixo (NL0), mudando a
cada 1 segundo.
adapted 15 Feb 2013
by Gualter Atanasio Junior and Maycon Novais
*/
7/22/2019 MD - Microcontrolador - Arduino.docx
35/82
35
// Declarao de variveis
int led = 9;
// configurao do Arduino:
void setup() {pinMode(led, OUTPUT); //pino 9 como sada.
}
// Rotina Principal
void loop() {
digitalWrite(led, HIGH);// acende o led
delay(1000); // espera 1 segundo
digitalWrite(led, LOW); // apaga o led
delay(1000); // espera 1 segundo
}
Conceitos
FUNO delay()
Esta funo realiza uma pausa no sistemadurante um tempo em milissegundos especificado noparmetro. Exemplo:
delay(50);
No exemplo acima, a pausa ser de 50 milissegundos. Este parece serum valor pequeno, mas podemos criar pausas maiores, como a do programa,de 1000 milissegundos, ou seja, 1 segundo.
PROGRAMANDO
Agora que voc j conhece os elementos doprograma, realize a sequncia abaixo para programaro Arduino UNO e rodar o programa:
a. Instale o Arduino UNO no computador atravs da porta USB.b. Escreva o programa da Atividade 2 no sketchdo softwareArduino;c. Verifique se o programa est correto e corrija se necessrio;d. Realize o uploaddo programa no Arduino UNO;
7/22/2019 MD - Microcontrolador - Arduino.docx
36/82
36
e. Se tudo estiver correto, o led externo ficar piscando, a cada 2segundos.
ANLISE DO PROGRAMA
a. Declaramos uma varivel chamada led comvalor 9, o nmero do pino que instalamos o led;
b. Vemos que na funo setup, o programaconfigura o pino 9 como sada atravs da varivel
led;c. Na funo loop, o programa acende o led durante 1 segundo;
d. Aps o tempo determinado, o programa apaga o led por mais 1segundo;e. Lembramos que a funo loop repete as aes, logo, volta ao item c e
repete a operao.
- Projetos Propostos
As atividades abaixo so propostas como trabalho adicional.
1. Crie um programa e execute no Arduino UNO que pisquealternadamente 2 leds montados externamente.
2. Crie um programa e execute no Arduino UNO que pisque um led quepermanea 2 segundos aceso e 0,5 segundos apagado e outro quefique acendendo e apagando a cada 1 segundo.
6.3ATIVIDADE 3:LED ACIONADO POR BOTO
Nesta atividade vamos utilizar um boto para acionar um led. Toda vezque o boto estiver pressionado, o led ser aceso, e quando o boto for solto, oled apagar.
- Componentes necessrios
a. Arduino UNO;b. Cabo USB;c. Protoboard;
d. R1:Resistor de 320 (o valor depende do Led utilizado);e. R2: Resistor de 10 k;
7/22/2019 MD - Microcontrolador - Arduino.docx
37/82
37
f. LED1: LED;g. S1: Boto;h. Diversos fios jumpers
- Esquemtico
Aqui encontramos a representao esquemtica do circuito. Sempre queencontrar alguma dvida na interligao dos componentes, consulte estediagrama.
FIGURA 6: ESQUEMA ELTRICO DA ATIVIDADE 3.FONTE: AUTOR
Observe a seguinte conexo:
a. O boto S1 est ligado em 5V e no pino 2, porm h o resistor R2conectado tambm no pino 2 e em terra (GND). A funo do resistor R2 garantir que o nvel lgico do pino quando o boto no pressionadofique em 0. Se esta tcnica no for utilizada, o terminal fica sujeito ainterferncias eltricas, e o microcontrolador pode entender que o nvellgico 1.
7/22/2019 MD - Microcontrolador - Arduino.docx
38/82
38
- Montagem do circuito
Antes de montar o circuito, certifique-se de que placa do Arduino UNOesteja desligado, desconectando o cabo USB e/ou a fonte externa. Monte ocircuito como mostrado a seguir:
FIGURA 7: MONTAGEM DA ATIVIDADE 3.FONTE: AUTOR
No necessrio que seu circuito esteja igual a este, voc deve seguirapenas a conexo dos componentes. Quando tudo estiver conectadocorretamente, ligue o Arduino UNO e conecte o cabo USB.
- programa
O cdigo abaixo o programa que executa esta ao e foi elaborado apartir do modelo de domnio pblico Debounce encontrado no SoftwareArduino.
/*
Debounce
created 21 November 2006
by David A. Mellis
modified 30 Aug 2011
by Limor Fried
adapted 01 Feb 2013
7/22/2019 MD - Microcontrolador - Arduino.docx
39/82
39
by Gualter Atanasio Junior and Maycon Novais
This example code is in the public domain.
http://www.arduino.cc/en/Tutorial/Debounce
*/
// Constantes: no mudam de valor
// so utilizadas para indicar os pinos das portas I/O
const int Bot = 2;
const int Led = 9;
// Variveis: podem mudar de valor durante o programa
int EstadoBot;
int UltimoEstadoBot = LOW;
// variveis do tipo long
// seu nmero muito maior que o inteirolong TempoUltimoDebounce = 0;
long TempoDebounce = 50;
// Configurao do microcontrolador
void setup() {
pinMode(Bot, INPUT);
pinMode(Led, OUTPUT);
}
// Loop
void loop() {// Varivel local: s funciona dentro do loop
// Armazena o estado atual do boto
int Leitura = digitalRead(Bot);
// Inicia contagem do tempo de Debounce
if (Leitura != UltimoEstadoBot) {
TempoUltimoDebounce = millis();
}
// Testa se o tempo de Debounce estourou
if ((millis() - TempoUltimoDebounce) > TempoDebounce){
EstadoBot = Leitura;
}
// Ajusta o sinal do led conforme o estado do boto
digitalWrite(Led, EstadoBot);
// Armazena o estado atual do boto no ltimo estado
UltimoEstadoBot = Leitura;
}
7/22/2019 MD - Microcontrolador - Arduino.docx
40/82
40
Conceitos
Funo if()
Explicamos a funo if() no captulo anterior, noitem 5.5 Estrutura de Seleo. Lembre-se que ele testauma condio e s executa a sequncia de comandoscaso a condio for verdadeira.
Comando millis()
O comando millis() tem a caracterstica de retornar como valor o tempoem milissegundos desde que iniciou-se a execuo do programa atual. Essetempo dura aproximadamente 50 dias, antes de acontecer um estouro, ou seja,
chegar ao fim da contagem e reiniciar novamente do zero.
Varivel: long
A varivel long uma varivel real (float) estendida. A varivel real umnmero de 16 bits estruturado com casas decimais. O long possui o dobro dotamanho, ou seja, uma varivel real com 32 bits.
Constantes: const
As constantes so semelhantes s variveis, pois elas possuem umvalor, um nome e um tipo, como a varivel. A diferena que as constantesno podem receber um novo valor durante a programao. Elas permanecerocom seus valores inalterados durante toda a execuo do programa.
PROGRAMANDO
Agora realize a sequncia abaixo paraprogramar o Arduino UNO e rodar o programa:
a. Instale o Arduino UNO no computadoratravs da porta USB.
b. Escreva o programa da Atividade 3 no sketchdo softwareArduino;c. Verifique se o programa est correto e corrija se necessrio;d. Realize o uploaddo programa no Arduino UNO.
7/22/2019 MD - Microcontrolador - Arduino.docx
41/82
41
DICA:
Ateno quando escrever os cdigos do programa.
A maioria dos erros de programao devido digitaoincorreta do programador.
ANLISE DO PROGRAMA
a. Declaramos duas constantes para identificaros pinos do Arduino onde estaro o boto e o led;
b. Declaramos duas variveis inteiras, sendouma para armazenar o estado atual do boto e outrapara o estado anterior do boto.
c. Declaramos ainda duas variveis long, sendo uma para a contagemdo tempo e a outra para o valor do atraso do Debounce;
d. Na funo setup, o programa configura o pino 9 como sada atravsda varivel led e o pino 2 como entrada para o boto;
e. Na funo loop, declaramos uma varivel interna para receber aleitura da entrada;
f. Depois testamos se o estado atual do boto diferente do estadoatual. Se for verdadeiro, armazena o valor do millis() para saber ovalor de start do temporizador Debounce;
g. Na sequncia, testa se a contagem de tempo j ultrapassou o limite.Se for verdadeiro, altera a varivel de informao atual do boto como valor lido da entrada (boto);
h. Por ltimo, atualiza a sada Led (acende ou apaga) com o estadoatual do boto e altera a varivel de informao passada do botocom o valor lido da entrada (boto).
- Projetos Propostos
Os projetos abaixo so propostas como trabalho adicional.
1. Crie um programa que utilize dois botes e um led. O boto 1 acende oled e o boto 2 apaga o led.
2. Crie um programa para o Arduino que tenha 3 botes e um led.Apertando boto 1, o led fica acendendo e apagando a cada 1 segundo;
apertando o boto 2, o led pisca a cada 0,5 segundos; e apertando oboto 3, o led apaga.
7/22/2019 MD - Microcontrolador - Arduino.docx
42/82
42
6.4ATIVIDADE 4:CONTROLE LUMINOSO POR PWM
Nesta atividade vamos utilizar o sistema PWM para controlar aluminosidade de um LED instalado externamente ao Arduino UNO.
- Componentes necessrios
a. Arduino UNO;b. Cabo USB;
c. Protoboard;
d. Resistor de 320 (o valor depende do Led utilizado);e. LED;f. Diversos fios jumpers.
- Esquemtico
Aqui encontramos a representao esquemtica do circuito. Sempre queencontrar alguma dvida na interligao dos componentes, consulte estediagrama.
FIGURA 8: ESQUEMA ELTRICO DA ATIVIDADE 4.FONTE: AUTOR
7/22/2019 MD - Microcontrolador - Arduino.docx
43/82
43
- Montagem do circuito
Antes de montar o circuito, certifique-se de que placa do Arduino UNOesteja desligado, desconectando o cabo USB e/ou a fonte externa. Monte ocircuito como mostrado a seguir:
FIGURA 9: MONTAGEM DA ATIVIDADE 4.FONTE: AUTOR
No necessrio que seu circuito esteja igual a este, voc deve seguirapenas a conexo dos componentes. Quando tudo estiver conectadocorretamente, ligue o Arduino UNO e conecte o cabo USB.
- programa
O cdigo abaixo o programa que executa esta ao e foi elaborado apartir do modelo de domnio pblico Fadingencontrado no Software Arduino.
/*
Fading
This example shows how to fade an LED using the
analogWrite() function.
The circuit:
* LED attached from digital pin 9 to ground.
7/22/2019 MD - Microcontrolador - Arduino.docx
44/82
44
Created 1 Nov 2008
By David A. Mellis
modified 30 Aug 2011
By Tom Igoe
adapted 04 Mar 2013
by Gualter Atanasio Junior and Maycon Novais
http://arduino.cc/en/Tutorial/Fading
This example code is in the public domain.
*/
// Constantes
const int tempo = 100; //constante de tempo
const int Led = 9; //constante da porta do Led
// Configurao do Arduino
void setup() {
// no acontece nada no setup
}
// Rotina de loop
void loop() {
// for: rotina para aumentar a intensidade luminosa
for(int intens = 0 ; intens = 0; intens -=15) {
analogWrite(Led, intens);
delay(tempo);
}
}
Conceitos
PWM
O PWM (pulse-width modulation) ou Modulaopor Largura de Pulso uma forma de onda quadradaque possui uma frequncia constante e seu pulso possuiuma largura altervel. Isto significa que o pulso podedurar de 0 a 100% do tempo de pulso.
Para explicar melhor, se o PWM estiver a 50%,isso significa que o pulso dura metade do tempo, logo, nesta metade, o nvel
7/22/2019 MD - Microcontrolador - Arduino.docx
45/82
45
lgico do sinal 1 e na outra metade, 0. Se aumentarmos o valor daporcentagem do PWM, o pulso em NL1 dura mais tempo que em NL0. Sediminuirmos, o tempo maior em NL0. A figura 10 exemplifica o funcionamentodo PWM.
FIGURA 10: EXEMPLOS DE FORMA DE ONDA DO PWMFONTE: HTTP://ARDUINO.CC/EN/TUTORIAL/PWM
Comando analogWrite()
O comando analogWrite(pino, valor) escreve na porta de sada um valoranalgico atravs de PWM. A primeira varivel (pino) indica o terminal ondeser a sada PWM; a segunda varivel (valor), indica o tempo que o sinal ficarem nvel lgico 1. O valor varia de 0 (sem sinal) a 255 (sinal mximo),representando 0 a 100% do duty cycle, respectivamente.
Funo for()
Explicamos a funo for() no captulo anterior, no item 5.7 Estrutura deRepetio Para-Faa. Lembre-se que esta funo funciona como um lao e
7/22/2019 MD - Microcontrolador - Arduino.docx
46/82
46
testa uma condio at que ela chegue a um limite estipulado e executa asequncia de comandos caso a condio for verdadeira.
PROGRAMANDO
Agora realize a sequncia abaixo paraprogramar o Arduino UNO e rodar o programa:
a. Instale o Arduino UNO no computadoratravs da porta USB.
b. Escreva o programa da Atividade 4 no sketchdo softwareArduino;c. Verifique se o programa est correto e corrija se necessrio;d. Realize o upload do programa no Arduino UNO.
ANLISE DO PROGRAMA
a. Declaramos duas constantes para identificar opino do Arduino onde estar o led e a outra com umtempo de atraso;
b. Neste caso a funo setup no executa
nenhuma configurao.c. Na funo loop, declaramos uma varivel interna para receber o valor
que enviaremos ao PWM. So dois laos, sendo um para aumentar aintensidade do led e outro para diminuir a intensidade;
d. Depois, enviamos o valor do PWM para a sada, regulando a intensidadeluminosa do led;
e. Ao final, a rotina de atraso cadencia o aumento ou a diminuio daintensidade luminosa.
f. O loop se repete infinitamente, acendendo e apagando o led.
- Projetos Propostos
Os projetos abaixo so propostas como trabalho adicional.
1 Crie um programa que tenha um LED em um dos pinos digitais, mas emvez do brilho ser controlado de forma automtica, ele ser controladomanualmente atravs de dois botes (B1 e B2), em que uma sempre que forpressionada ir incrementar o brilho em 2 unidades at seu valor mximo (B1)
e outra decrementar o brilho em 2 unidades at seu valor mnimo (B2).
7/22/2019 MD - Microcontrolador - Arduino.docx
47/82
47
2Inclua no programa anterior (exerccio 1) as seguintes caractersticas:
- Sempre que B1 for pressionado ele ir incrementar o brilho em 2 unidades, ese ele permanecer pressionado o brilho continuara a ser incrementado de 2 em2 a cada 20 ms.
- Sempre que B2 for pressionado ele ir decrementar o brilho em 2 unidades, ese ele permanecer pressionado o brilho continuara a ser decrementado de 2em 2 a cada 20 ms.
3 Crie um novo programa que tenha dois botes um led utilizando o PWMpara controle de intensidade. O boto 1 acende o led com intensidade mximae o boto diminui a intensidade at apagar o led. Utilize um dos decrementosde intensidade j utilizados nos exerccios anteriores.
4O mesmo comando do exerccio 3 pode controlar a velocidade de um servomotor ou motor DC. Monte o circuito que seja capaz de realizar esta atividade.
5Crie um comando para piscar um led durante 10 vezes a cada 1 segundo,toda vez que o boto 1 for pressionado. O boto deve ficar inutilizado at que ocomando termine, ou seja, caso seja acionado durante a execuo da ao depiscar o led, nada acontece. O boto 2 sendo pressionado, interrompe acontagem e mantem o programa aguardando o acionamento do boto 1novamente.
6.5ATIVIDADE 5:SEMFORO
Nesta atividade vamos construir um semforo utilizando trs ledsinstalados externamente ao Arduino UNO.
- Componentes necessrios
a. Arduino UNO;b. Cabo USB;
c. Protoboard;
d. 3 Resistores de 320 (o valor depende do Led utilizado);e. LED Vermelho;f. LED Amarelo;g. LED Verde;h. Diversos fios jumpers.
7/22/2019 MD - Microcontrolador - Arduino.docx
48/82
48
- Esquemtico
Aqui encontramos a representao esquemtica do circuito utilizado.Sempre que encontrar alguma dvida na interligao dos componentes,consulte este diagrama.
FIGURA 11: ESQUEMA ELTRICO DA ATIVIDADE 5.FONTE: AUTOR
- Montagem do circuito
Antes de montar o circuito, certifique-se de que placa do Arduino UNOesteja desligado, desconectando o cabo USB e/ou a fonte externa. Monte ocircuito como mostrado a seguir:
No necessrio que seu circuito esteja igual a este, voc deve seguirapenas a conexo dos componentes. Quando tudo estiver conectadocorretamente, ligue o Arduino UNO e conecte o cabo USB
7/22/2019 MD - Microcontrolador - Arduino.docx
49/82
49
FIGURA 12: MONTAGEM DA ATIVIDADE 5.FONTE: AUTOR
- programa
O cdigo abaixo o programa que executa esta ao e foi elaborado apartir do modelo de domnio pblico Blinkencontrado no Software Arduino.
PROGRAMA
/*
adapted 15 Feb 2013
by Gualter Atanasio Junior and Maycon Novais
*/
// Declarao de constantes
const int ledvm = 10;const int ledam = 6;
7/22/2019 MD - Microcontrolador - Arduino.docx
50/82
50
const int ledvd = 5;
const int tempovm = 8000;
const int tempoam = 2000;
const int tempovd = 6000;
// configurao do Arduino:
void setup() {
pinMode(ledvm, OUTPUT);
pinMode(ledam, OUTPUT);
pinMode(ledvd, OUTPUT);
}
// Rotina Principal
void loop() {
// vermelho acesodigitalWrite(ledam, LOW);
digitalWrite(ledvd, LOW);
digitalWrite(ledvm, HIGH);
delay(tempovm);
// verde aceso
digitalWrite(ledam, LOW);
digitalWrite(ledvm, LOW);
digitalWrite(ledvd, HIGH);
delay(tempovd);
// amarelo aceso
digitalWrite(ledvm, LOW);
digitalWrite(ledvd, LOW);
digitalWrite(ledam, HIGH);
delay(tempoam);
}
Conceitos
Detalhes do programa
A estrutura deste programa repete algumas linhasdesnecessrias, a cada mudana de cor no semforo,mas garante que somente uma cor estar acesa a cadavez.
Os tempos de cada cor foram dimensionadosindividualmente, pois em um semforo normalmente
eles so diferentes.
7/22/2019 MD - Microcontrolador - Arduino.docx
51/82
51
PROGRAMANDO
Agora realize a sequncia abaixo paraprogramar o Arduino UNO e rodar o programa:
a. Instale o Arduino UNO no computador atravsda porta USB.
b. Escreva o programa da Atividade 5 no sketchdo softwareArduino;c. Verifique se o programa est correto e corrija se necessrio;d. Realize o upload do programa no Arduino UNO.
ANLISE DO PROGRAMA
a. Declaramos trs constantes para identificar ospinos de sada do Arduino para os leds e trs para acontagem do tempo de cada led aceso (vermelho,amarelo e verde);
b. Na funo setup, configura-se os terminaiscomo sada;
c. A funo loop divide-se em 3 setores semelhantes, sendo cada um
para ligar uma cor;d. Cada setor apaga os leds das cores que ficaro desligadas e depois
acende a cor da vez. Depois utiliza-se o delay para aguardar o tempoque a cor ficar acesa;
e. Aps a execuo dos trs setores: vermelho, verde e amarelo, o loopretorna, tornando o sistema cclico.
f.
Ateno! Nas prximas atividades a Anlise doprograma ser uma atividade a se realizar, e nomais um item j resolvido.
g.
- Projetos Propostos
Os projetos abaixo so propostas como trabalho adicional.
7/22/2019 MD - Microcontrolador - Arduino.docx
52/82
52
1Desenvolva um controle para um semforo de um cruzamento onde asruasso de mo nica. Lembre-se de que no podem ocorrer colises.
2 Insira no comando do exerccio 1 semforos de pedestres nas ruas, parafacilitar os pedestres atravessarem.
3Inclua tambm no programa do exerccio 2 o boto para o pedestre solicitaro fechamento. Lembre-se que o fechamento do semforo de pedestres no imediato, por isto, inclua um atraso na mudana do semforo aps oacionamento do boto.
3 Desenvolva o programa para um semforo de um cruzamento entre duasruas de mo dupla. Lembramos que de nenhuma das ruas os veculos podemvirar esquerda. Os nicos caminhos so virar direita ou seguir em frente.
6.6ATIVIDADE 6:LED RGB
Nesta atividade vamos analisar o funcionamento do led RGB (red-green-blue) instalados externamente ao Arduino UNO.
- Componentes necessrios
a. Arduino UNO;b. Cabo USB;
c. Protoboard;d. Resistor de 220 (o valor depende do Led utilizado);e. LED RGB;f. Diversos fios jumpers.
- Esquemtico
Aqui encontramos a representao esquemtica do circuito utilizado.Sempre que encontrar alguma dvida na interligao dos componentes,consulte este diagrama.
7/22/2019 MD - Microcontrolador - Arduino.docx
53/82
53
FIGURA 13: ESQUEMA ELTRICO DA ATIVIDADE 6.FONTE: AUTOR
- Montagem do circuito
Antes de montar o circuito, certifique-se de que placa do Arduino UNOesteja desligado, desconectando o cabo USB e/ou a fonte externa. Monte ocircuito como mostrado a seguir:
7/22/2019 MD - Microcontrolador - Arduino.docx
54/82
54
FIGURA 14: MONTAGEM DA ATIVIDADE 6.FONTE: AUTOR
No necessrio que seu circuito esteja igual a este, voc deve seguirapenas a conexo dos componentes. Quando tudo estiver conectadocorretamente, ligue o Arduino UNO e conecte o cabo USB.
- programa
O cdigo abaixo o programa que executa esta ao e foi elaborado apartir do modelo de domnio pblico Blinkencontrado no Software Arduino.
PROGRAMA
/*
adapted 21 Feb 2013
by Gualter Atanasio Junior and Maycon Novais
*/
// Declarao de constantes
const int ledR = 11;
const int ledG = 10;const int ledB = 9;
const int tempoR = 2000;
const int tempoG = 2000;
const int tempoB = 2000;
// configurao do Arduino:
void setup() {
pinMode(ledR, OUTPUT);
pinMode(ledG, OUTPUT);
pinMode(ledB, OUTPUT);
}
7/22/2019 MD - Microcontrolador - Arduino.docx
55/82
55
// Rotina Principal
void loop() {
// vermelho aceso
digitalWrite(ledB, LOW);digitalWrite(ledG, LOW);
digitalWrite(ledR, HIGH);
delay(tempoR);
// verde aceso
digitalWrite(ledR, LOW);
digitalWrite(ledB, LOW);
digitalWrite(ledG, HIGH);
delay(tempoG);
// azul acesodigitalWrite(ledG, LOW);
digitalWrite(ledR, LOW);
digitalWrite(ledB, HIGH);
delay(tempoB);
}
Conceitos
LED RGB
O led RGB tem uma caracterstica interessante,pois ele possui 3 cores embutidos dentro do mesmoencapsulamento (LED). Cada as cores utilizadas so asdo sistemas de televisores e computadores, o RGB, queutiliza as cores vermelho (Red), verde (Green) e azul(Blue).
PROGRAMANDO
Agora realize a sequncia abaixo paraprogramar o Arduino UNO e rodar o programa:
a. Instale o Arduino UNO no computador atravsda porta USB.
b. Escreva o programa da Atividade 6 no sketchdo softwareArduino;c. Verifique se o programa est correto e corrija se necessrio;
7/22/2019 MD - Microcontrolador - Arduino.docx
56/82
56
d. Realize o upload do programa no Arduino UNO.
ANLISE DO PROGRAMA
Analise as aes do programa e escreva-asabaixo:
- Projetos Propostos
Os projetos abaixo so propostas como trabalho adicional.
1Desenvolva um programa que tenha 1 boto e um led RGB para executar aseguinte funo: o led inicialmente est apagado; pressionando o boto na 1vez, acende a cor vermelha; pressionando novamente o boto, a cor do ledmuda para azul; pressionando pela terceira vez o led, a cor muda para verde; epressionando pela quarta vez, o led apaga novamente.
2 Com a mesma ideia do exerccio anterior, podemos realiza-lo utilizando 4botes, sendo B1 para acender o vermelho, B2 para acender o azul, B3 paraacender o verde e B4 para apagar o led.
7/22/2019 MD - Microcontrolador - Arduino.docx
57/82
57
6.7ATIVIDADE 7:LED RGBMULTICOLORIDO
Nesta atividade vamos analisar outro funcionamento do led RGB (red-green-blue) instalados externamente ao Arduino UNO. Iremos utiliz-lo com as3 cores acesas, mas com intensidades diferentes.
- Componentes necessrios
a. Arduino UNO;b. Cabo USB;
c. Protoboard;d. Resistor de 220 (o valor depende do Led utilizado);e. LED RGB;f. Diversos fios jumpers.
- Esquemtico
Aqui encontramos a representao esquemtica do circuito utilizado.Sempre que encontrar alguma dvida na interligao dos componentes,consulte este diagrama.
FIGURA 15: ESQUEMA ELTRICO DA ATIVIDADE 7.FONTE: AUTOR
7/22/2019 MD - Microcontrolador - Arduino.docx
58/82
58
- Montagem do circuito
Antes de montar o circuito, certifique-se de que placa do Arduino UNOesteja desligado, desconectando o cabo USB e/ou a fonte externa. Monte ocircuito como mostrado a seguir:
FIGURA 16: MONTAGEM DA ATIVIDADE 7.FONTE: AUTOR
No necessrio que seu circuito esteja igual a este, voc deve seguir
apenas a conexo dos componentes. Quando tudo estiver conectadocorretamente, ligue o Arduino UNO e conecte o cabo USB.
- programa
O cdigo abaixo o programa que executa esta ao e foi elaborado apartir do modelo de domnio pblico Blinkencontrado no Software Arduino.
PROGRAMA
/*
adapted 25 Feb 2013
by Gualter Atanasio Junior and Maycon Novais
*/
// Declarao de constantes
const int ledR = 11;
const int ledG = 10;
const int ledB = 9;
const int tempo = 2000;
7/22/2019 MD - Microcontrolador - Arduino.docx
59/82
59
// configurao do Arduino:
void setup() {
randomSeed(analogRead(5));
pinMode(ledR, OUTPUT);pinMode(ledG, OUTPUT);
pinMode(ledB, OUTPUT);
}
// Rotina Principal
void loop() {
int intensR = randNum();
int intensG = randNum();
int intensB = randNum();
analogWrite(ledR,intensR);
analogWrite(ledG,intensG);
analogWrite(ledB,intensB);
delay(tempo);
}
// Funo para criar o nmero randmico
int randNum() {
randomico = random(256);
return (randomico);}
Conceitos
Funo
Na atividade 1 explicamos como funciona umafuno e detalhamos as duas especiais que so sempreutilizadas na programao (setup e loop). Agora,
estamos criando uma funo para facilitar a execuodo clculo do nmero randmico.
Esta funo possui um nome escolhido de formaa explicar indicar a atividade da funo. Diferente das funes especiais, queno possuem retorno, esta deve fornecer um valor ao trmino dos seuscomandos.
int randNum()
No caso do exemplo da Atividade 7, o retorno do valor na varivel dotipo inteiro como vemos acima. O nome randNum foi escolhido conforme a
7/22/2019 MD - Microcontrolador - Arduino.docx
60/82
60
atividade e os parnteses () esto vazios pois esta funo no necessitanenhuma entrada.
Para executar a funo, necessrio inserir no comando uma linha ondeuma varivel recebe o uma informao da funo.
int intensR = randNum();
Isto significa que a varivel inteira chamada intensR recebe o retorno dafuno tambm numrica e inteira (veja que a funo definida como inteira eno void).
COMANDOS
randomSeed()
O comando randomSeed() serve para inicializar a gerao de nmerosaleatrios. Este comando deve, obrigatoriamente, fazer parte da funo setup.Para que esta funo trabalhe corretamente, ela necessita de um pinoanalgico no utilizado e que no contenha nenhum circuito eletrnicoinstalado no mesmo. Ser ento fundamental que seja identificado na funo opino de entrada analgica reservada para esta funo.
randomSeed(analogRead(5));
No programa acima, o pino utilizado o 5.
analogRead()
O comando analogRead(pino) responsvel pela leitura do pino deentrada analgica atravs de um conversor A/D de 10 bits que est embutidono microcontrolador. Para funcionar necessrio indicar o pino utilizado entreparnteses (). O pino utilizado pode ser nomeado ou indicado pelo nmero.
analogRead(3);
random(min,max)
O comando random() o responsvel por gerar o nmero aleatrio. Eleescolher um nmero entre os valores mnimo e mximo indicados entreparnteses no comando. Quando o valor gerado incluir o nmero zero (0), no necessrio escrev-lo no comando, basta escrever o valor mximo.
importante lembrar que o valor mximo no includo nas
possibilidades de nmeros gerados. Logo, se como no programa acima
7/22/2019 MD - Microcontrolador - Arduino.docx
61/82
61
utilizamos o nmero random(256), isto significa que possvel gerar nmerosentre 0 e 255.
return()
O comando return() serve para, ao encerrar uma funo, retornar ainformao nela tratada para uma varivel. No caso do programa destaAtividade, o comando retorna o nmero randmico gerado para uma varivelque se encontra na funo loop.
Funo randNum()
Analisando a funo randNum(), temos:
int randNum() {
randmico = random(256);
return(randmico);
}
Esta funo, quando executada, gera em randomico um valor entre 0 e255. Este valor encaminhado como retorno da funo. Na funo loop, ela chamada da seguinte maneira:
int intensG = randNum();
Aqui, vemos que, ao chamar a funo, j indicamos a varivel quereceber o retorno da funo. Lembremos que devemos definir o tipo davarivel, tipo este idntico ao tipo da funo.
PROGRAMANDO
Agora realize a sequncia abaixo paraprogramar o Arduino UNO e rodar o programa:
a. Instale o Arduino UNO no computador atravsda porta USB.
b. Escreva o programa da Atividade 7 no sketchdo softwareArduino;c. Verifique se o programa est correto e corrija se necessrio;d. Realize o upload do programa no Arduino UNO.
7/22/2019 MD - Microcontrolador - Arduino.docx
62/82
62
ANLISE DO PROGRAMA
Analise as aes do programa:
- Projetos Propostos
Os projetos abaixo so propostas como trabalho adicional.
1Pesquise as cores do arco ris no sistema RGB e desenvolva um comandoque execute a funo de forma a acender a sequncia de cores do arco ris, dovermelho para o violeta, a cada 1 segundo.
2Crie outro programa que conforme a atividade 1, mas agora tenha 2 botesde controle, sendo que pressionando B1, ele aciona ou para a execuoautomtica das cores conforme j descrito na atividade 1. O boto B2 tambmpara a execuo automtica, mas tambm, conforme pressionadorepetidamente, alterna as cores do arco ris, partindo do violeta para overmelho. O led RGB apaga se B2 no for pressionado em 5 segundos.Enquanto o led no estiver apagado, B1 no retoma a execuo automtica.
7/22/2019 MD - Microcontrolador - Arduino.docx
63/82
63
6.8ATIVIDADE 8:ACENDENDO LEDS EM SEQUNCIA
Nesta atividade vamos aplicar conceitos para acender uma srie de dezleds em sequncia. Simultaneamente a sequncia vai do primeiro para o ltimoe tambm outra sequncia vai do ltimo para o primeiro. Para isto, precisamos
de:
- Componentes necessrios
a. Arduino UNO;b. Cabo USB;c. 10 LEDS;
d. 10 Resistores de 320 (o valor depende do Led utilizado);e. Fios jumper.
- Esquemtico
Aqui encontramos a representao esquemtica do circuito. Sempre queencontrar alguma dvida na interligao dos componentes, consulte estediagrama.
FIGURA 17: ESQUEMA ELTRICO DA ATIVIDADE 8.FONTE: AUTOR
7/22/2019 MD - Microcontrolador - Arduino.docx
64/82
64
- Montagem do circuito
Antes de montar o circuito, certifique-se de que placa do Arduino UNOesteja desligada, desconectando o cabo USB e/ou a fonte externa. Monte ocircuito como mostrado a seguir:
FIGURA 18: MONTAGEM DA ATIVIDADE 7.FONTE: AUTOR
No necessrio que seu circuito esteja igual a este, voc deve seguir
apenas a conexo dos componentes. Quando tudo estiver conectadocorretamente, ligue o Arduino UNO e conecte o cabo USB.
- programa
Abaixo temos o programa para acender a sequncia de leds.
/*
Este comando serve para acionar uma sequncia de leds
Adapted 9 Mar 2013By Gualter Atanasio Junior and Maycon Novais
7/22/2019 MD - Microcontrolador - Arduino.docx
65/82
65
*/
// Definio de variveis
// Cria um array para os pinos dos LEDs
byte ledPin[] = {4, 5, 6, 7, 8, 9, 10, 11, 12, 13};
// intervalo entre as alteraes
int ledDelay(500);
// Define a direo que os leds acendero
int direcao = 1;
// Define o 1 e o ultimo LED
int atualLED1 = 0;
int atualLED2 = 9;
// varivel do tempo
unsigned long mudaTempo;
void setup()
{
//define todos os pinos como sada
for(int x=0; x
7/22/2019 MD - Microcontrolador - Arduino.docx
66/82
66
Variveis
Byte
A varivel byte um nmero binrio composto por 8 bits. Por
conveno, os bits so identificados de 0 a 7, sendo 0 o menos significativo (direita) e 7 o mais significativo ( esquerda). Abaixo temos alguns exemplos denmeros em bytes:
00101101
00000000
11011011
Unsigned
Esta caracterstica da varivel serve para que os valores armazenadosno tenham sinal, ou seja, no caso do unsigned long, um valor armazenado em32bits que vai de 0 (zero) a 4.294.967.295.
PROGRAMANDO
Agora realize a sequncia abaixo paraprogramar o Arduino UNO e rodar o programa:
a. Instale o Arduino UNO no computador atravsda porta USB.
b. Escreva o programa da Atividade 8 no sketchdo softwareArduino;c. Verifique se o programa est correto e corrija se necessrio;d. Realize o upload do programa no Arduino UNO.
ANLISE DO PROGRAMAAnalise as aes do programa:
7/22/2019 MD - Microcontrolador - Arduino.docx
67/82
67
- Projetos Propostos
Os projetos abaixo so propostos como trabalho adicional.
1Desenvolva um projeto que acenda gradualmente os leds do primeiro at oltimo, mas, diferente da Atividade 8, no deve apagar o led anterior. Aoacender o dcimo led, apagar os leds do ltimo para o primeiro. Na prximavez, acender do primeiro para o dcimo e depois apagar tambm do primeiropara o dcimo. Abaixo temos a sequncia para ligar/desligar leds:
Acende na 1 sequncia: L0L1L2L3L4L5L6L7L8L9;Apaga na 1 sequncia: L9L8L7L6L5L4L3L2L1L0;Acende na 2 sequncia: L0L1L2L3L4L5L6L7L8L9;Apaga na 2 sequncia: L0L1L2L3L4L5L6L7L8L9;
6.9ATIVIDADE 9:COMUNICAO SERIAL
Nesta atividade vamos entender a comunicao serial entre o Arduino e
o computador. Para isto, o que for escrito no Monitor Serial do SoftwareArduino ser enviado ao Arduino UNO e este retornar a mesma informaopara o computador, e a informao ser reescrita no Monitor Serial.
- Componentes necessrios
a. Arduino UNO;b. Cabo USB.
7/22/2019 MD - Microcontrolador - Arduino.docx
68/82
68
- programa
Abaixo temos o programa para comunicar atravs da USB dados entre ocomputador e a placa Arduino Uno.
/*Serial Event example
Created 9 May 2011
by Tom Igoe
adapted 07 Mar 2013
by Gualter Atanasio Junior and Maycon Novais
This example code is in the public domain.
http://www.arduino.cc/en/Tutorial/SerialEvent
*/
// string para armazenar os dados
String entradaString = "";
// flag: aviso de que a string est completa
boolean stringCompleta = false;
// Configurao do Arduino
void setup() {
// inicializao da porta serial
Serial.begin(9600);// reserva de 200 bytes para a entrada de strings:
entradaString.reserve(200);
}
// Rotina Loop
void loop() {
// envia a string quando chegar o flag for verdadeiro
if (stringCompleta) {
Serial.println(inputString);
// apaga a string:
entradaString = "";// desativa o flag
stringCompleta = false;
}
}
/*
SerialEvent occurs whenever a new data comes in the
hardware serial RX. This routine is run between each
time loop() runs, so using delay inside loop can delay
response. Multiple bytes of data may be available.
*/
7/22/2019 MD - Microcontrolador - Arduino.docx
69/82
69
// Funo evento serial executada caso ocorra
// uma transmisso serial
void serialEvent() {
while (Serial.available()) {
// recebendo o novo byte
char inChar = (char)Serial.read();// adiciona o caractere no inputString:
entradaString += inChar;
// caso o caractere enviado indique o uso de uma
// nova linha (pressionado o ENTER), o flag ser
// acionado. A rotina principal pode trabalhar esta
// ao.
if (inChar == '\n') {
// \n o cdigo ASCII para a tecla ENTER
// seta o flag
stringCompleta = true;
}}
}
Conceitos
Flag (Bandeira)
O flagno um elemento da programao, massim um artifcio do programador para sinalizar aocorrncia de um evento.
No programa acima, o flag chamado destringCompleta, e somente considerada verdadeira
(acionado) quando o caractere recebido for ENTER.
Variveis
Boolean
A varivel booleana uma varivel de dois estados. Este estado podeser verdadeiro (true) ou falso (false) e serve para identificar esta condio. Paradeclarar um boolean, precisamos identificar o seu valor, conforme abaixo:
boolean exemplo1 = false;
No exemplo acima, a varivel exemplo1 tem valor falso.
Str ing
A string uma varivel que armazena caracteres, ou seja, letrasmaisculas e minsculas, nmeros, e todos os outros sinais encontrados em
7/22/2019 MD - Microcontrolador - Arduino.docx
70/82
70
um teclado. Para declarar uma string, devemos informar o seu valor conformeabaixo:
String exemplo2 = ;
Como no h nada dentro das aspas, criamos uma stringvazia.
Comandos
Comando nomeDaVarivel.reserve(valor);
Este comando serve para reservar alguns bytes para uma determinadavarivel.
entradaString.reserve(200);
Para fazer a reserva de bytes, necessrio concatenar o nome davarivel, um ponto de separao, o nome do comando (reserve) e indicar aquantidade de bytes que se deseja reservar, entrando com um nmero entreparnteses.
Comandos da Comunicao Serial
A comunicao serial possui diversos comandos para as suasatividades. Vamos analisar os comandos utilizados no exemplo.
Serial.begin(velocidade)
Este comando serve para definir a velocidade de comunicao (baudrate) em bits por segundo da porta serial. prefervel que a comunicao sejarealizada em valores padres (300, 1200, 2400, 4800, 9600, 14400, 19200,28800, 38400, 57600 ou 115200), justamente porque o computador somenteutiliza algum destes valores. A comunicao mais comum 9600 bps. A
inicializao da porta serial normalmente realizada dentro da rotina setup.Serial.inputln(varivel)
Envia para a porta serial (transmissor) caracteres ASCII. No lugar davarivel que contem a informao, podemos utilizar a sequncia de caracteres.Exemplos de uso do comando:
serial.inputln(dados);
serial.inputln(Ol mundo!);
7/22/2019 MD - Microcontrolador - Arduino.docx
71/82
71
Este comando no diferencia o tipo de caractere enviado (decimal,binrio, etc.), apenas os transfere como caractere ASCII.
Serial.avaliable()
Captura o nmero de bytes (ou caracteres) disponveis para leitura naporta serial. Estes dados chegam e so armazenados no bufferde receposerial (que possui 64 bytes).
Serial.read()
Comando utilizado para capturar os dados que chegaram pelatransmisso serial. Retira-os do buffere envia a uma varivel pertinente.
char inChar = (char)Serial.read();
No exemplo do comando acima, as informaes que chegam serialso lidas como caracteres, como se v entre parnteses a palavra char, e asarmazena em uma varivel tambm do tipo caractere.
Operando +=
Variavel1 += Variavel2
Este sinal soma a varivel 2 com a varivel1 e salva a informao navarivel1. No caso de um char, o comando insere o caractere na varivel apsos caracteres j escritos. Exemplo:
Varivel1: Ol Mun
Varivel2: d;
Variavel1 += Variavel2;
Varivel1: Ol mund;
PROGRAMANDO
Agora realize a sequncia abaixo paraprogramar o Arduino UNO e rodar o programa:
c. Instale o Arduino UNO no computador atravsda porta USB.
d. Escreva o programa da Atividade 9 no sketchdo softwareArduino;
e. Verifique se o programa est correto e corrija se necessrio;f. Realize o upload do programa no Arduino UNO.
7/22/2019 MD - Microcontrolador - Arduino.docx
72/82
72
g. Quando um novo valor chega atravs da porta serial, o valor armazenado em uma string;
h. Quando o comando de ENTER (ou Nova Linha) recebido, o loop enviaa string para o transmissor serial e apaga a string.
ANLISE DO PROGRAMA
Analise as aes do programa:
- Projetos Propostos
Os projetos abaixo so propostas como trabalho adicional.
1Desenvolva uma projeto que, da mesma forma que a atividade 8, trabalhecom a comunicao serial, mas, incremente um boto B1 que comande a sadadas informaes para o computador. A ideia fazer com que o Arduinosomente retorne ao computador a informao se o boto for pressionado.
2 Desenvolva um projeto que contenha um led RGB ligado ao Arduino. OArduino deve acender o led RGB conforme a cor especificada pela
7/22/2019 MD - Microcontrolador - Arduino.docx
73/82
73
comunicao serial. As cores sero identificadas por palavras enviadas atravsda serial. As cores devem ser: vermelho, azul e verde. Exemplo: quandoescrever vermelho no monitor, o computador envia a palavra para o Arduino eeste acende o led RGB com a cor vermelha. Para azul e verde, deve acontecera mesma coisa.
3 - Desenvolva um projeto semelhante ao exerccio 2, que contenha um ledRGB ligado ao Arduino. O Arduino deve acender o led RGB conforme a corespecificada pela comunicao serial. As cores sero identificadas por palavrasenviadas atravs da serial. As cores devem ser: vermelho, azul, verde,amarelo, violeta, rosa, laranja, marrom e branco.
4 Com base no exerccio 3, desenvolva agora o retorno da informao, ouseja, o Arduino informando ao computador que o led foi aceso. Para isto, eledeve retornar a seguinte mensagem: Operao concluda. Led aceso na corx..
6.10ATIVIDADE 10:ESCREVER NO DISPLAY LCD
Nesta atividade vamos escrever palavras no teclado do computadorutilizando o Monitor Serial e as palavras sero enviadas para o Arduino UNO e
este ir redirecion-las ao Display LCD.
- Componentes necessrios
a. Arduino UNO;b. Cabo USB;c. Protoboard;
d. 2 Resistores de 220 ;e. Display LCD compatvel com Hitachi HD44780 driver;
f. Diversos fios jumpers.
- Esquemtico
Aqui encontramos a representao esquemtica do circuito. Sempre queencontrar alguma dvida na interligao dos componentes, consulte estediagrama.
7/22/2019 MD - Microcontrolador - Arduino.docx
74/82
74
FIGURA 19: ESQUEMA ELTRICO DA ATIVIDADE 8.FONTE: AUTOR
O circuito acima conecta as seguintes funes do LCD:
LCD RS pin to digital pin 12
LCD Enable pin to digital pin 11para abilitar o LCD; LCD D4 pin to digital pin 5bit 0 da comunicao; LCD D5 pin to digital pin 4bit 1 da comunicao; LCD D6 pin to digital pin 3bit 2 da comunicao; LCD D7 pin to digital pin 2bit 3 da comunicao; LCD R/W pin to ground (GND)define leitura (5V) ou escrita (GND) do
LCD. Neste caso, est ligado ao GND, logo o display pe utilizadosempre como escrita;
10K resistor: ends to +5V and ground wiper to LCD VO pin (pin 3)
- Montagem do circuito
Antes de montar o circuito, certifique-se de que placa do Arduino UNO
esteja desligado, desconectando o cabo USB e/ou a fonte externa. Monte ocircuito como mostrado a seguir:
7/22/2019 MD - Microcontrolador - Arduino.docx
75/82
75
FIGURA 20: MONTAGEM DA ATIVIDADE 8.FONTE: AUTOR
No necessrio que seu circuito esteja igual a este, voc deve seguirapenas a conexo dos componentes. Quando tudo estiver conectadocorretamente, ligue o Arduino UNO e conecte o cabo USB.
- programa
O cdigo abaixo o programa que executa esta ao e foi elaborado apartir do modelo de domnio pblico SerialDisplay encontrado no Software
Arduino.
7/22/2019 MD - Microcontrolador - Arduino.docx
76/82
76
/*
LiquidCrystal Library - Serial Input
Library originally added 18 Apr 2008
by David A. Mellislibrary modified 5 Jul 2009
by Limor Fried (http://www.ladyada.net)
example added 9 Jul 2009
by Tom Igoe
modified 22 Nov 2010
by Tom Igoe
adapted 07 Mar 2013
by Gualter Atanasio Junior and Maycon Novais
This example code is in the public domain.
http://arduino.cc/en/Tutorial/LiquidCrystalSerial
*/
// inclui a biblioteca de operao do display LCD
#include
// inicializa a bibliotecacom os terminais de
//comunicao do Arduino para o LCD.
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
// rotina de configuraovoid setup(){
// configura o nmero de colunas e linhas do LCD
lcd.begin(16, 2);
// inicializa a comunicao serial
Serial.begin(9600);
}
void loop()
{
// aguarda a chegada de caracteres pela comunicao
// serial (USB)...if (Serial.available()) {
// aguarda a chegada da mensagem bit a bit
delay(100);
// apaga a tela do LCD
lcd.clear();
// leitura de todos os caracteres
while (Serial.available() > 0) {
// envoi dos caracteres para o display LCD
lcd.write(Serial.read());
}
}}
7/22/2019 MD - Microcontrolador - Arduino.docx
77/82
77
Conceitos
Bibliotecas
As bibliotecas possuem informaes especiais spara comandos especficos utilizados na programao.So necessrios, pois nem todos os comandos estoidentificados nas bibliotecas bsicas, que so ocultas.
No programa desta Atividade utilizamos abiblioteca
#include
que possui informaes sobre os comandos e a configurao do Display LCD.O comando #include utilizado para anexar bibliotecas aos programas. importante lembrar que os comandos ligados s bibliotecas somentefuncionam caso as bibliotecas estejam devidamente includas.
Explicamos a funo if() no captulo anterior, no item 5.5 Estrutura deSeleo. Lembre-se que ele testa uma condio e s executa a sequncia decomandos caso a condio for verdadeira.
Comandos
LiquidCristal lcd()
Este comando serve para i
Top Related