md - microcontrolador - arduino.docx

Upload: matheus2165

Post on 09-Feb-2018

284 views

Category:

Documents


0 download

TRANSCRIPT

  • 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