I - Apresentação Prática do Arduino

download I - Apresentação Prática do Arduino

of 26

Transcript of I - Apresentação Prática do Arduino

  • 7/22/2019 I - Apresentao Prtica do Arduino

    1/26

    Realizao:COLGIO SANTA EMLIA

    NOME:

  • 7/22/2019 I - Apresentao Prtica do Arduino

    2/26

    1

    O que o Arduino?

    O Arduino um projeto totalmente abertode prottipos de eletrnica baseados numaplataforma de hardware e software flexvel e defcil utilizao. destinado a artistas, designers,hobbyistas e qualquer tipo de pessoa

    interessada em criar objetos ou ambientesinterativos. um projeto que engloba software ehardware e tem como objetivo fornecer umaplataforma fcil para prototipao de projetosinterativos, utilizando um microcontrolador. Elefaz parte do que chamamos de computaofsica: rea da computao em que o softwareinterage diretamente com o hardware, tornandopossvel integrao com sensores, motores eoutros dispositivos eletrnicos.

    O Arduino pode perceber o ambiente porreceber informao de uma grande variedade de

    sensores, e pode estimular o ambientecontrolando luzes, motores, e outros atuadores.A parte de hardware do projeto, uma

    placa que cabe na palma da mo, umcomputador como qualquer outro: possuimicroprocessador, memria RAM, memria flash(para guardar o software), temporizadores,contadores, dentre outras funcionalidades.Atualmente, o projeto est na verso Uno, pormmuitos Arduinos encontrados hoje so da versoDuemilanove (2009, em italiano), que possui umclock de 16 MHz, 2 Kb de memria RAM, 32 Kbde memria flash, 14 portas digitais e 6 entradasanalgicas.

    O microcontrolador em que se baseia(ATMEL) programvel usando a linguagemArduino (baseada em C/C++), e tambm aceitacdigo diretamente em C/C++, bem como oambiente do Arduino que baseado emProcessing.

    Normalmente, necessrio construir oscircuitos para as entradas e sadas do Arduino, oque permite flexibilidade e uma grande variedade

    de solues para um mesmo problema. Muitosprojetos para Arduino esto disponveis nainternet (o prprio site do Arduino mantm umfrum e um blog para os usurios do sistema),facilitando o aprendizado e a troca deinformaes entre os construtores.

    Os projetos em Arduino podem ser nicosou podem comunicar com outros circuitos, ou atmesmo com outros softwares em umcomputador (por exemplo, Java,Flash,Processing, MaxMSP).

    As placas podem ser montadas mo ou

    serem compradas montadas, e o software podeser obtido gratuitamente.Como o Arduino um projeto aberto,

    diversas empresas fabricam e disponibilizam

    suas placas no mercado, como o Freeduino,Seeduino, Roboduino, Pinguino e os brasileirosSeverino e Brasuino.

    Esta apostila foi baseada em diversosprojetos disponveis na internet.

    So referncias importantes:

    www.arduino.cc

    Site do projeto Arduino. Permite o

    download do ambiente de programao econtm referncias e tutoriais para iniciantes,alm de manter um frum e um blog

    www.viaspositronicas.blogspot.com

    Blog mantido por diversas pessoasligadas robtica educacional, de vriaslocalidades do pas. Contm informaessobre diversas plataformas e campeonatos.

    www.earthshineEelectronics.com

    Disponibiliza para download o Thecomplete beginners guide to the Arduino,uma das principais referncias para iniciantes(em ingls).

  • 7/22/2019 I - Apresentao Prtica do Arduino

    3/26

  • 7/22/2019 I - Apresentao Prtica do Arduino

    4/26

    3

    Os pinos de energia so os seguintes:

    VIN. Equivale tenso de entrada daplaca Arduino quando utiliza uma fonteexterna (diferentemente dos 5 volts daconexo USB ou outras fontesreguladas). Voc pode fornecer energiaatravs deste pino, ou, se fornecer uma

    tenso atravs do plug, obter a mesmatenso atravs deste pino. 5V. Fornece a tenso regulada para o

    microcontrolador e outros componentesda placa.

    3V3. Fornece uma tenso de 3.3 Voltsgerada pelo chip FTDI (on-board). Acorrente mxima de 50 mA.

    GND.Pinos-terra.

    Memria

    O ATmega1280 possui 128 KB dememria flash para armazenar cdigos (dosquais 4 KB so utilizados para bootloader), 8 KBde SRAM e 4 KB of EEPROM (os quais podemser acessados utilizando a EEPROM library).

    Entradas e Sadas

    Cada um dos 54 pinos digitais do Mega podeser usado como uma entrada ou sada, usandoas funes pinMode (), digitalWrite (), e

    digitalRead (). Eles operam com 5 volts. Cadapino pode fornecer ou receber um mximo de40 mA e tem um resistor pull-up interno(desconectado por padro) de 20-50 kOhms.Alm disso, alguns pinos tm funesespecializadas:

    Serial: 0 (RX) e 1 (TX); Serial 1: 19(RX) e 18 (TX); Serial 2: 17 (RX) e 16(TX); Serial 3: 15 (RX) e 14 (TX). Usadopara receber (RX) e transmitir dados(TX) TTL serial. Pinos 0 e 1 so tambm

    conectados aos pinos correspondentesdo chip FTDI USB-to-TTL Serial. Interrupes externas: 2 (interrupo

    0), 3 (interrupo 1), 18 (interrupo5), 19 (interrupo 4), 20 (interromper3), e 21 (interrupo 2). Estes pinospodem ser configurados para dispararuma interrupo por um valor baixo, umaborda de subida ou queda, ou umaalterao no valor.

    PWM: 0 at 13.Fornecer de 8 bits desada PWM com a funo analogWrite ().

    SPI: 50 (MISO), 51 (MOSI), 52 (SCK),53 (SS). Estes pinos suportamcomunicao SPI, que, emborafornecida pelo hardware subjacente, no

    est includa na linguagem Arduino. Ospinos SPI tambm so divididas sobre ocabealho ICSP, que fisicamentecompatvel com a Duemilanove eDiecimila.

    LED: 13. H um built-in LED conectadoao pino digital 13. Quando o pino estem HIGH o LED est ligado, quando o

    pino LOW, ele est desligado. I2C: 20 (SDA) e 21 (SCL). Suporte decomunicao (TWI) I2C usando abiblioteca Wire (documentao no siteFiao). Note que estes pinos no estono mesmo local que os pinos I2C noDuemilanove ou Diecimila.

    A Mega tem 16 entradas analgicas, cada umadas quais com 10 bits de resoluo (isto , 1024valores diferentes). Por padro, eles medem at5 volts, embora seja possvel mudar o limite

    superior de sua faixa usando o pino AREF efuno analogReference ().

    H um par de pinos diferentes na placa:

    AREF. Tenso de referncia para asentradas analgicas. Usado comanalogReference ().

    Reset. Trazer esta linha LOW pararesetar o microcontrolador. Tipicamenteusado para adicionar um boto de resetpara escudos que bloqueiam a uma notabuleiro.

    Comunicao

    O Arduino Mega tem uma srie de facilidadespara se comunicar com um computador, outroArduino ou outros microcontroladores. OATmega1280 fornece quatro UARTs hardwarepara comunicao serial TTL (5V). UmFT232RL FTDI nos canais de bordo de umadessas atravs de USB e os drivers FTDI

    (includo com o software Arduino) fornece umaporta COM virtual para software no computador.O software Arduino inclui um monitor serial quepermite que dados simples de texto a serenviados de e para a placa Arduino. O RX e TXLEDs na placa pisca quando os dados estosendo transmitidos pelo chip FTDI e conexoUSB para o computador (mas no para acomunicao serial nos pinos 0 e 1).

    Uma biblioteca Software Serial permitecomunicao serial em qualquer um dos pinos

    digitais do Mega.

    O ATmega1280 tambm suporta comunicaoI2C (TWI) e SPI. O software Arduino inclui uma

  • 7/22/2019 I - Apresentao Prtica do Arduino

    5/26

    4

    biblioteca Wire para simplificar o uso dobarramento I2C.

    Programao

    O Arduino Mega pode ser programado com osoftware Arduino (download).

    O ATmega1280 sobre o Arduino Mega vem comum bootloader que permite envio de novoscdigos sem o uso de um programador dehardware externo. Ele se comunica atravs doprotocolo STK500 original (de referncia,arquivos de cabealho C).

    Voc tambm pode ignorar o bootloader eprogramar o microcontrolador atravs do ICSP(In-Circuit Serial Programming) cabealho.

    Reincio automtico (software)

    O Arduino Mega projetado de uma maneiraque permite que ele seja reiniciado pelosoftware rodando em um computadorconectado. Uma das linhas de hardware decontrole de fluxo (DTR) do FT232RL conectado linha de reset do ATmega1280atravs de um capacitor de 100 nanofarad.Quando esta linha afirmada (rebaixada), alinha de reset cai o tempo suficiente para reporo chip. O software Arduino usa esse recurso

    para permitir que voc envie o cdigo,simplesmente pressionando o boto de uploadno ambiente Arduino. Isto significa que obootloader pode ter um tempo mais curto, comoo rebaixamento do DTR pode ser bemcoordenado com o incio do upload.

    Essa configurao tem outras implicaes.Quando a Mega conectado a um computadorrodando Mac OS X ou Linux, ele redefine acada vez que uma conexo feita com osoftware (via USB). Para o seguinte meio

    segundo ou menos, o bootloader est sendoexecutado no Mega. Embora seja programadopara ignorar dados mal formados (ou seja, nadaalm de um upload de um novo cdigo), que irinterceptar os primeiros bytes de dadosenviados para o conselho depois que umaconexo aberta. Se um programa rodando naplaca recebe um tempo de configurao ououtros dados quando ele comea a, certifique-se que o software com o qual comunica espera

    um segundo depois de abrir a conexo e antesde enviar esses dados.

    A Mega tem uma trilha que pode ser cortadapara desabilitar o auto-reset. As almofadas decada lado do trao pode ser soldada emconjunto para reativ-lo. Est identificada como"RESET-PT". Voc tambm pode ser capaz de

    desativar o auto-reset conectando um resistor110 ohm de 5 V para a linha de reset, veja estetpico do frum para mais detalhes.

    Proteo de sobrecorrente USB

    O Arduino Mega tem um polifusvel reajustvelque protege as portas USB do seu computadora partir de shorts e sobrecorrente. Embora amaioria dos computadores fornea sua prpriaproteo interna, o fusvel fornece uma camadaextra de proteo. Se mais de 500 mA

    aplicada porta USB, o fusvel irautomaticamente quebrar a ligao at a curtoou sobrecarga seja removida.

    Caractersticas Fsicas e de Compatibilidade

    O comprimento mximo e a largura do PCBMega so 4 e 2.1 polegadas respectivamente,com o conector USB e conector de energia,ultrapassam a dimenso anterior. Trs furospermitem que a placa seja ligada a uma

    superfcie ou case. Note que a distncia entreos pinos digitais 7 e 8 de 3 mm, e no ummltiplo do espaamento de 2 mm dos outrospinos.

    A Mega projetado para ser compatvel com amaioria dos escudos projetado para o Diecimilaou Duemilanove. Pinos digitais 0-13 (e asadjacentes AREF e pinos GND), entradasanalgicas 0-5, o cabealho do poder, ecabealho ICSP esto todos em locaisequivalentes. Alm disso, o UART principal

    (porta serial) est localizado nos mesmos pinos(0 e 1), assim como as interrupes externas 0e 1 (pinos 2 e 3, respectivamente). SPI estdisponvel atravs do cabealho ICSP emambos os Mega e Duemilanove / Diecimila.Note-se que I2C no est localizado nosmesmos pinos no Mega (20 e 21) como oDuemilanove / Diecimila (entradas analgicas 4e 5)

  • 7/22/2019 I - Apresentao Prtica do Arduino

    6/26

    5

    Outros tipos de Arduino

    Arduino UNO Arduino ADK

    Arduino Mega 2560 Arduino BT400

    Arduino Nano Arduino Pro Arduino Mini

    Arduino Fio ArduinoLilyPad

  • 7/22/2019 I - Apresentao Prtica do Arduino

    7/26

    6

    01. LED Piscante

    Neste projeto, voc aprender a criar um circuito simples usando um LED e um resistor e o far piscar.

    O que voc vai precisar:01 placa Arduino Mega02 cabos jumpers01 resistor 220

    01 LED

    Montagem sugerida

    Programao sugerida

    int ledPin = 10; // define a porta em que o LED est conectado

    void setup(){

    pinMode (ledPin, OUTPUT); // define o LED como atuador}

    //essa parte da programao faz com que ela se repitavoid loop(){

    digitalWrite (ledPin, HIGH); // liga o LEDdelay (1000); // espera por 1000 milisegundos

    digitalWrite (ledPin, LOW); // desliga o LEDdelay (1000); // espera por 1000 milisegundos

    }

  • 7/22/2019 I - Apresentao Prtica do Arduino

    8/26

    7

    Detalhando um pouco mais

    ResistorUm resistor um dispositivo eletrnico capaz de limitar a passagem de uma corrente eltrica por

    um circuito eltrico. Os resistores so identificados atravs de um cdigo de linhas coloridas.

    LED (Light Emitting Diode)LEDs so dispositivos eletrnicos que emitem luz pela passagem

    de uma pequena corrente eltrica. Por isso, necessrio conectar umresistor ao LED para evitar sobrecorrente. Um LED s permite passagemde luz em um sentido. Portanto, necessrio identificar os plos para

    conectar o LED corretamente dentro do circuito eletrnico.

    Alterando o cdigo1 Altere o intervalo de ligar e desligar o LED para um valor definido por voc.2 Altere o valor do delay para 50 milisegundos. O LED estar desligando e acendendo?

  • 7/22/2019 I - Apresentao Prtica do Arduino

    9/26

    8

    02. Sinalizador de Cdigo Morse

    Neste projeto ns vamos fazer o mesmo circuito do projeto anterior, mas usaremos algunscdigos diferentes para fazer o LED transmitir uma mensagem em Cdigo Morse. Nesse caso, vamosfazer o LED sinalizar as letras S.O.S., que o sinal mais conhecido deste cdigo (foi utilizado pelostripulantes do Titanic para transmitir seu pedido de socorro).

    (SOS: A letra S consiste de trs sinais breves e letra O, de trs sinais longos)

    O que voc vai precisar saber: Sinais de comparao

    == (semelhante a)!= (diferente de)< (menor que)> (maior que)= (maior ou igual a)

    Programao Sugerida

    int ledPin = 10; // LED conectado ao pino 10

    void setup(){

    pinMode (ledPin, OUTPUT); // define a porta digital como output}

    void loop(){

    for (int x=0; x

  • 7/22/2019 I - Apresentao Prtica do Arduino

    10/26

    9

    Detalhando um pouco mais

    A funo forA funo forestabelece um loop enquanto um teste de comparao for verdadeiro.Observe a declarao da funo no programa trabalhado:

    for (int x=0; x

  • 7/22/2019 I - Apresentao Prtica do Arduino

    11/26

    03. Leitura de um sin

    Neste projeto, voc deve con(ligado ou desligado), enviando-o atr

    A comunicao serial no coatalho Ctrl+Shift+M (Serial monitor).

    O que voc vai precisar:

    01 placa Arduino Mega03 cabos jumpers01 interruptor01 resistor 220

    Montagem sugerida

    Programao sugerida

    void setup(){

    Serial.begin (9600); // inicia a comupinMode (2, INPUT); // define o pin

    }

    void loop(){

    int sensorValue = digitalRead(2); //Serial.println (sensorValue, DEC); /

    delay (1000);}

    al digital no computador

    struir um circuito que possibilite a leitura dovs de uma comunicao serial ao comput

    putador vista em uma tela parte, que

    icao serial2 como entrada de dados

    efine varivel e armazena a leitura do sens envia valor para o serial monitor

    10

    estado de um interruptordor.pode ser acessada pelo

    or

  • 7/22/2019 I - Apresentao Prtica do Arduino

    12/26

    11

    Explorando a programaoA linha Serial.begin (9600);inicia a leitura serial, a 9600 bauds.A linha Serial.println (sensorValue, DEC);envia o valor da leitura do sensor para o monitor serial e

    salta linha ao final. Para que as entradas fossem publicadas em uma mesma linha, deve-se utilizar ocomando Serial.printem vez de Serial.println.

    Neste projeto, o monitor serial dever exibir 0 quando o sensor estiver solto e 1, quando estiver

    pressionado.Baudderiva do sobrenome de J.M.E. Baudot, francs inventor do cdigo telegrfico Baudot. Um Bauduma medida de velocidade de sinalizaoe representa o nmero de mudanas na linha de transmisso(seja em frequncia, amplitude, fase etc...) ou eventos por segundo. Para se determinar a taxa detransmisso de um canal em bits por segundo - bps, deve ser levado em considerao o tipo decodificaoutilizada, alm da velocidade de sinalizao do canal de comunicao.

    Fonte: http://pt.wikipedia.org/wiki/Baud

    Alterando o cdigo

    1 Adicione um LED porta 2 do Arduino Mega e altere o cdigo para que o LED acenda quando o

    boto do interruptor for pressionado.

    2 Observe o seguinte cdigo:

    char nome[] = "ARDUINO";

    void setup(){Serial.begin (9600);

    }

    void loop()

    { for (int x=0; x < 8; x++){Serial.print (nome[x]);delay (500);

    }}

    observe a diferena entre os comandos Serial.printe Serial.println

  • 7/22/2019 I - Apresentao Prtica do Arduino

    13/26

    04. Leitura de um sin

    Neste projeto, voc deve con1023) fornecido por um potencimetr

    A comunicao serial no comatalho Ctrl+Shift+M (Serial monitor).

    O que voc vai precisar:01 placa Arduino Mega03 cabos jumpers01 potencimetro

    Montagem sugerida

    Programao sugerida

    void setup(){

    Serial.begin (9600);}void loop(){

    int sensorValue = analogRead (A0)

    Serial.println (sensorValue, DEC);delay (1000);

    }

    al analgico no computa

    truir um circuito que possibilite a leitura deo, enviando-o atravs de uma comunicaoputador vista em uma tela parte, que po

    12

    or

    m valor analgico (0 aserial ao computador.e ser acessada pelo

  • 7/22/2019 I - Apresentao Prtica do Arduino

    14/26

    Explorando a programaoA linha intsensorValue = anal

    porta analgica 0 na varivel sensorAo girar o potencimetro, o n

    Alterando o cdigoAltere o cdigo para que al

    final, ajuste o potencimetro para quresistncia e uma unidade analgica

    Alterando a montagemSubstitua o potencimetro po

    luminosidade ambiente.

    A montagem deve ficar com

    Detalhando um pouco mais

    LDR (Light Dependent Resistence Dispositivo eletrnico que aprincidente. necessrio conect-lo a

    gRead(A0); define a varivel sensorValuealuevo valor do sinal analgico ser exibido em

    do valor analgico, seja exibido o valor da

    ele exera resistncia de 220

    . (dica: det lembre-se de que o Arduino utiliza 1024 u

    um LDR (Light Dependent Resistor) e efetu

    seguinte aspecto:

    esenta como uma resistncia varivel, cujoum resistor para que possa atuar como sen

    13

    armazena o valor da

    tela.

    esistncia, em ohms. No

    rmine a relao entre anidades analgicas).

    e medidas da

    alor depende da luzor analgico.

  • 7/22/2019 I - Apresentao Prtica do Arduino

    15/26

    14

    05. Semforo

    Agora ns iremos criar um circuito para simular um semforo de trnsito. O semforo serconstitudo por trs LEDs: um vermelho, um amarelo e um verde.

    O que voc vai precisar:01 Placa Arduino Mega01 Protoboard

    01 LED Vermelho01 LED Amarelo01 LED Verde03 Resistores 220

    Montagem Sugerida

    Programao Sugerida

    int ledDelay = 10000; // espera entre as trocas de coresint vermelho = 10;int amarelo = 9;int verde = 8;void setup(){

    pinMode (vermelho, OUTPUT);

    pinMode (amarelo, OUTPUT);pinMode (verde, OUTPUT);}

  • 7/22/2019 I - Apresentao Prtica do Arduino

    16/26

    15

    void loop(){

    digitalWrite (vermelho, HIGH); // liga o led vermelhodelay (ledDelay); // espera o tempo determinado na varivel ledDelaydigitalWrite (amarelo, HIGH); // liga o led amarelodelay (2000); // espera 2 segundosdigitalWrite (verde, HIGH); // liga o led verdedigitalWrite (vermelho, LOW); // desliga o led vermelho

    digitalWrite (amarelo, LOW); // desliga o led amarelodelay (ledDelay); // espera o tempo determinado na varivel ledDelaydigitalWrite (amarelo, HIGH); // liga o led amarelodigitalWrite (verde, LOW); // desliga o led verdedelay (2000); // espera 2 segundosdigitalWrite (amarelo, LOW); // desliga o led amarelo

    }

    Alterando o cdigo

    1 Voc deve ter percebido que o cdigo do semforo ligeiramente diferente do cdigo utilizado nos

    semforos brasileiros. Adapte o cdigo para torn-lo semelhante programao de nossos semforos.

  • 7/22/2019 I - Apresentao Prtica do Arduino

    17/26

    16

    06. Semforo Interativo

    Este projeto uma extenso do projeto anterior, onde iremos incluir um semforo para pedestrese um boto para solicitar a parada dos carros.

    O que voc vai precisar:02 LEDs vermelhos01 LED amarelo

    02 LEDs verdes06 Resistores de 220 01 Interruptor

    Montagem sugerida

    Programao sugerida

    int carroVermelho = 12;int carroAmarelo = 11;int carroVerde = 10;

    int pedVermelho = 8;int pedVerde = 9;int botao = 2; // pino do interruptorint tempoTravessia = 5000; // tempo para atravessar a rua

  • 7/22/2019 I - Apresentao Prtica do Arduino

    18/26

    17

    unsigned long changeTime;

    void setup(){

    pinMode (carroVermelho, OUTPUT);pinMode (carroAmarelo, OUTPUT);pinMode (carroVerde, OUTPUT);pinMode (pedVermelho, OUTPUT);pinMode (pedVerde, OUTPUT);

    pinMode (botao, INPUT);// liga a luz verde dos carros e a vermelha para os pedestresdigitalWrite (carroVerde, HIGH);digitalWrite (pedVermelho, HIGH);

    }

    void loop(){

    int state = digitalRead (botao);if (state == HIGH && (millis() - changeTime) > 5000){// Ativa a funo para mudar as luzeschangeLights(); // executa o bloco changeLights()

    }}

    void changeLights(){

    digitalWrite (carroVerde, LOW); // desliga o verdedigitalWrite (carroAmarelo, HIGH); // liga o amarelodelay (2000); // espera 2 segundosdigitalWrite (carroAmarelo, LOW); // desliga o amarelodigitalWrite (carroVermelho, HIGH); // liga o vermelhodelay (1000); // espera 1 segundodigitalWrite (pedVermelho, LOW); // desliga o vermelho do pedestredigitalWrite (pedVerde, HIGH); // liga o verde do pedestre

    delay (tempoTravessia);

    for (int x=0; x

  • 7/22/2019 I - Apresentao Prtica do Arduino

    19/26

    18

    07. Efeito Perseguio

    Neste projeto, ns vamos usar uma srie de LEDs (10, no total) para criar um efeito deperseguio introduzindo o conceito de matrizes.

    O que voc vai precisar01 Arduino Mega01 placa protoboard

    10 LEDs vermelhos10 Resistores 220 21 cabos jumpers

    Montagem Sugerida

    Programao Sugerida

    byte ledPin[] = {4, 5, 6, 7, 8, 9, 10, 11, 12, 13}; // define uma matrizint ledDelay(65); // intervalo entre as trocasint direction = 1;int currentLED = 0;unsigned long changeTime;

    void setup(){

    // define todas as portas como sadafor (int x=0; x

  • 7/22/2019 I - Apresentao Prtica do Arduino

    20/26

    19

    void loop(){

    if ((millis() - changeTime) > ledDelay){

    changeLED();changeTime = millis();

    }}

    void changeLED(){

    // desliga todos os LEDsfor (int x=0; x

  • 7/22/2019 I - Apresentao Prtica do Arduino

    21/26

    20

    08. Usando um termistor para calcular a temperatura

    Algumas aplicaes industriais necessitam da leitura da temperatura para manterem seusprocessos. O Arduino permite fazer a leitura da temperatura atravs de um termistor conectado a umaporta analgica.

    O que voc vai precisar

    01 Arduino Mega01 protoboard01 termistor NTC 10 K01 resistor 10 K03 cabos jumpers

    Montagem sugerida:

    Programao sugerida

    #include

    double Termistor (int RawADC){

    double Temp;Temp = log(((10240000/RawADC) - 10000)); // Considerando resistncia de 10KTemp = 1 / (0.001129148 + (0.000234125 + (0.0000000876741 * Temp * Temp ))* Temp );// Equao de Steinhart-Hart para o termistor - temperatura em Kelvin

  • 7/22/2019 I - Apresentao Prtica do Arduino

    22/26

    21

    Temp = Temp - 273.15; // Converte Kelvin para Celsiusreturn Temp;}

    void setup(){Serial.begin (115200);}

    void loop (){Serial.print(int (Termistor (analogRead (0)))); // Exibe temperatura em CelsiusSerial.println (" graus Celsius");delay (1000);}

    Explorando o cdigo

    BibliotecasBibliotecas so conjuntos de dados pr-formatados que possibilitam funcionalidade extra a um

    programa (por exemplo, funes matemticas mais complexas). Para incluir uma biblioteca, deve-se

    utilizar a palavra-chave #include.Exemplo:

    #include

    As bibliotecas para o Arduino podem ser encontradas em http://arduino.cc/en/Reference/Libraries

    DoubleFuno que dobra a preciso do ponto decimal, quando se trabalha com outras plataformas. No

    cdigo do Arduino, possui exatamente a mesma funo que float.

    Return

    Finaliza a funo, retornando o valor designado.

    Detalhando um pouco mais

    TermistorUm termistor um controlador trmico, que consiste numa resistncia sensvel cuja funo

    principal exibir uma mudana grande, previsvel e precisa em resistncia eltrica quando umequipamento ou produto sofrer uma mudana na temperatura de corpo. Um termistor de Coeficiente deTemperatura Negativo (NTC) (Negative Temperature Coefficient) exibe uma diminuio em resistnciaeltrica quando submetido a um aumento de temperatura do equipamento e um termistor de Coeficientede Temperatura Positivo(PTC) (Positive Temperature Coefficient) exibe um aumento em resistnciaeltrica existe um aumento da temperatura do equipamento.

    Alterando o cdigo

    1 Adicione um LED ao circuito e altere a programao para que o LED acenda quando a leitura datemperatura indicar 30 C.

  • 7/22/2019 I - Apresentao Prtica do Arduino

    23/26

    22

    09. Um LED pulsante

    Neste projeto, o brilho de um LED ir variar de acordo com uma onda senoidal, a partir do controlede uma porta de sada de pulso modulado (PWM).

    O que voc vai precisar01 Arduino Mega01 placa protoboard

    01 LED01 resistor de 220 02 cabos jumpers

    Montagem sugerida

    Programaosugeridaint ledPin = 11;float sinVal;int ledVal;

    void setup(){

    pinMode (ledPin, OUTPUT);

  • 7/22/2019 I - Apresentao Prtica do Arduino

    24/26

    23

    }

    void loop(){

    for (int x=0; x

  • 7/22/2019 I - Apresentao Prtica do Arduino

    25/26

    24

    10. Tocando uma melodia

    Brilha, brilha, estrelinha...

    O que voc vai precisar01 Arduino Mega01 placa protoboard01 piezo elemento

    Montagem sugerida

    Programao sugeridaint speakerPin = 9;int length = 15; // define o nmero de notaschar notes[] = "ccggaagffeeddc "; // o espao representa uma pausaint beats[] = { 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 2, 4 }; // define o tempo das notasint tempo = 300;

    void playTone (int tone, int duration){

    for (long i = 0; i < duration * 1000; i += tone * 2){

    digitalWrite (speakerPin, HIGH);delayMicroseconds (tone);digitalWrite (speakerPin, LOW);delayMicroseconds (tone);

    }}

    void playNote (char note, int duration){

  • 7/22/2019 I - Apresentao Prtica do Arduino

    26/26

    char names[] = { 'c', 'd', 'e', 'f', 'g', 'a', 'b', 'C' };int tones[] = { 1915, 1700, 1519, 1432, 1275, 1136, 1014, 956 };// toca o som correspondente notafor (int i = 0; i < 8; i++){

    if (names[i] == note){

    playTone (tones[i], duration);}

    }

    }

    void setup(){

    pinMode (speakerPin, OUTPUT);}

    void loop(){

    for (int i = 0; i < length; i++){

    if (notes[i] == ' '){

    delay(beats[i] * tempo); // pausa}else{

    playNote (notes[i], beats[i] * tempo);}delay (tempo / 2); // pausa entre as notas

    }}