apostila arduino basico

Download Apostila Arduino Basico

Post on 07-Feb-2016

19 views

Category:

Documents

1 download

Embed Size (px)

TRANSCRIPT

  • Tutorial bsico de arduino* para programadores

    Jos de Figueiredo (autor)Sulen Camargo (reviso)

    ApresentaoEste tutorial est sendo desenvolvido para orientar, de forma

    introdutria, o uso do arduino. Nosso pblico-alvo so profissionais de TI, que j tenham alguma experincia com a linguagem de programao C/C++.O que o arduino?

    um kit de prototipagem rpida, uma placa de circuitos eletrnicos, que foca na automao de dispositivos e sistemas. Para isto a placa possui um microcontrolador programvel com diversos pinos de entrada e sada, digitais e analgicas.

    Com o arduino, pode-se automatizar uma variedade de atividades eletro/mecnica desde que o arduino esteja devidamente preparado e equipado para tal. Como por exemplo, pode-se automatizar a abertura e fechamento de cortinas conforme determinadas condies ditadas de acordo com as preferncias do usurios.

    A figura 1 mostra a placa da ltima verso do arduino, a Arduino UNO.

    Figura 1

    Para os profissionais da computao, esta ferramenta se revela de grande valia, uma vez que uma das formas de implementar de forma prtica e rpida, a Internet das Coisas e tambm a computao 1ubqua/pervasiva, conceitos estes relacionados a computao distribuda, um fator de alta relevncia na atualidade.

    O arduino tambm contribui para reduo de custos e o desperdcio de tempo em projetos de automao.1Tambm chamada de IoT Internet of Things

  • Verses do arduino

    O arduino fornecido em diversos formatos que so escolhidos conforme as necessidades especficas do usurio. Apresentamos aqui 3 dos modelos mais comuns:

    Arduino UNO: a placa mais recente fornecida pelos desenvolvedores(dez/2012). sobre esta placa que este tutorial est sendo baseado;

    Arduino MEGA: uma verso mais robusta, tem mais velocidade e mais portas de interfaceamento;

    Arduino NANO: Verso compacta, com caractersticas parecidas com as do UNO.Outras verses e variaes podem ser encontradas no mercado. Por ser

    uma tecnologia de hardware livre diferentes verses podem ser criadas por 2diferentes desenvolvedores. Expandindo assim as capacidades desta tecnologia.Caractersticas tcnicas do arduino UNO

    Alimentao: A placa do circuito pode ser energizada com tenses de7v a 12v. Isto pode ser feito com baterias, pilhas ou fontes externas usandoo pluge de alimentao disponibilizado na placa, assim como via USB. Emaplicaes simples usamos alimentao via USB, porm esta no poder serusada quando precisarmos da comunicao serial do aparelho.

    Alimentao: A placa trabalha com alimentao entre 7v e 12v.Tenso de operao: A placa trabalha, considerando o uso das sadas

    PWM , com tenses de 0 a 5V.3Corrente nos pinos de I/O: A corrente mxima suportada por cada

    pino de 40mA. A corrente total de kit de 150mA.Memria flash: 32KB - a memria onde gravado o programa que foi

    criado - denominado firmware.Memria de execuo: 2KBPinos de I/O:

    14 no total, sendo que 6 destes podem ser configurados comosadas PWM;

    6 pinos de entrada analgica (conversor A/D); 1 porta serial (pinos 0 e 1) ou porta serial USB.

    2 Forma de tecnologia em que qualquer desenvolvedor tem acesso a sua fonte, tendo totalliberdade para executar melhorias e/ou modificaes.3 PWM - Pulse Width Modulation.

  • Programao do arduinoO arduino programado em linguagem C/C++ em uma IDE

    dedicada e fornecida pelo prprio arduino. A ferramenta multiplataforma e traz embutida compilador e gravador.

    Estrutura do programa feito para arduino no IDE arduinoTodo programa tem duas funes principais que so:

    void setup() - executada apenas uma vez - na inicializao da placa (quando esta for ligada). Esta funo frequentemente usada para incializar variveis, objetos ou mtodos.

    void loop() - executada sequencialmente, em loop infinito, aps a inicalizao. onde nosso programa fica.

    Para um programar necessrio conhecer o hardware e entender como o programa que iremos criar interage com este hardware. preciso saber quais pinos ligamos usamos, como usamos e quando usamos.

    Queremos um programa que ligue um led - ento precisamos saber onde o led foi ligado, para poder codificar usando a porta certa.

    Primeiro Hello WorldUm hello world no arduino pode significar uma infinidade de opes.

    Nesta primeira verso vamos fazer o led que est na placa (ao lado do pino 13 (pisca em cor laranja).

  • helloworldv1.inobyte Led = 13;void setup(){ pinMode(Led, OUTPUT);}void loop(){ digitalWrite(Led,HIGH); delay(1000); digitalWrite(Led,LOW); delay(1000);}

    Segundo Hello WorldO circuito: O circuito mostrado na figura abaixo apresenta um led

    comum, ligado a um resistor de 220R entre os pinos 13 e GND. A lgica do circuito pode ser entendida assim: o sinal lgico alto e 5v (HIGH) sai pelo pino 13, passa pelo resistor de 220R (limitador de corrente) e passa pelo led; se o sinal lgico for baixo (LOW), ento na da passa pelo led e este fica desligado.

    1. Porque precisamos usar um resisitor? Nenhum componente pode ser ligado diretamente na placa arduino (e a nenhum outra placa eletrnica) sem um resistor limitador de corrente. Este resistor limitador de corrente impede que o LED puxe mais corrente do que o arduino pode fornecer. Se o led for ligado diretamente (sem o resistor), a porta de sada do arduino (e talvez o prprio arduino) ser quimada por sobre corrente. Esta caracterstica muito importante para garantir

  • a longevidade do kit, caso contrrio.

    2. Um pouco mais sobre corrente: De forma bem simples, a corrente eltrica o movimento dos eltrons em um condutor; este movimento de eltrons capaz de produzir trabalhos, como ligar leds, motores, acionar dispositivos entre outros. A unidade de medida usada para medir corrente conhecida por ampre (simbolo A, tambm encontramos I). Em circuitos microcontrolados a corrente muito pequena, frequentemente medida em miliamperes (mA).

    a. Entendendo o consumo: Para qualquer coisa funcionar, preciso saber quantos Ampres sero consumidos. Por exemplo: uma lmpada incandescente de 100W (aquelas antigas) precisa de aproximadamente 0,45A para ligar; se ligarmos 3 lampadas em um circuito qualquer, teremos um consumo de 3 x 0,45A = 1,3A.

    b. Consumo no arduino: No caso do arduino, trabalhamos com eletrnica de baixo consumo. Um led consome aproximadamente 0,015A para funcionar (15 mA) - uma porta do arduino consegue suprir at 0,040A (40mA) ento podemos ligar apenas 2,6 leds em uma porta. E se o mesmo for ligado sem o resistor limitador de corrente .

    c. Sempre consulte o manual de referncia do que voc pretende ligar ao arduino, a fim de saber qual a corrente mxima que ele consumir - caso contrario ...

    Mas e o programa? O programa usado ser o mesmo do exemplo anterior helloworldv1.ino - observe que o led externo est ligado no pino da saida 13, que o mesmo compartilhado pelo led da placa.

    Posso ligar em outra porta? Sim, podemos ligar em outra porta desde que sejam respeitados os limites e que a programao seja adequada.

  • Semforo simplesNeste exemplo vamos programar um simples semforo.

    Circuito:

    Neste circuito temos 3 leds, cada um sendo limitado por um resistor de 330R. Os leds verde, amarelo e vermelho esto conectados respectivamente, nas portas 8, 9 e 10. Saber onde esto ligados importante para que possamos escrever nosso cdigo.

    Cdigo:byte ledG = 8;byte ledY = 9;byte ledR = 10;void setup(){ pinMode(ledG,OUTPUT); pinMode(ledY,OUTPUT); pinMode(ledR,OUTPUT);}

    void loop(){ digitalWrite(ledR,HIGH); digitalWrite(ledY,LOW); digitalWrite(ledG,LOW); delay(500); digitalWrite(ledR,LOW); digitalWrite(ledY,HIGH); digitalWrite(ledG,LOW); delay(500); digitalWrite(ledR,LOW); digitalWrite(ledY,LOW); digitalWrite(ledG,HIGH); delay(500);}

    Nosso cdigo bastante simples, inicializamos variveis de controle dos leds, que informam o endereo de cada led no arduino; na funo setup() configuramos os endereos dos leds para o modo sada; na funo loop() criamos um ciclo temporizado pela funo delay(500). Esta funo facilita bastante o controle de tempo para o programador arduino (controle

  • de tempo SEMPRE um desafio em microcontroladores). delay(1000) referncia para 1s; delay(500) referncia para 0,5s;

    Enquanto que as funes digitalWrite(pino,estado) alternam os estados dos leds para ligado (HIGH) ou desligado (LOW).

    Controlando o semforo pela USBO arduino UNO trabalha comunica-se com o computador pela porta

    USB, tanto para transmisso do firmware como para controle do programa.Vamos ento controlar o semforo enviando dados pela serial. O

    objetivo simples: alterar o tempo do semforo enviando pela serial.Circuito:

    No muda.Cdigo:

    byte ledG = 8;byte ledY = 9;byte ledR = 10;int tempo = 1000;char cmd;void setup(){ pinMode(ledG,OUTPUT); pinMode(ledY,OUTPUT); pinMode(ledR,OUTPUT); Serial.begin(9600);}

    void loop(){ digitalWrite(ledR,HIGH); digitalWrite(ledY,LOW); digitalWrite(ledG,LOW); delay(tempo); digitalWrite(ledR,LOW); digitalWrite(ledY,HIGH); digitalWrite(ledG,LOW); delay(tempo); digitalWrite(ledR,LOW); digitalWrite(ledY,LOW); digitalWrite(ledG,HIGH); delay(tempo); if(Serial.available() > 0){

    cmd = Seria