tabela de comandos_vida de silício apostila arduino básico vol.1

Upload: denis-rogerio-da-silva

Post on 02-Jun-2018

228 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/10/2019 TABELA de COMANDOS_Vida de Silcio Apostila Arduino Bsico Vol.1

    1/42

  • 8/10/2019 TABELA de COMANDOS_Vida de Silcio Apostila Arduino Bsico Vol.1

    2/42

    2

    Sumrio

    1. Introduo ............................................................................................................................. 4

    1.1. Arduino ......................................................................................................................... 4

    1.2. O que realmente o Arduino? ....................................................................................... 4

    1.2.1. A placa Arduino .................................................................................................... 5

    1.2.2. IDE Arduino .......................................................................................................... 6

    2. Sadas Digitais ....................................................................................................................... 8

    2.1. Experincia 1Blink .................................................................................................... 8

    2.1.1. Programando ......................................................................................................... 8

    2.1.2. Grandezas Digitais e Analgicas ........................................................................... 9

    2.1.3. Entendendo o programa ...................................................................................... 10

    2.2. Experincia 2Usando a Protoboard ......................................................................... 162.2.1. A Protoboard (Matriz de Contatos) ..................................................................... 16

    2.2.2. Separando os Ingredientes ................................................................................... 17

    2.2.3. Misturando os Ingredientes ................................................................................. 17

    2.2.4. Levando ao forno ................................................................................................ 18

    2.2.5. Entendendo o Hardware ...................................................................................... 18

    2.2.6. Cdigo de cores dos resistores ............................................................................ 19

    3. Entradas Digitais ................................................................................................................. 20

    3.1. Experincia 3Leitura de botes ............................................................................... 20

    3.1.1. Ingredientes ......................................................................................................... 20

    3.1.2. Misturando os ingredientes ................................................................................. 20

    3.1.3. Levando ao forno ................................................................................................ 20

    3.1.4. Preparando a cobertura ........................................................................................ 21

    3.1.5. Experimentando o prato ...................................................................................... 21

    3.2. Entendendo o Hardware .............................................................................................. 22

    3.3. Entendendo o Programa .............................................................................................. 234. Entrada Analgica ............................................................................................................... 26

    4.1. Experincia 4Lendo uma entrada analgica ............................................................ 26

    4.1.1. Ingredientes ......................................................................................................... 26

    4.1.2. Misturando os ingredientes ................................................................................. 26

    4.1.3. Levando ao Forno ................................................................................................ 26

    4.1.4. Preparando a cobertura ........................................................................................ 26

    4.1.5. Experimentando o prato ...................................................................................... 27

    4.2. Entendendo o Hardware .............................................................................................. 28

  • 8/10/2019 TABELA de COMANDOS_Vida de Silcio Apostila Arduino Bsico Vol.1

    3/42

    3

    4.3. Entendendo o programa .............................................................................................. 29

    4.3.1. Lendo da Entrada Analgica ............................................................................... 29

    4.3.2. Comunicao Serial ............................................................................................. 29

    5. PWM ................................................................................................................................... 31

    5.1. Usando a sada PWM .................................................................................................. 32

    5.2. Experincia 5Led com controle de intensidade ....................................................... 32

    5.2.1. Ingredientes ......................................................................................................... 32

    5.2.2. Misturando os ingredientes ................................................................................. 32

    5.2.3. Levando ao forno ................................................................................................ 33

    5.2.4. Preparando a cobretura ........................................................................................ 33

    5.2.5. Experimentando o prato ...................................................................................... 33

    5.3. Entendendo o programa .............................................................................................. 346. [EXTRA] Interrupo ......................................................................................................... 35

    6.1. Experincia 6Implementando uma interrupo ....................................................... 35

    6.1.1. Ingredientes ......................................................................................................... 35

    6.1.2. Misturando os ingredientes ................................................................................. 35

    6.1.3. Levando ao forno ................................................................................................ 36

    6.1.4. Preparando a cobertura ........................................................................................ 36

    6.1.5. Experimentando o prato ...................................................................................... 37

    6.2. Entendendo o Hardware .............................................................................................. 37

    6.3. Entendendo o programa .............................................................................................. 37

    7. Apndice - Tabela de consulta ............................................................................................ 39

  • 8/10/2019 TABELA de COMANDOS_Vida de Silcio Apostila Arduino Bsico Vol.1

    4/42

    4

    1. Introduo

    1.1. Arduino

    H no muito tempo, para se confeccionar um circuito interativo, era necessrio

    fazer projetos do zero para uma aplicao especfica. Para se fazer pequenas alteraesnas funcionalidades do circuito era necessrio um estudo crtico e bastante trabalho.

    Com o advento dos microcontroladores, foi possvel que problemas que eram

    tratados com hardware fossem tratados usando software de computadores. Dessa

    forma, um mesmo circuito poderia tomar funes totalmente diferentes, reprogramando

    e alterando alguns parmetros do programa.

    Mas mesmo assim, trabalhar com microcontroladores no to trivial. Desta

    forma, um grupo de pesquisadores italianos teve a idia de fazer um dispositivo quetornasse o seu uso simples e acessvel a qualquer um. O resultado foi o Arduino.

    A filosofia fazer com que qualquer pessoa possa criar um projeto interativo,

    sem a necessidade de ter que aprender sobre matrias complexas de engenharia. Dessa

    forma, qualquer um pode ser um criador de tecnologia, no importando idade ou

    especialidade, apenas algo presente em sobra no ser humano: a criatividade.

    1.2. O que realmente o Arduino?

    No site oficial da Arduino, encontramos a seguinte definio (traduzida):

    Arduino uma plataforma open-source de prototipagem eletrnica com

    hardware e software flexveis e fceis de usar, destinado a artistas, designers, hobbistas

    e qualquer pessoa interessada em criar objetos ou ambientes interativos.

    Ou seja, o Arduino uma plataforma formada por dois componentes: A placa

    Arduino, que o Hardware que usaremos para construir nossos projetos e a IDE

    Arduino, que o Software onde escrevemos o que queremos que a placa faa.

    A maior vantagem do Arduino sobre outras plataformas de desenvolvimento de

    microcontroladores a facilidade de sua utilizao: pessoas que no so da rea tcnica

    podem, rapidamente, aprender o bsico e criar seus prprios projetos em um intervalo

    de tempo relativamente curto.

  • 8/10/2019 TABELA de COMANDOS_Vida de Silcio Apostila Arduino Bsico Vol.1

    5/42

    5

    1.2.1. A placa Arduino

    O hardware do Arduino simples, porm muito eficiente. Vamos analisar a

    partir desse momento o hardware do Arduino UNO. Ele composto pelos seguintes

    blocos:

    Figura 1 - Arduino Uno

    1. Microcontrolador: O crebro do Arduino. Um computador inteiro dentro de

    um pequeno chip. Este o dispositivo programvel que roda o cdigo que

    enviamos placa. No mercado, existem vrias opes de marcas e modelos de

    microcontroladores. A Arduino optou pelo uso dos chips da ATmel, a linha

    ATmega. O Arduino UNO usa o microcontrolador ATmega32.

    2. Conector USB:Conecta o Arduino ao computador. por onde o computador e

    o Arduino se comunicam com o auxilio de um cabo USB, alm de ser uma

    opo de alimentao da placa.

    3. Pinos de Entrada e Sada: Pinos que podem ser programados para agirem

    como entradas ou sadas fazendo com que o Arduino interaja com o meioexterno. O Arduino UNO possui 14 portas digitais (I/O), 6 pinos de entrada

    analgica e 6 sadas analgicas (PWM).

    4. Pinos de Alimentao: Fornecem diversos valores de tenso que podem ser

    utilizados para energizar os componentes do seu projeto. Devem ser usados com

    cuidado, para que no sejam forados a fornecer valores de corrente superiores

    ao suportado pela placa.

    5.

    Boto de Reset:Boto que reinicia a placa Arduino.6. Conversor Serial-USB e LEDs TX/RX:Para que o computador e o

  • 8/10/2019 TABELA de COMANDOS_Vida de Silcio Apostila Arduino Bsico Vol.1

    6/42

  • 8/10/2019 TABELA de COMANDOS_Vida de Silcio Apostila Arduino Bsico Vol.1

    7/42

    7

    qualquer outro instalador de programa.

    Segunda Opo: Baixar todos os arquivos da IDE Arduino

    compactados para Windows (ZIP file), nessa verso basta baixar e

    descompactar na pasta que voc desejar, inclusive no seu pendriver ou

    HD virtual. Eu costumo descompactar na rea de Trabalho.

    Linux

    Baixar todos os arquivos da IDE Arduino compactados para

    Linux (32bit ou 64bit), nessa verso basta baixar e descompactar na

    pasta que voc desejar, inclusive no seu pendriver ou HD virtual. Eu

    costumo descompactar na rea de Trabalho.

    1.2.2.2. Entendendo a IDE Arduino

    Basicamente, se resume a um programa muito simples de se

    utilizar e de entender com bibliotecas que podem ser facilmente

    encontradas. As funes da IDE do Arduino so basicamente trs:

    permitir o desenvolvimento do software, de envi-lo placa para que

    possa ser executado e de se interagir com a placa Arduino.

    Figura 3 - IDE Arduino

  • 8/10/2019 TABELA de COMANDOS_Vida de Silcio Apostila Arduino Bsico Vol.1

    8/42

    8

    2. Sadas Digitais

    2.1. Experincia 1Blink

    Vamos nossa primeira experincia. Nessa experincia iremos fazer o Arduino

    piscar um LED de um em um segundo.O Arduino UNO REV3 possui um LED na placa ligado porta digital 13. Com

    isso, podemos testar o funcionamento de forma rpida e simples.

    2.1.1. Programando

    Com seu Arduino conectado ao computador e devidamente configurado, abra o

    menu File > Examples > 01. Basics > Blink. Uma nova janela deve ser aberta com um

    texto escrito, esse o programa.

    Com seu Arduino conectado ao computador, clique em Upload para que o

    programa seja transferido para seu Arduino.

    Se tudo foi feito corretamente, o led do pino 13, presente na placa do Arduino

    UNO, ir piscar intermitentemente.

    Figura 4 - Led conectado ao pino 13

    /* Blink - Pisca um led, de um em um segundo

    Este cdigo exemplo de domnio publico. */

    // Existe um LED conectado no pino 13 da maioria dos Arduinos

    // Daremos um nome a este pino:

    int led = 13;

    // Esta funo "setup" roda uma vez quando a placa e ligada ou resetada

    void setup() {

    // Configura o pino do led (digital) como sada

    pinMode(led, OUTPUT);

    }

    // Funo que se repete infinitamente quando a placa ligada

    void loop() {

    digitalWrite(led, HIGH); // Liga o LED (HIGH = nvel lgico alto)

    delay(1000); // Espera um segundo

    digitalWrite(led, LOW); // Desliga o LED (LOW = nvel lgico baixo)

    delay(1000); // Espera um segundo

    }

  • 8/10/2019 TABELA de COMANDOS_Vida de Silcio Apostila Arduino Bsico Vol.1

    9/42

    9

    2.1.2. Grandezas Digitais e Analgicas

    Para entendermos o Arduino, necessrio que saibamos diferenciar uma

    grandeza analgica de uma grandeza digital.

    Digital x Analgico

    Grandezas digitais so aquelas que no variam continuamente no tempo, mas

    sim em saltos entre valores bem definidos. Um exemplo so os relgios digitais: apesar

    do tempo em si variar continuamente, o visor do relgio mostra o tempo em saltos de

    um em um segundo. Um relgio desse tipo nunca mostrar 12,5 segundos, pois, para

    ele, s existem 12 e 13 segundos. Qualquer valor intermedirio no est definido.

    Grandezas analgicas so aquelas que, ao contrrio das grandezas digitais,

    variam continuamente dentro de uma faixa de valores. O velocmetro de um carro, por

    exemplo, pode ser considerado analgico, pois o ponteiro gira continuamente conforme

    o automvel acelera ou freia. Se o ponteiro girasse em saltos, o velocmetro seria

    considerado digital.

    Outra analogia interessante pode ser feita comparando uma escada com uma

    rampa: enquanto uma rampa sobe de forma contnua, assumindo todos os valores de

    altura entre a base e o topo, a escada sobe em saltos, com apenas alguns valores de

    altura definidos entre a base e o topo. A escada representa, portanto, uma grandeza

    digital, enquanto a rampa representa uma grandeza analgica. A quantidade de degraus

    em uma escada define quais posies podemos escolher. Por exemplo se uma escada

    tem um degrau em 1,00 m de altura do solo e o prximo est a 1,50 m ns no podemos

    ocultar a posio 1,38 m do solo porque no existe um degrau l. Quanto mais degraus

    adicionamos em um intervalo de altura menor mais perto da rampa nos aproximamos.

    Figura 5 - Sinal analgico

  • 8/10/2019 TABELA de COMANDOS_Vida de Silcio Apostila Arduino Bsico Vol.1

    10/42

    10

    Os circuitos e equipamentos eltricos ditos digitais trabalham com apenas dois

    valores de tenso definidos:

    Um nvel lgico alto, que no caso do Arduino 5V;

    Um nvel lgico baixo, que no caso do Arduino 0V.

    Na prtica existem faixas de valores prximos a esses nmeros em que o circuito

    digital entende como nvel alto ou baixo. Tambm existe uma faixa intermediria no

    definida que pode gerar resultados inesperados e que, portanto, deve ser evitada.

    Os circuitos e equipamentos eltricos ditos analgicos trabalham com uma faixa

    de valores chamada de range:

    No arduino essa faixa de valores (range) vai de 0V a 5V.

    As placas Arduino possuem uma clara diviso entre os pinos de entrada e sada

    digitais/analgicos, porm em algumas placas como o Arduino Uno qualquer pino pode

    ser utilizado como entrada ou sada digital.

    2.1.3. Entendendo o programa

    Pensando como um computador

    Computadores e microcontroladores no possuem uma inteligncia tal como um

    ser humano ou um animal. Eles so projetados para resolver problemas a partir de uma

    lista de tarefas, semelhante a uma receita de bolo.Dessa forma, para resolver um problema em um computador, tal como fazemos

    para resolver problemas cotidianos, fazer um bolo, por exemplo, devemos descrever a

    soluo de uma forma clara e precisa, por meio de passos a serem seguidos at que se

    atinja um resultado esperado.

    O nome dessa lista de passos algoritmo. Um algoritmo um conjunto finito de

    regras que fornece uma sequncia de operaes a fim de solucionar um problema.

    Veja o exemplo da seguinte receita de bolo:

  • 8/10/2019 TABELA de COMANDOS_Vida de Silcio Apostila Arduino Bsico Vol.1

    11/42

    11

    Essa receita se assemelha aos algoritmos que iremos fazer ao longo dessa

    apostila. Ele define o que iremos usar, e depois diz passo a passo o que devemos fazer.

    Veja que no podemos fazer o passo 4 sem antes fazer o passo 3, nem o passo 11

    sem os passos anteriores. Existe uma ordem a ser seguida para que o bolo fique

    conforme esperado.

    No diferente para o computador, ele precisa de ordens organizadas e

    coerentes, que ao final da receita resulte na soluo de seu problema.

    Sempre faa comentrios

    Sempre quando escrevemos um programa importante que deixemos notas

    explicando o seu uso, tanto para que outras pessoas entendam quanto para ns mesmo.

    Muitas vezes fazemos um programa para uma determinada funo achando que

    s iremos us-lo uma nica vez. Quando, depois de muito tempo, nos damos conta de

    que precisaremos dele novamente, j tarde. Por mais que voc seja bom de memria,

    muito difcil lembrar de tudo que voc pensou durante a confeco de seu programa.

    // RECEITA DE BOLO COMUM DE OVOS

    INCIO

    Passo 1: Separar os ingredientes

    Ingredientes:

    2 ovos;

    3 xcaras de farinha de trigo;1 e colher de fermento;

    xcara de leite.

    1/2 xcaras de acar;

    250g de manteiga;

    Modo de preparo:

    Passo 2: Aquea o forno a 180 graus;

    Passo 3: Quebre os ovos e separe as claras da gema;

    Passo 4: Bata as claras em neve e as deixe separadas;

    Passo 5: Em uma vasilha, bata o acar, a manteiga e as gemas;

    Passo 6: Misture a farinha e o leite;

    Passo 7: Bata bem, at ficar bem homogneo;

    Passo 8: Acrescente o fermento;

    Passo 9: Adicione as claras em neve e mexa cuidadosamente;

    Passo 10: Unte uma forma com manteiga e farinha de trigo.

    Passo 11: Coloque a massa na forma untada

    Passo 12: Leve ao forno mdio para assar por aproximadamente 35 minutos ou at que,

    ao espetar um palito, esse saia seco;

    Passo 13: Aps assado, desligue o forno e deixe o bolo esfriar;

    Passo 11: Desenforme e saboreie.

    FIM

  • 8/10/2019 TABELA de COMANDOS_Vida de Silcio Apostila Arduino Bsico Vol.1

    12/42

    12

    Dessa forma, quando no deixamos notas explicando como o programa

    funciona, perdemos tempo relendo todo o programa para entend-lo. Alm disso, caso

    algum pea seu programa emprestado, se o mesmo no estiver comentado, ser de

    difcil entendimento.

    Por isso, temos cdigos especiais na IDE Arduino para comentrios. Lembre-se

    de sempre us-las.

    Em resumo, um comentrio um texto que ser desconsiderado na hora de rodar

    o programa, ele no tem valor nenhum para o Arduino. Na IDE Arduino, os

    comentrios ficam em tonalidade cinza.

    Existem duas formas de fazer comentrios, podemos comentar um bloco de

    texto ou podemos apenas comentar uma linha.

    Para comentar um bloco de texto devemos definir o comentrio indicando o

    incio usando /* (barra e asterisco) e o final usando */ (asterisco e barra).

    Para comentar uma linha, definimos apenas o incio do comentrio, usando //

    (duas barras). No necessrio que se comece um comentrio de linha no incio da

    linha.

    s vezes, quando queremos testar o programa ignorando uma linha do cdigo,

    simplesmente comentamos ela. Dessa forma ela no ser lida na hora de carregar o

    programa para o Arduino.

    Variveis

    Quando programamos, precisamos continuamente guardar uma informao para

    usarmos posteriormente. Por exemplo, caso voc queira somar dois nmeros, voc ter

    que armazenar o resultado em algum lugar. Esse lugar reservado se chama varivel.

    Neste exemplo o lugar seria x, que recebe o resultado da soma 1+1.

    x = 1 + 1; //x recebe 2, que o resultado da soma 1+1

    //digitalWrite(led, HIGH); Essa linha no lida pelo Arduino

    // Existe um LED conectado no pino 13 da maioria dos Arduinos

    digitalWrite(led, HIGH); // Liga o LED (HIGH = nvel lgico alto)

    /* Blink - Pisca um led, de um em um segundo

    Este cdigo exemplo de domnio publico. */

  • 8/10/2019 TABELA de COMANDOS_Vida de Silcio Apostila Arduino Bsico Vol.1

    13/42

    13

    Imagine que a memria do seu Arduino possui muitas gavetas, quando queremos

    usar uma, devemos dar um nome a ela e falar qual tipo de contedo ela guardar. Cada

    gaveta uma varivel.

    Ao declarar uma varivel devemos definir qual tipo de contedo ela receber.

    Para isso voc deve saber com qual tipo de dado mexer. Em nosso exemplo, x deve ser

    uma varivel do tipo int, isso porque ela receber um valor inteiro.

    No Apndice 1 voc pode conferir uma tabela com os principais tipos de

    variveis e suas particularidades.

    Em nosso programa declaramos a varivel do tipo int chamada led que

    armazena o nmero 13, que o nmero da porta onde est localizado o LED que pisca

    com a execuo do programa. Dessa forma, quando escrevemos led em nosso programa,

    ele corresponder a 13, que est escrito dentro da varivel.

    int led = 13;

    Ao criar uma varivel, interessante que ela tenha um nome associado informao que ela

    armazena. No exemplo anterior, no lugar x poderamos ter usado o nomesomaou resultado.

    int x; //x uma varivel do tipo inteiro

    x = 1 + 1; //x recebe 2, que o resultado da soma 1+1

  • 8/10/2019 TABELA de COMANDOS_Vida de Silcio Apostila Arduino Bsico Vol.1

    14/42

    14

    Funo

    Muitas vezes desempenhamos um conjunto de instrues. Por exemplo: pense

    em uma situao cotidiana, constantemente precisamos saber qual a hora.

    Suponhamos que para isso voc desempenhe o seguinte conjunto de instrues.

    Para facilitar nossa vida, podemos chamar esse conjunto de instrues por um

    nome para que sempre que quisermos saber a hora, no seja preciso descrever todas as

    instrues necessrias para isso.

    Em resumo, funo um bloco de tarefas a serem executadas pelo programa

    quando solicitada. Agora, quando escrevemos Lerhora(), estamos chamando o conjunto

    de instrues correspondentes.

    Toda funo deve ter um nome e um tipo. No caso das duas, o tipo void e o

    nome setup e loop, respectivamente. Para sabermos onde comea e termina o bloco de

    tarefas de uma funo usamos { para indicar o inicio e } para indicar o final.

    Funo setup() e funo loop()

    No Arduino existem duas funes que so fundamentais ao programa, a setup e

    a loop. Elas so chamadas automaticamente pelomicrocontrolador quando ligado:

    A funo setup executada apenas uma vez ao ligar ou resetar sua placa

    Arduino. Nela colocamos todas as instrues que queremos que o Arduino execute

    apenas uma vez. Geralmente, nela que definimos parmetros iniciais de nosso

    programa.

    lerHora(); // Excuta o conjunto de instrues da funo lerHora

    void lerHora(){Pegue seu celular;

    Ligue a tela;

    Leia qual a hora;

    Desligue a tela;

    Guarde o celular;

    }

    Pegue seu celular;

    Ligue a tela;

    Leia qual a hora;

    Desligue a tela;

    Guarde o celular;

  • 8/10/2019 TABELA de COMANDOS_Vida de Silcio Apostila Arduino Bsico Vol.1

    15/42

    15

    Nesse exemplo, o nico comando contido na funo setup o pinMode, esse

    comando muito importante no uso das entradas e sadas digitais do Arduino. Com esse

    comando definimos se o pino uma entrada (input) ou uma sada (output). No nosso

    caso queremos que o pino 13 seja uma sada.

    A funo loop executada ciclicamente pelo Arduino. Dessa forma, ao chegar

    na ltima linha, ele volta para a primeira. Sendo assim, nessa funo escrevemos as

    funes que queremos que ocorram continuamente.

    Na funo loop temos dois comandos. O primeiro comando, o digitalWrite,

    define qual o estado de sada, LOWpara nvel lgico baixo (0V) e HIGHpara nvellgico alto (5V) de uma determinada porta, no nosso caso a porta 13 representada pela

    varivel led. Veja que devemos definir o pino que queremos mexer para depois escolher

    o estado para o qual ele deve ir.

    O segundo o delay. O comando delay cria uma pausa no algoritmo pelo tempo

    determinado em milissegundos (1 segundo igual a 1000 milissegundos).

    Ponto e virgula e chave

    Como j explicado, o microcontrolador do Arduino l o cdigo linha por linha,

    executando instruo por instruo. Dessa forma, quando escrevemos uma instruo,

    devemos informar onde ela comea e acaba. Para isso serve o ponto e vrgula (;).

    Veja o exemplo do delay(1000), essa instruo pede para que o Arduino pare por

    digitalWrite(led, HIGH); // Liga o LED (HIGH = nivel lgico alto)

    delay(1000); // Espera um segundo

    delay(1000); // Espera um segundo

    digitalWrite(led, HIGH); // Liga o LED (HIGH = nivel lgico alto)

    // Funo que repete infinitamente quando a placa ligada

    void loop() {

    digitalWrite(led, HIGH); // Liga o LED (HIGH = nivel lgico alto)

    delay(1000); // Espera um segundo

    digitalWrite(led, LOW); // Desliga o LED (LOW = nivel lgico baixo)

    delay(1000); // Espera um segundo

    }

    pinMode(led, OUTPUT); // led corresponde 13

    // Esta rotina "setup" roda uma vez quando a placa e ligada ou resetada

    void setup() {

    // Configura o pino do led (digital) como sada

    pinMode(led, OUTPUT); // led corresponde a 13

    }

  • 8/10/2019 TABELA de COMANDOS_Vida de Silcio Apostila Arduino Bsico Vol.1

    16/42

    16

    1 segundo. Para que o Arduino leia a instruo, entenda e execute, necessrio que ele

    saiba onde ela comea e onde ela termina. Nesse caso, ela comea logo aps o ponto e

    vrgula da linha anterior e acaba no ponto e vrgula da prpria linha.

    Para blocos de instrues usamos chaves, aberta { para comear e fechada }

    para terminar. Um exemplo de bloco de instrues so as funes.

    Nesse exemplo o bloco de funo setup comea no colchete aberto e termina no

    colchete fechado. J a instruo pinMode comea no colchete aberto e termina no ponto

    e vrgula.

    2.2. Experincia 2Usando a Protoboard

    Essa experincia ser semelhante anterior com a diferena de que

    aprenderemos a usar um equipamento fundamental para quem quer realizar experincias

    com circuitos eletrnicos, a Protoboard.

    2.2.1. A Protoboard (Matriz de Contatos)

    Quando trabalhamos com circuitos eltricos em laboratrio, muitas vezes

    usamos a protoboard. Ele tem o intuito de simplificar o processo de estudo e pesquisade circuitos eltricos e eletrnicos. Sendo uma matriz de contatos reutilizvel, evitamos

    a necessidade de confeccionar uma placa de circuito impresso e possibilita a fcil

    alterao do circuito, deixando ele flexvel.

    Figura 6 - Circuito impresso

    Nas extremidades podemos notar dois barramentos de contatos paralelos ao

    formato da protoboard. No centro temos barramentos perpendiculares com um pequeno

    espaamento no meio. A imagem a seguir mostra como est ordenado os barramentos.

    void setup() {

    pinMode(led, OUTPUT);

    }

  • 8/10/2019 TABELA de COMANDOS_Vida de Silcio Apostila Arduino Bsico Vol.1

    17/42

    17

    Figura 7 - Protoboard 400 furos

    Usando o Arduino, continuamente teremos que montar circuitos com LEDs,

    sensores, entre outros. Dessa forma, o uso de protoboards ser comum no seu dia-a-dia

    como um desenvolvedor.

    2.2.2. Separando os Ingredientes

    Para essa experincia precisaremos dos seguintes componentes:

    1 LED 5mm 1 Resistor 470 Fios Jumpers 1 Protoboard

    2.2.3. Misturando os Ingredientes

    Agora vamos conectar os componentes do projeto. Para isso monte seu circuito

    conforme a figura a seguir.

    Garanta que seu Arduino esteja desligado durante a montagem e que o seu LED

    esteja conectado corretamente, com a perna mais longa (Anodo) conectado ao resistor e

    a perna menor (catodo) ao GND.

    Figura 8 - Circuito da experincia 2

  • 8/10/2019 TABELA de COMANDOS_Vida de Silcio Apostila Arduino Bsico Vol.1

    18/42

    18

    2.2.4. Levando ao forno

    Agora temos que carregar o programa no Arduino. Caso voc tenha carregado

    outro programa ou ainda no fez o exemplo 1 e seu Arduino ainda no esteja com o

    programa Blink, volte ao item 2.1.1 e faa o mesmo procedimento da experincia 1, j

    que usaremos o mesmo programa.

    Depois que o Arduino estiver ligado com o programa carregado, o LED deve

    comear a piscar intermitentemente.

    2.2.5. Entendendo o Hardware

    Quando configuramos um pino como sada digital, tal como a porta 13 nessa

    experincia, ele pode fornecer 0 ou 5 V fazendo com que ele drene ou fornea corrente

    do circuito controlado. O valor mximo dessa corrente varia de placa para placa, mas,em geral, de 30mA. Essa corrente mais do que suficiente para ligar um LED de alto-

    brilho e alguns sensores, porm no suficiente para ligar a maioria dos rels e motores.

    Caso uma corrente maior que o limite, passe por um pino, este poder ser danificado.

    Quando precisamos de correntes maiores usamos dispositivos que, a partir datenso de sada do pino digital do Arduino, no chaveados para conduzir ou no

    conduzir a corrente vinda de uma fonte externa. Exemplo:

    Transistor (EXTRA);

    Rel;

    Ponte H (EXTRA)

    Resistor

    Componente eletrnico que dificulta a passagem de corrente eltrica. Estadificuldade de passagem de corrente denominada resistncia e medida em ohms.

    Cada componente e equipamento eletrnico possui uma corrente mxima de

    funcionamento, por isso, o uso de resistores essencial. Ele ter o papel de limitar a

    corrente mxima do circuito.

    Figura 9 - Resistor

    Ao usar um pino como sada tenha cuidado para no drenar mais que o mximo suportado.Caso uma corrente maior que o limite passe por um pino, este poder ser danificado. NoArduino esse valor costuma ser de 30mA.

    http://blog.vidadesilicio.com.br/arduino/arduino-intermediario/transistor/http://blog.vidadesilicio.com.br/arduino/arduino-intermediario/transistor/http://blog.vidadesilicio.com.br/arduino/arduino-intermediario/transistor/http://blog.vidadesilicio.com.br/robotica/ponte-h/http://blog.vidadesilicio.com.br/robotica/ponte-h/http://blog.vidadesilicio.com.br/robotica/ponte-h/http://blog.vidadesilicio.com.br/robotica/ponte-h/http://blog.vidadesilicio.com.br/arduino/arduino-intermediario/transistor/
  • 8/10/2019 TABELA de COMANDOS_Vida de Silcio Apostila Arduino Bsico Vol.1

    19/42

    19

    LEDs

    O LED (Diodo Emissor de Luz) um componente que, quando uma corrente

    eltrica passa por ele em um determinado sentido, passa a emitir luz. Por isso o LED

    tem que estar no sentido correto no circuito para no ter riscos de queim-lo.

    Figura 10 - LED

    2.2.6. Cdigo de cores dos resistores

  • 8/10/2019 TABELA de COMANDOS_Vida de Silcio Apostila Arduino Bsico Vol.1

    20/42

    20

    3. Entradas Digitais

    No capitulo anterior vimos como controlar uma sada digital e fizemos um LED

    piscar intermitentemente. No entanto, na vida real, um sistema interativo trabalha

    processando entradas e atuando atravs de sadas.Nesse capitulo, iremos aprender como acender um LED (sada) a partir de um

    boto (entrada).

    3.1. Experincia 3Leitura de botes

    3.1.1. Ingredientes

    Boto de presso Resistor 1k

    1 LED 5mm 1 Resistor 470 Fios Jumpers Protoboard

    3.1.2. Misturando os ingredientes

    Agora vamos conectar os componentes do projeto. Para isso monte seu circuito

    conforme a figura a seguir.

    Garanta que seu Arduino esteja desligado durante a montagem, e que o seu LED

    esteja conectado corretamente, com a perna mais longa (Anodo) conectado ao resistor ea perna menor (catodo) ao GND.

    Figura 11 - Circuito da Experincia 3

    3.1.3. Levando ao forno

    Conecte seu Arduino ao computador e abra a IDE Arduino. No menu Tools,

    certifique que a porta serial (serial port) esta selecionada e se a placa configurada aque voc est usando (board).

  • 8/10/2019 TABELA de COMANDOS_Vida de Silcio Apostila Arduino Bsico Vol.1

    21/42

    21

    3.1.4. Preparando a cobertura

    Agora temos que dar vida ao Arduino. Para isso, dentro da IDE Arduino: abra o

    menu File > Examples > 01. Basics > Button.

    Uma nova janela deve ser aberta com o programa conforme apresentado a

    seguir. Clique em Upload para que o programa seja transferido para seu Arduino.

    3.1.5. Experimentando o prato

    Caso tenha ocorrido tudo como esperado, quando voc apertar o boto acender

    o LED embutido na placa, ou o LED da protoboard caso tenha optado por manter o

    LED da experincia 2. Quando voc soltar o boto, o LED apagar.

    /*

    Button

    Utiliza um botao de pressao, conectado ao pino 2, para ligar e

    desligar um LED conectado ao pino digital 13.

    */

    // Determinanos constantes para os numeros dos pinos utilizadosconst int buttonPin = 2; // Numero do pino do botao de pressao

    const int ledPin = 13; // Numero do pino do led

    // Variaveis

    int buttonState = 0; // Variavel para leitura do estado do botao

    // Executa uma vez ao ligar ou resetar a placa

    void setup() {

    pinMode(ledPin, OUTPUT); //Inicializa o pino do LED como saida (OUTPUT)

    pinMode(buttonPin, INPUT); // Inicializa o pin do botao como entrada

    (INPUT)

    }

    // Executa infinitamente quando liga a placa

    void loop() {

    // L o estado do botao (HIGH -> +5V -> botao press.) (LOW -> 0V)

    buttonState = digitalRead(buttonPin);

    // Testa se o botao esta pressionado

    // Se sim, o estado do botao e alto (HIGH)

    if (buttonState == HIGH) {

    digitalWrite(ledPin, HIGH); // Liga o LED

    }

    // Seno (Botao nao pressionado)

    else {digitalWrite(ledPin, LOW); // Desliga o LED

    }

    }

  • 8/10/2019 TABELA de COMANDOS_Vida de Silcio Apostila Arduino Bsico Vol.1

    22/42

    22

    3.2. Entendendo o Hardware

    Quando configuramos um pino como entrada digital ele apresentar uma

    caracterstica chamada alta impedncia. Isso significa que uma pequena corrente

    consegue fazer com que seu estado mude. Podemos usar essa configurao, porexemplo, para ler botes, fotodiodos entre outros. E a partir do estado lido ou das

    mudanas desses estados, concluir o que est acontecendo no mundo externo e ento

    tomar aes baseadas nessas medidas.

    Para evitar esse problema, podemos utilizar um resistor de pull up ou pull down.

    Esses resistores faro com que a tenso em nossa entrada esteja bem definida quando omesmo no estiver conectado a nada. As figuras mostram trs ligaes de um boto a

    um pino do microcontrolador configurado como entrada digital. Para cada caso temos:

    Entrada sem pull up ou pull down: O estado do pino no estar bem definido

    fazendo com que este esteja suscetvel a rudo.

    Figura 12 - Entrada sem pull-down ou pull-up

    Pull-down: Neste caso, devido presena do resistor de pull-down, seu estado

    est bem definido e ele enxergar GND, consequentemente definindo seu estado

    como baixo.

    Figura 13 - Entrada com pull-down

    Pull-up: Neste caso, devido presena do resistor de pull-up, seu estado est

    bem definido e ele enxergar +5 V, consequentemente definindo seu estado

    como alto.

    Caso o pino seja configurado como entrada mas no estiver conectado a nada, ele poderalterar seu estado aleatoriamente por ser afetado pelo rudo eltrico do ambiente.

  • 8/10/2019 TABELA de COMANDOS_Vida de Silcio Apostila Arduino Bsico Vol.1

    23/42

    23

    Figura 14 - Entrada com pull-up

    Na experincia usamos um pul-down. Dessa forma, o pino 2 tem 0V

    normalmente. S alterando quando algum pressionar o boto, passando para 5V

    enquanto pressionado.

    3.3. Entendendo o Programa

    Boa parte desse programa semelhante ao usado na experincia 1 e 2.

    Focaremos agora na parte no apresentada anteriormente.

    Constantes

    Quando definimos uma varivel que no ir mudar ao longo da execuo do

    programa, definimos ela como uma constante.

    Um exemplo de varivel constante o nmero dos pinos do Arduino que

    usaremos, j que eles no mudaro ao longo do programa.

    Comando pinMode

    Na funo setup podemos encontrar o comando pinMode. Como j dito na

    experincia 1, esse comando muito importante no uso das entradas e sadas digitais do

    Arduino. Ele responsvel por definir se um pino uma entrada (INPUT) ou uma sada

    (OUTPUT).

    Na primeira linha da funo setup de nosso exemplo, temos o pino 13, definido

    pela constante ledpin, sendo configurado como sada digital.

    Na segunda linha temos o pino 2, definido pela constante buttonPin, sendo

    pinMode(ledPin, OUTPUT); //Inicializa o pino do LED como sada (OUTPUT)

    void setup() {

    pinMode(ledPin, OUTPUT); //Inicializa o pino do LED como saida (OUTPUT)

    pinMode(buttonPin, INPUT); // Inicializa o pin do botao como entrada

    (INPUT)

    // Determinamos constantes para os nmeros dos pinos utilizados

    const int buttonPin = 2; // Numero do pino do boto de presso

    const int ledPin = 13; // Numero do pino do led

  • 8/10/2019 TABELA de COMANDOS_Vida de Silcio Apostila Arduino Bsico Vol.1

    24/42

    24

    configurado como uma entrada digital.

    Comando digitalRead

    Na funo Loop temos o programa que rodar ciclicamente em nosso Arduino.Como desejamos acender um LED a partir de um boto, primeiramente devemos ler o

    seu estado. Para isso, usamos o comando digitalRead, que retorna o valor de estado de

    uma entrada digital passada como parmetro.

    Nesse comando, caso a tenso na entrada digital seja 5V, ele retornar 1, caso

    seja 0V, retornar 0.

    Para usar esse resultado devemos armazen-lo em algum lugar, nada melhor que

    uma varivel para isso. No exemplo, armazenaremos o valor do boto na varivel

    buttonState

    No nosso caso, quando o boto estiver pressionado, teremos 5V na porta 2, ou

    seja, 1 na varivel buttonState.

    Bloco IF

    Ao resolver um problema, constantemente teremos que tomar decises lgicas a

    partir dos resultados coletados. Vamos voltar receita do bolo. Caso esse bolo seja para

    uma festa de aniversrio, interessante que se faa uma cobertura, caso contrrio,

    podemos deixar o bolo sem cobertura. Veja como ficaria o algoritmo para essa situao:

    Veja que usamos um parmetro para decidir se iremos ou no executar uma

    atividade. Veja o fluxograma a seguir.

    um bolo deAniversrio?

    Se for: FaaCobertura

    Se no for :No Faa

    cobertura

    Funo bolo(){

    Faa o bolo;

    Se o bolo de aniversrio{

    Faa uma cobertura;

    }Seno

    No faa uma cobertura

    }

    fim

    // Comando que l o estado do botao (HIGH -> +5V -> botao press.) (LOW ->

    0V)

    pinMode(buttonPin, INPUT); // Inicializa o pin do botao como entrada (INPUT)

  • 8/10/2019 TABELA de COMANDOS_Vida de Silcio Apostila Arduino Bsico Vol.1

    25/42

    25

    Dessa forma, em nosso exemplo, caso buttonState seja igual a 1 (boto

    pressionado), devemos acender o LED, caso contrario, devemos apaga-lo.

    No programa fica assim:

    Operadores Lgicos

    Para usar blocos lgicos, tal como o bloco IF, usaremos operadores lgicos. Os

    operadores lgicos, junto aos parmetros, so responsveis por criar as condies de

    execuo de um bloco lgico.

    Voltando ao bolo, caso voc no tenha leite condensado, ser invivel fazer umacobertura de brigadeiro. Dessa forma, o nmero de latas de leite condensado disponveis

    devem ser maior ou igual a 1 lata para que seja vivel fazer essa cobertura.

    Vejamos o fluxograma resultante:

    A condio maior ou igual um operador lgico, veja os possveis operadores

    lgicos na tabela a seguir.

    Operadores de Comparao

    == Igual!= Diferente Maior

    = Maior e igual

    buttonState ==1?

    Se for: Ligue oLED

    Se no for :Desligue o LED

    N de latas de leitecondensado >= 1?

    Se for: Faa acobertura de

    brigadeiro

    Se no for : nofaa a cobertura

    de bigadeiro

    // Testa se o botao esta pressionado

    // Se sim, o estado do botao e alto (HIGH)

    if (buttonState == HIGH) {

    digitalWrite(ledPin, HIGH); // Liga o LED

    }

    // Seno (Botao nao pressionado)else {

    digitalWrite(ledPin, LOW); // Desliga o LED}

  • 8/10/2019 TABELA de COMANDOS_Vida de Silcio Apostila Arduino Bsico Vol.1

    26/42

    26

    4. Entrada Analgica

    O uso de entradas digitais limita nossas possibilidades, visto que o mundo

    analgico. Dessa forma, a leitura de valores analgicos muitas vezes se faz necessrio.

    Nesse captulo, aprenderemos como podemos usar as entradas analgicas dasplacas Arduino.

    4.1. Experincia 4Lendo uma entrada analgica

    4.1.1. Ingredientes

    Potencimetro Fios Jumpers Protoboard

    4.1.2. Misturando os ingredientesAgora vamos conectar os componentes do projeto. Para isso, monte seu circuito

    conforme a figura a seguir e garanta que seu Arduino esteja desligado durante a

    montagem.

    Figura 15 - Circuito da experincia 4

    4.1.3. Levando ao Forno

    Conecte seu Arduino ao computador e abra a IDE Arduino. No menu Tools,

    certifique de que a porta serial (serial port) est selecionada e que a placa configurada

    a que voc est usando (board).

    4.1.4. Preparando a cobertura

    Agora vamos implementao do programa. Nesse algoritmo iremos fazer

    diferente. Voc ter que escrever o programa tal como escrito abaixo, isso

  • 8/10/2019 TABELA de COMANDOS_Vida de Silcio Apostila Arduino Bsico Vol.1

    27/42

    27

    fundamental para que voc acostume com a linguagem e a estrutura da programao do

    Arduino.

    Para isso, dentro da IDE Arduino: abra o menu File > New ou aperte ctrl+N.

    Uma nova janela, em branco deve ser aberta.

    Agora devemos dar um nome ao nosso sketch (esse o nome dado aos

    programas no Arduino), mas podemos chamar de arquivo de programa ou cdigo.

    Dessa forma, dentro da IDE Arduino: Abra o menu File e clique em Save. Uma nova

    janela ser aberta onde voc escolher onde salvar seu programa e qual ser seu nome.

    Para facilitar a identificao, d o nome de programa_entradaanologica.

    Com o seu programa salvo, escreva nele o cdigo conforme escrito abaixo.

    Depois de escrever o cdigo, Clique em Upload para que o programa sejatransferido para seu Arduino.

    4.1.5. Experimentando o prato

    Para essa experincia, voc ter que abrir o serial Monitor que ser melhor

    explicado mais a frente. Para isso, o serial monitor pode ser aberto pelo cone mostrado

    na figura a seguir.

    Figura 16 - Monitor serial

    // Esta funo "setup" roda uma vez quando a placa e ligada ou resetada

    unsigned int valorLido;

    void setup() {

    Serial.begin(9600); //Inicia porta serial e define a velocidade de transmisso

    }

    // Funo que se repete infinitamente quando a placa ligada

    void loop() {valorLido = analogRead(A0);

    Serial.println(valorLido);

    delay(1000); // Esperaum segundo

    }

  • 8/10/2019 TABELA de COMANDOS_Vida de Silcio Apostila Arduino Bsico Vol.1

    28/42

    28

    Caso tenha ocorrido tudo como esperado, conforme voc varie a resistncia do

    potencimetro, girando seu eixo, aparecer no serial monitor um valor de 0 1023.

    4.2. Entendendo o Hardware

    Potencimetro e trimpot

    Potencimetros e trimpot so resistores variveis e ajustveis, e por isso so

    usados para controle analgico de funcionalidades de alguns aparelhos eletrnicos, tal

    como o volume de um aparelho de som.

    Eles costumam possuir trs pernas. Dois so ligados s extremidades da

    resistncia (A e B) e a terceira a um cursor que anda de ponta a ponta da resistncia

    (C).Dessa forma, podemos usar o resistor entre A e C ou B e C.

    Figura 17 - Potencimetro

    Divisor de tenso

    Quando temos n resistncia associadas em srie temos o nome de divisor de

    tenso. Em um circuito divisor de tenso, temos uma queda de tenso em cada

    resistncia igual ao produto da resistncia com a corrente do circuito.

    Como a corrente do circuito calculada pela diviso da tenso em cima de todos

    os resistores dividido pela soma dos resistores, teremos a tenso em cima de um resistor

    igual a resistncia desse resistor vezes a tenso total dividida pela soma dos resistores.

    O exemplo a seguir mostra como funciona o clculo o para dois resistores.

  • 8/10/2019 TABELA de COMANDOS_Vida de Silcio Apostila Arduino Bsico Vol.1

    29/42

    29

    Figura 18 - Divisor de tenso

    Quando usamos um potencimetro, podemos usar a propriedade do divisor de

    tenso. Sabemos que a tenso total e a resistncia total so fixas. Dessa forma, o divisor

    de tenso vai variar com a resistncia A0 e GND.

    4.3. Entendendo o programa

    4.3.1. Lendo da Entrada Analgica

    A leitura da entrada analgica feita com a funo analogRead, que recebe

    como parmetro o pino analgico a ser lido e retorna o valor digital que representa a

    tenso no pino. Como o conversor analgico-digital do Arduino possui uma resoluo

    de 10 bits, o intervalo de tenso de referncia, que no nosso caso 5 V, ser dividido

    em 1024 pedaos (2^10) e o valor retornado pela funo ser o valor discreto mais

    prximo da tenso no pino.

    O cdigo acima l o valor analgico de tenso no pino A0 e guarda o valor

    digital na varivel valorLido. Supondo que o pino est com uma tenso de 2V, o valor

    retornado pela converso ser:

    2 x 1024 / 5 = 409,6

    O resultado deve ser inteiro para que nosso conversor consiga represent-lo,

    logo o valor 410 ser escolhido por ser o degrau mais prximo. Esse valor representa a

    tenso 2,001953125, inserindo um erro de 0,001953125 em nossa medida devido a

    limitao de nossa resoluo.

    4.3.2. Comunicao Serial

    A comunicao serial amplamente utilizada para comunicar o Arduino com

    O uso do comando unsigned na declarao da varivel informa que usaremos apenasnmeros positivos para essa varivel.

    unsigned int valorLido = analogRead(A0);

  • 8/10/2019 TABELA de COMANDOS_Vida de Silcio Apostila Arduino Bsico Vol.1

    30/42

    30

    outros dispositivos como mdulos ZigBee, Bluetooth, entre outros. A comunicao com

    o computador possvel atravs do conversor serial USB presente nas placas. A

    biblioteca padro do Arduino possui algumas funcionalidades para a comunicao serial

    de modo a facilitar a utilizao desta funo.

    Serial Monitor

    A possibilidade de visualizar na tela do computador os dados coletados e

    processados pelo Arduino fundamental, visto que um forma rpida e prtica de

    visualizar esses dados. Para isso, usamos o Serial Monitor.

    O Serial Monitor disponibiliza uma interface grfica que facilita a comunicao

    entre o Arduino e um computador. Aps selecionarmos a porta serial adequada, o serial

    monitor pode ser aberto pelo cone no canto superior direito da janela, onde

    representado por uma lupa.

    Enviando Dados

    Na maioria das vezes, o envio de dados pela porta serial pode ser feito atravs

    das funes print e println. A funo print imprime os dados na serial utilizando o

    cdigo ASCII. Essa funo recebe dois parmetros e retorna a quantidade de bytes que

    foram escritos.

    O parmetro var recebe o valor a ser impresso. A funo sobrecarregada de

    modo a ser capaz de receber qualquer tipo padro (char, int, long, float etc).

    Quando o texto estiver entre aspas, isso simboliza que voc deseja imprimir um

    texto. Caso contrrio, voc deseja imprimir uma varivel.

    A funo println imprime o valor desejado semelhantemente a funo print,

    porm imprime na sequncia os caracteres \r e \n de modo que crie uma nova linha.

    Serial.print(var); // Imprime a varivel var

    Serial.print(ol);// Imprime o texto ol

    Serial.begin(9600); //Inicia porta serial e define a velocidade de transmisso

  • 8/10/2019 TABELA de COMANDOS_Vida de Silcio Apostila Arduino Bsico Vol.1

    31/42

    31

    5. PWM

    PWM (Pulse Width Modulation Modulao por Largura de Pulso) uma

    tcnica para obter resultados analgicos por meios digitais. Essa tcnica consiste na

    gerao de uma onda quadrada em uma frequncia muita alta em que pode sercontrolada a porcentagem do tempo em que a onda permanece em nvel lgico alto.

    Esse tempo chamado de Duty Cycle e sua alterao provoca mudana no valor mdio

    da onda, indo desde 0V (0% de Duty Cycle) a 5V (100% de Duty Cycle) no caso do

    Arduino.

    Figura 19 - Sinal PWM

    O duty cycle a razo do tempo em que o sinal permanece na tenso mxima

    (5V no Arduino) sobre o tempo total de oscilao, como est ilustrado na figura abaixo:

    Figura 20 - Duty cycle

    Duty Cycle (%) = (x/x+y)*100% = (x/T)*100%

    Vmdio = Vmax*Duty Cycle(%)

    O valor do Duty Cycle usado pelo Arduino um inteiro armazenado em 8 bits,de forma que seu valor vai de 0 (0%) a 255 (100%).

  • 8/10/2019 TABELA de COMANDOS_Vida de Silcio Apostila Arduino Bsico Vol.1

    32/42

    32

    5.1. Usando a sada PWM

    Para escrever um sinal na sada PWM utiliza-se a funo analogWrite, que

    recebe como parmetros o pino PWM e o valor do duty cycle, respectivamente. Esse

    ltimo parmetro guardado em 8 bits, de modo que esse valor deve estar entre 0 (0%de duty cycle) e 255 (100% de duty cycle).

    Variando o duty cycle altera-se tambm o valor mdio da onda, de modo que o

    efeito prtico obtido com o PWM em algumas aplicaes um sinal com amplitude

    constante e de valor igual ao valor mdio da onda. Isso permite que se possa, por

    exemplo, controlar a intensidade do brilho de um LED, ou a velocidade de um motor de

    corrente contnua.

    5.2. Experincia 5Led com controle de intensidade

    5.2.1. Ingredientes

    Potencimetro LED 5mm

    Resistor 470 Fios Jumpers Protoboard

    5.2.2. Misturando os ingredientes

    Agora vamos conectar os componentes do projeto. Para isso, monte seu circuito

    conforme a figura a seguir.

    Garanta que seu Arduino esteja desligado durante a montagem e que o seu LED

    esteja conectado corretamente, com a perna mais longa (Anodo) conectado ao resistor e

    a perna menor (catodo) ao GND.

    analogWrite(9,127);//Escreve no pino 9 um sinal PWM com 50% de duty cycle

    //(50% de 255=127)

    analogWrite(10,64);//Escreve no pino 10 um sinal PWM com 25% de duty cycle

    //(25% de 255=64)

  • 8/10/2019 TABELA de COMANDOS_Vida de Silcio Apostila Arduino Bsico Vol.1

    33/42

    33

    Figura 21 - Circuito da experincia 5

    5.2.3. Levando ao forno

    Conecte seu Arduino ao computador e abra a IDE Arduino. No menu Tools,

    certifique que a porta serial (serial port) est selecionada e se a placa configurada a

    que voc est usando (board).

    5.2.4. Preparando a cobretura

    Crie um programa (sketch) e salve com o nome de programa_pwm. Com o seu

    programa salvo, escreva nele o cdigo conforme escrito abaixo.

    Depois de escrever o cdigo, Clique em Upload para que o programa seja

    transferido para seu Arduino.

    5.2.5. Experimentando o prato

    Se tudo der certo, conforme girarmos o potencimetro, a intensidade de luzemitida pelo LED diminuir ou aumentar.

    // Daremos um nome ao pino que est conectado o LED

    int led = 13;

    unsigned int valorLido;

    unsigned int pwm;

    // Esta funo "setup" roda uma vez quando a placa e ligada ou resetada

    void setup() {

    pinMode(led, OUTPUT); // Configura o pino do led (digital) como sada

    }

    // Funo que se repete infinitamente quando a placa ligada

    void loop() {valorLido = analogRead(A0); // valor entre 0 e 1024

    pwm = map(valorLido, 0, 1023, 0, 255); // Mudana de escala

    analogWrite(led,pwm);//Escreve no led um sinal PWM proporcional ao valorLido

    }

  • 8/10/2019 TABELA de COMANDOS_Vida de Silcio Apostila Arduino Bsico Vol.1

    34/42

    34

    5.3. Entendendo o programa

    Como j explicado no incio do captulo, o PWM pode ser usado para simular

    uma sada analgica. Variando um sinal de sada de PWM de 0 a 255, estamos variando

    o Duty Cycle, que por sua vez, resulta numa sada de 0V a 5V.Como a intensidade de luz no LED est diretamente ligada quantidade de

    corrente que passa por ele e essa corrente proporcional a tenso do resistor em srie

    com o LED, conforme variamos a tenso do pino 13 atravs do PWM, alteramos a

    intensidade de luz emitida pelo LED.

    Para variarmos o PWM, usamos o valor analgico lido no potencimetro e

    armazenamos na varivel valorLido, que armazena valores entre 0 e 1023. Porm, para

    que seja possvel usar essa varivel para controlar o PWM, devemos mudar sua escala

    para 0 a 255. Para isso usaremos a funo. Tal funo recebe uma varivel e muda sua

    escala.

    Depois de mudarmos de escala, basta escrevermos o valor de PWM na sada do

    LED.

    analogWrite(led,pwm);//Escreve no led um sinal PWM proporcional ao valorLido

    pwm = map(valorLido, 0, 1023, 0, 255); // Mudana de escala

    valorLido = analogRead(A0); // valor entre 0 e 1024

  • 8/10/2019 TABELA de COMANDOS_Vida de Silcio Apostila Arduino Bsico Vol.1

    35/42

    35

    6. [EXTRA] Interrupo

    Imagine que voc esteja fazendo seu bolo e no meio da receita seu telefone

    toque. Possivelmente voc ir parar o que est fazendo e ir atender o telefone, assim

    que encerrar a chamada voc ir retornar ao ponto que parou em sua receita.Quando estamos executando um tarefa muitas vezes temos que a interromper

    para resolver outra tarefa importante para s depois retornar do ponto que se parou. Isso

    se chama interrupo e usada com freqncia na programao de microcontroladores.

    Uma interrupo tem dois pontos chaves, so eles:

    Condio de interrupo

    a condio que indica uma interrupo. Ela avisa ao programa que a hora de

    executar uma tarefa extraordinria. No nosso exemplo, essa condio o toque dotelefone.

    Funo a ser executada

    Quando algo indica a interrupo, temos que executar uma lista de instrues

    referentes a essa interrupo. No exemplo dado, temos que parar de fazer o bolo e ir

    atender ao telefone. A funo atender telefone uma funo extraordinria que s

    executada pelo fato de ter ocorrido a condio de interrupo, o toque do telefone.

    Para aprender como implementar uma interrupo, vamos fazer a experincia 4.

    Nela voc poder entender melhor esse conceito de interrupo em um

    microcontrolador.

    6.1. Experincia 6Implementando uma interrupo

    6.1.1. Ingredientes

    Boto de presso

    LED 5mm Resistor 1k Resistor 470 Fios Jumpers Protoboard

    6.1.2. Misturando os ingredientes

    Agora vamos conectar os componentes do projeto. Para isso, monte seu circuito

    conforme a figura a seguir.

    Garanta que seu Arduino esteja desligado durante a montagem e que o seu LED

  • 8/10/2019 TABELA de COMANDOS_Vida de Silcio Apostila Arduino Bsico Vol.1

    36/42

    36

    esteja conectado corretamente, com a perna mais longa (Anodo) conectado ao resistor e

    a perna menor (catodo) ao GND.

    Figura 22 - Circuito da experincia 6

    6.1.3. Levando ao forno

    Conecte seu Arduino ao computador e abra a IDE Arduino. No menu Tools,

    certifique-se que a porta serial (serial port) est selecionada e que a placa configurada

    a que voc est usando (board).

    6.1.4. Preparando a cobertura

    Crie um programa (sketch) e salve com o nome de programa_interrupcao.Com o seu programa salvo, escreva nele o cdigo conforme escrito abaixo.

    // Existe um LED conectado no pino 13 da maioria dos Arduinos

    // Daremos um nome a este pino:

    int led = 13;

    void interrupo(){

    digitalWrite(led, HIGH); // Liga o LED (HIGH = nvel lgico alto)

    delay(5000);

    }

    // Esta funo "setup" roda uma vez quando a placa e ligada ou resetadavoid setup() {

    pinMode(led, OUTPUT); // Configura o pino do led (digital) como sada

    attachInterrupt(0,interrupcao,RISING); //Configurando a interrupo

    }

    // Funo que se repete infinitamente quando a placa ligada

    void loop() {

    digitalWrite(led, HIGH); // Liga o LED (HIGH = nvel lgico alto)

    delay(1000); // Espera um segundo

    digitalWrite(led, LOW); // Desliga o LED (LOW = nvel lgico baixo)

    delay(1000); // Espera um segundo

    }

  • 8/10/2019 TABELA de COMANDOS_Vida de Silcio Apostila Arduino Bsico Vol.1

    37/42

    37

    Depois de escrever o cdigo, clique em Upload para que o programa seja

    transferido para seu Arduino.

    6.1.5. Experimentando o prato

    Caso tenha ocorrido tudo como esperado, o LED deve piscar intermitentemente.

    Quando voc apertar o boto, o LED da protoboard permanecer aceso por 5 segundos.

    Caso voc no pressione o boto novamente, ele voltar a piscar.

    6.2. Entendendo o Hardware

    As placas Arduino possuem pinos que podem desempenhar a funo de entrada

    de sinal para interrupo externa. No Arduino UNO so as portas digitais 2 e 3, que para

    tal funo so nomeadas de INT0 e INT1, respectivamente. Veja a tabela a seguir com

    os pinos de cada placa Arduino que possuem essa qualidade.

    Dessa forma, para que seja possvel o uso da interrupo externa, escolhemos o

    pino digital 2 (INT0), no qual conectamos o boto.

    6.3. Entendendo o programa

    Com o conhecimento adquirido at agora, voc j pode entender a maioria dos

    programas. Dessa forma, iremos nos ater as novidades.

    Configurando a interrupo

    Para que o Arduino leia uma interrupo, devemos configur-lo. Para tal

    usaremos o comando attachInterrupt().

    Como explicado anteriormente, numa interrupo temos dois pontos chaves: a

    condio da interrupo e a funo que ser executada. Dessa forma, o comando

    attachInterrupt usado para informar ao programa esses dados. So eles:

    INT: Nmero da porta usada para a interrupo. No Arduino UNO INT 0

    corresponde porta digital 2 e INT 1 corresponde porta digital 3;

    FUNO: Nome da funo que ser chamada quando ocorre a interrupo;

    MODO:Define em qual tipo de variao do sinal a interrupo ser disparada.

    Board int.0 int.1 int.2 int.3 int.4 int.5

    Uno, Ethernet 2 3

    Mega2560 2 3 21 20 19 18

    Leonardo 3 2 0 1 7

    attachInterrupt(INT,FUNO,MODO); //Configurando a interrupo

  • 8/10/2019 TABELA de COMANDOS_Vida de Silcio Apostila Arduino Bsico Vol.1

    38/42

    38

    As opes so:

    LOW: Dispara a interrupo quando a tenso no pino est em 0V

    CHANGE: Dispara sempre que o sinal no pino muda de estado,

    borda 0V (0) para 5V(1) ou vice-versa;

    RISING: Dispara somente borda de subida, 0v (0) para 5V ( 1);

    FALLING: Dispara somente borda de descida, 5V (1) para 0V

    (0)

    Em nosso programa, usaremos esse comando da seguinte forma:

    Portanto, temos como condio de interrupo a mudana de estado de 0V (0)

    para 5V(1) no pino digital 2 (INT 0) e a funo a ser executa se chama interrupo.

    Funo interrupcao()

    Como j explicado no captulo 2, funo um bloco de tarefas a serem

    executadas pelo programa quando solicitada.

    No nosso caso, a funo ser solicitada quando ocorrer a interrupo. As tarefas

    a serem executadas sero: acender o LED e esperar 5 segundos.

    void interrupo(){ //Funo executada quando ocorre a interrupo externa

    digitalWrite(led, HIGH); // Liga o LED (HIGH = nvel lgico alto)

    delay(5000);

    }

    attachInterrupt(0,interrupcao,RISING); //Configurando a interrupo

  • 8/10/2019 TABELA de COMANDOS_Vida de Silcio Apostila Arduino Bsico Vol.1

    39/42

    39

    7.Apndice - Tabela de consulta

    Funes Matemticas e de tempo

    delay(t) O programa tem uma pausa de t milissegundos

    delayMicroseconds(t) O programa tem uma pausa de t microssegundos

    millis() Retorna o tempo, em milissegundos, desde que o programa comeou a rodarrandomSeed(referncia) Gera uma referncia para o primeiro nmero aleatrio (Funo setup)

    random(min,max) Gera um valor pseudo aleatrio int entre min e max (a funo acima necessria)

    abs(x) Retorna o mdulo (valor absoluto) do nmero real passado como parmetro

    map(valor,min1,max1,min1

    ,max2)

    Converte um valor inserido em uma faixa de valores para um proporcional em umanova faixa de valores. Mudana de range.

    sin(x) Retorna o seno de x(rad)

    Entradas Analgicas

    anologRead(Pino) L entrada analgica 0-5V transformando em 10 bits (resoluo 4,9mV)Pinos analgicos podem ser usados como porta digitais usando a funo pinMode(), quando usado como porta

    analgica no necessitam de configurao.

    Sadas/entradas Digitais e PWM

    pinMode(porta,Tipo) Define se a porta ser uma entrada (TIPO=INPUT) ou uma sada(TIPO= OUTPUT).

    digitalWriter (pino, VL) Coloca 0V (VL =LOW) ou 5V(VL = HIGH) na sada.

    digitalRead(pino) L o sinal digital no pino citado.

    analogWrite(pino, x) Sada PWM 500Hz ( 0

  • 8/10/2019 TABELA de COMANDOS_Vida de Silcio Apostila Arduino Bsico Vol.1

    40/42

    40

    Variveis

    Tipo de dado RAM Intervalo numrico

    boolean 1 byte 0 a 1 (false ou true)

    int 2 bytes -32.768 a 32.767

    unsigned int 2 bytes 0 a 65.535

    Word 2 bytes 0 a 65.535Char 1 byte -128 a 127

    usigned char 1 byte 0 a 255

    Byte 1 byte 0 a 255

    void keyword N/A N/A

    Long 4 bytes -2.147.483.648 a 2.147.483.647

    Usigned long 4 byte 0 a 4.294.967.295

    float 4 byte -3,4028235e+38 a 3,4028235e+38

    Double 4 byte -3,4028235e+38 a 3,4028235e+38

    string 1 byte + x Sequncia de caracteres

    array (vetor) 1byte + x Sequncia de variveistipovar nomeMatriz[n de

    posies]

    Comunicao Serial

    Serial.begin(TAXA) Habilita a porta serial e fixa a taxa de transmisso (funo setup)

    Serial.end() Desabilita a porta serial para permitir o uso dos pinos digitais

    Serial.flush() Libera caracteres que esto na linha serial, deixando-a vazia e pronta para entradase sadas.

    Serial.available() Retorna o nmero de bytes disponveis para leitura no buffer da porta serial.

    Serial.read() L o primeiro byte que est no buffer da porta serialSerial.print(valor,formato) Envia para a porta serial um caractere ASCII

    Serial.println(valor,formato) O mesmo que o anterior, porem pula uma linha

    Operadores de Comparao

    == Igual

    != Diferente

    < Menor

    > Maior

    >= Maior ou igual

  • 8/10/2019 TABELA de COMANDOS_Vida de Silcio Apostila Arduino Bsico Vol.1

    41/42

    41

    x*=y x = x*y

    x/=y x = x/y

    Smbolos

    {} Entre as chaves fica o contedo da funo

    ; Final de um comando/linha

    // Linha de comentrio/* ... */ Comentrio de varias linhas

    Funes

    If(condio)

    {}

    else

    {}

    Funo Se e Se no

    if(condio)

    {}else if(condio 2)

    {}

    Funo Se em cascata

    switch(expresso){

    case expresso = x: Bloco1;

    break;

    case expresso = y: Bloco2;

    break;

    default: bloco3

    }

    Funo Caso

    while(condio){blocofunes}

    Funo Enquanto

    do{

    bloco de instrues

    }

    while(condio);

    Funo Enquanto, ela executada pelo menos uma vez.

    for(var;condio;incremento)

    {}

    Funo Para

    (condio) ? bloco1:bloco2;

    Operador ternrio ? caso condio seja verdadeira ele executa o bloco 1, caso

    contrario, executa o bloco 2.Ex.: y = (x >10)? 15:20; // caso x>10 y=15, caso contrario, y = 20

  • 8/10/2019 TABELA de COMANDOS_Vida de Silcio Apostila Arduino Bsico Vol.1

    42/42

    J parou pensar o que aconteceria se todos soubessem como criar robs? Todos

    compartilhando seus conhecimentos e ajudando outras pessoas em seus projetos, projetos

    inovadores sendo criados a todo instante. Tudo isso sendo feito por um nico propsito,

    mudar o mundo.

    Essa revoluo j vem acontecendo e a internet tem unido as pessoas de forma nunca

    vista antes. O conhecimento nunca foi to acessvel como tem sido agora e a pessoas tm cada

    vez mais aderido filosofia do Open Source.

    O Vida de Silcio quer fazer parte de tudo isso ajudando as outras pessoas a

    construrem um mundo melhor. Tem muita coisa para ser criada ou melhorada, como porexemplo, a robtica de reabilitao, rea que ainda tem muito para evoluir.

    Para isso, montamos uma loja onde oferecemos a maior variedade possvel de itens

    para confeco de projetos de robtica, eletrnica e automao, com preos amigveis.

    Alm disso, temos um blog com tutoriais bacanas e didticos para que todos possam

    aprender a usar um Arduino e outras placas de desenvolvimento, de forma simples e prtica.

    Conhea nosso site, ficaremos felizes em lhe receber!

    Atenciosamente,Equipe Vida de Silcio