Você está na página 1de 21

Sumrio

Introduo.............................................................................................................................................2 O Programa...........................................................................................................................................3 A sintaxe..........................................................................................................................................3 Colocando a mo na massa...................................................................................................................3 A Protoboard....................................................................................................................................3 Projeto 1: Piscar um L !................................................................................................................" Con#erso num$rica........................................................................................................................% &lgebra booleana.............................................................................................................................' Projeto 2: (em)*oro.........................................................................................................................+ A *uno tone.................................................................................................................................., Comunicao (erial............................................................................................................................1ntradas e sa.das anal/gicas...............................................................................................................1(a.das anal/gicas...........................................................................................................................1ntradas Anal/gicas.......................................................................................................................11 Projeto 3: Controle de luminosidade............................................................................................12 0otores !C....................................................................................................................................13 Projeto ": 1eri*icao de su2er*.cie...............................................................................................13 Projetos extras....................................................................................................................................1" Projeto xtra 1: (em)*oro..............................................................................................................1" Projeto extra 2: Controle de luminosidade....................................................................................1' Pro2osta de im2lementao dos exerc.cios........................................................................................1, 3ibliogra*ia e materiais 2ara consulta................................................................................................2-

Alan Vitor Fonseca, Grupo Colmia


0inicurso Arduino4 5un6o 2-124 5oin#ille7(C A2oio 7 !aniel (c6eidemantel Camargo e 3runno Prado Centro de Ci8ncias 9ecnol/gicas 7 :ni#ersidade do stado de (anta Catarina

Introduo
Aprender eletrnica no uma tarefa simples, exige muito tempo e dedicao, conciliar isso com o resto das nossas atividades dirias acaba sendo um desafio. Tudo isso junto com os altos custos envolvidos acabam por inviabilizar a criao de dispositivos eletrnicos para muitas pessoas. ensando nisso o co!fundador do Arduino "assimo #anzi do Interaction Design Institute Ivrea na $tlia mobilizou um grupo de pessoas a fim de criar uma soluo para este problema mais barata e fcil de usar do %ue as j existentes na poca. &les decidiram fazer isso como um projeto de c'digo aberto, assim todos poderiam ajudar e contribuir. (essa ideia surgiu o Arduino. Arduino uma plataforma open-source de prototipagem com soft)are e *ard)are flex+vel e fcil de usar. (e uma forma menos tcnica, Arduino um conjunto de ferramentas %ue possibilitam a criao de aparel*os eletrnicos onde a ideia fazer com %ue as pessoas possam fazer o %ue %uiser com eletrnica, no necessariamente aprendendo tudo antes. & como %uerer fazer a sua camisa piscar, bem dif+cil fazer se voc, %uer aprender eletrnica, mas com o Arduino voc, pode fazer isso em poucos minutos. ara entender mel*or como funciona o Arduino vejamos o %ue um microcontrolador-

Microcontrolador basicamente um circuito integrado

contendo um microprocessador e todos os perifricos essenciais ao seu funcionamento como memoria e perifricos de entrada e sada. O microcontrolador executa um programa especifico contendo instrues para que uma certa entrada seja processada gerando uma sada correspondente. . Arduino torna fcil a criao de programas, a colocao do programa em um microcontrolador /ATmega0, ATmega120, ATmega340, entre outros, dependendo da verso da placa5 e utilizao de suas portas de entrada ou sa+da. 6ma das grandes vantagens do Arduino o seu licenciamento sendo GPL para a $(& 7ava, LGPL para as bibliotecas em 898:: e Creative Commons Atribution Share-Alike para os &s%uemas da placa. or isso %ual%uer pessoa pode contribuir criando uma biblioteca para simplificar um processo complexo, tornando o mesmo extremamente simples, ou ento criando vers;es da placa para algum objetivo especifico ou at mesmo criando exemplos e tutoriais. $sso faz com %ue com uma simples pes%uisa na internet traga in<meras solu;es para o %ue precisamos.

O Programa
=amos criar o nosso programa na pr'pria $(& do Arduino %ue usa uma linguagem baseada em 898::.

A sintaxe
(iferente da linguagem 8 original, a %ue usaremos ter algumas diferenas, por exemplo, a%ui no teremos uma funo principal ! int main() ! mas, basicamente teremos um programa da forma-

void setup() usada para fazer a configurao, como dizer


se um pino sera entrada ou sada e configurar a comunicao serial.( executado uma vez no inicio do programa) pelo microcontrolador. &ste o >es%ueleto? bsico de um programa, porem como em 8 podemos incluir bibliotecas diferentes, declarar variveis globais, escrever outras fun;es fora das citadas acima, entre outras funcionalidades.

void loop() usada para escrever a rotina a ser executada

Colocando a mo na massa
A Protoboard
A protoboard uma placa usada para criao de prot'tipos ou circuitos experimentais onde os componentes e as conex;es podem variar sem a necessidade de solda. @ uma matriz de contato, com furos tendo conex;es verticais e *orizontais. &la funciona de forma %ue ao conectarmos um fio no primeiro furo da coluna vertical, este estar em curto circuito com %ual%uer outro fio conectado na coluna, ou seja, como se conectssemos diretamente todos os fios da coluna. 8om as lin*as *orizontais o funcionamento o mesmo. =amos agora escrever o nosso primeiro programa, mas como o Arduino no fica somente na tela do 8, vamos criar um projeto bem simples e trabal*ar em cima dele.

Projeto 1: Piscar um LE
8omeamos ento por um projeto clssico, > isca A&(? , ou seja, %ueremos fazer um A&( ficar aceso por um tempo, depois apagar e assim por diante. ara comear a escrever o programa precisamos saber em %ue pinos do Arduino estaro conectados nossos componentes, nesse caso, somente o A&(, ento vamos ao nosso circuito eltricoAgora, com a parte do *ard)are j montada, vamos para o programa-

B 8omo conectamos nosso A&( no pino 1C do Arduino, vamos declarar uma varivel do tipo inteiro para guardarmos o numero do pinos em %ue o A&( esta
(esta sera uma varivel global)

int A&( D 1CE

B Agora vamos configurar o pino 1C como uma sa+da B &screvemos agora a rotina para acender, esperar algum tempo e depois apagar o A&( (eclaramos a funo loop Hetamos o pino do A&( para n+vel logico alto &speramos um tempo /1CCC ms5 Hetamos o pino do A&( para n+vel logico baixo &speramos um tempo /1CCC ms5 Mec*amos a funo loop

void setu!/5F pin"ode/A&(,.6T 6T5E G

void loo!/5F digitalIrite/A&(, J$KJ5E delaL/1CCC5E digitalIrite/A&(, A.I5E delaL/1CCC5E G

"

=ejamos o %ue as lin*as mais relevantes significamB pin"ode/pino, modo5 B digital;rite<2ino4 #alor= B dela><tem2o= 8onfigura um pino especifico para se comportar como uma entrada ou uma sa+da. &screve em um pino digital o valor logico Alto ou Baixo. ausa o programa durante um certo tempo especificado em milisegundos.

Obs.: No prprio site o Ar uino ( !ttp:""Ar uino.cc"en"#e$erence"%ome&age ) po emos encontrar re$erencia sobre a linguagem utili'a a( o site tra' ( entre outras coisas( re$erencia sobre a sintaxe( opera ores e $un)*es. Antes de irmos para o pr'ximo projeto vamos ver algumas no;es de converso numrica e lgebra booleana.

Con"erso num#rica
Apesar de %ue na $(& do Arduino as fun;es so feitas de forma a facilitar ao mximo o uso dos n<meros e valores usados, ainda em alguns casos necessrio sabermos fazermos a converso de base de um numero. "as o %ue a base de um numeroN ! (e uma forma fcil, a base de um numero o total de >s+mbolos? %ue usamos para escrev,!lo, ou seja, a base em %ue mais usamos, a decimal, temos 1C s+mbolos/C a O5 para escrever os n<meros %ue desejarmos e na base binaria 4 s+mbolos /C e 15. 8omo os microcontroladores e at mesmo os computadores, internamente s' >entendem? n<meros na base binaria, importante %ue saibamos escrever n<meros decimais em pelo menos mais duas bases, a binaria e a *exadecimal, %ue tambm e largamente usada nesse meio.
Converso com base decimal para uma base qualquer: podemos fazer isso por meio das divis;es sucessivas-

vamos converter o numero PQ1C/base 1C5 para a base *exadecimal/base 125 "+?1' @ 2 4 resto: 1%1- @ A1'
2?1' @ - 4 resto: 21- @ 21' !i#idimos o numero 2ela base em Bue Bueremos trans*ormar4 no caso 1'4 at$ Bue o numero Cere.

(ai tiramos o nosso numero na base *exadecimal 4M12.


Con"erso com base decimal !ara uma base $ual$uer: podemos fazer isso multiplicando cada algarismo do numero por potencias de sua base elevadas a ordem significativa do numero, e depois somando todos eles.

=amos converter agora o numero 4M12 para a base decimal2A1' @ 2D1'1 E 1%D1'- @ 32 E 1% @ "+1-. <#isto Bue A1' @ 1%1-=.

Con"erso com base %exadecimal e binaria: essa converso fica fcil ao sabermos %ue, em ordem, cada P algarismos binrios e%uivalem a um algarismo *exadecimal, e vice e versa. 1alor Fum$rico FHmero 3in)rio FHmero Iexadecimal G"21 --12 G"21 -11' Portanto 2'1' @ 1--11-2

&lgebra booleana
Antes de tudo devemos ter em menteSistemas digitais usam a logica binaria de forma que os zeros e uns so os nveis lgicos nas entradas ou sadas dos dispositivos, os quais trabalham com baixas tenses, no caso dos microcontroladores da Atmel, 5V (entre 1.8 5.5V), portanto uma entrada na faixa prxima 0V entendida como nvel logico baixo(LOW), j uma faixa em torno de 5V e entendida como nvel logico alto (HIGH).

Ra lgebra booleana trabal*amos com esses n+veis l'gicos de forma %ue C significa falso e 1, verdadeiro, e usamos algumas opera;es logicas-

.S AR( R.T RAR( R.S V.S

.u & Ro Ro AR( Ro .S &xclusive .S

: T U AR( invertido/barrado5 .S invertido/barrado5

or exemplo, se tivermos como entrada 3 sinais l'gicos, verdadeiro, falso e verdadeiro de novo, e %ueremos realizar entre eles uma operao logica AR(, temos#erdadeiro AF! *also AF! #erdadeiro @ *also

da mesma forma %ue1D-D1 @ -.

Assim como a operao .S- #erdadeiro OJ *also OJ #erdadeiro @ #erdadeiro B 1E-E1 @ 1. .bs.- .bserve %ue estamos executando uma operao logica >soma? e no uma soma como estamos acostumados, portanto a%ui 1:1 D 1. A operao logica R.T inverte o n+vel logico, ou seja o %ue era C vira 1 e vice e vera, e representada por uma barra em cima da funo logica<#erdadeiro OJ *also=AF! #erdadeiro @ <#erdadeiro FAF! *also=AF! #erdadeiro @ *also B <1E-=D1 @ 1D1 @ -D1 @ -.

7 a funo V.S e dada como- a b D ab : ba .

'

Projeto ': Sem(oro


Rosso objetivo a%ui fazer um programa %ue controle o transito de ve+culos em uma rua. Teremos um semforo convencional de ve+culos com os 3 passos mostrados ao lado. Hendo %ue para efeito experimental deixaremos o sinal em vermel*o e verde por W segundos e amarelo por 1 segundo. Tambm teremos um boto %ue ao pressionarmos o sinal ira impedir a passagem de ve+culos, isso , caso o sinal esteja verde ele deve ir imediatamente para amarelo e depois para vermel*o. 1 4 3

ara isso usaremos algo c*amado interrupo externa, %ue caso ocorra ela ira desviar o programa de sua execuo atual, realizar alguma ao/ uma funo no nosso caso5, e depois continuar o programa normalmente. 6ma interrupo pode ser atribu+da a um pino do Arduino atravs da funoB attac6Interru2t<canal4 *uno4 modo= , ondecanal - indica o pino a ser usado pela interrupo X canal C para o pino 4 e 1 para o pino 3. funo - a funo %ue sera executada %uando ocorre a interrupo. modo - o tipo da interrupo, %ue pode serB A.I - interrupo dada %uando o pino estiver com n+vel logico baixo. B 8JARK& - interrupo dada %uando o pino muda de n+vel logico. B S$H$RK - interrupo dada %uando o n+vel logico vai de C para 1. B MAAA$RK - interrupo dada %uando o n+vel logico vai de 1 para C. =amos ento ao *ard)are, %ue sera montado com A&(s e um pus!button:

. programa fica assimint passo D 1E int vermel*o D 14, amarelo D 11, verde D 1CE int botao D 4E void setu!/5F attac*$nterrupt/C, ir=ermel*o,MAAA$RK5E K 1ari)#el global 2ara armaCenar o 2asso atual. K !eclarao dos L !s usados con*orme o circuito. K !eclarao do boto con*orme o circuito. K ABui temos a *uno de con*igurao. K 1inculamos a *uno ir1ermel6o<= com uma interru2o externa na borda de descida do canal - < no 2ino 2=. K Con*iguramos o 2ino do boto como entrada. K Con*iguramos os 2inos dos L !s como sa.das digitais.

pin"ode/botao,$R 6T5E pin"ode/verde,.6T 6T5E pin"ode/amarelo,.6T 6T5E pin"ode/vermel*o,.6T 6T5E G void ir=ermel*o/5F p1/5E passo D 1E returnE G void p3/5F digitalIrite/vermel*o,A.I5E digitalIrite/amarelo,J$KJ5E digitalIrite/verde,A.I5E returnE G void p4/5F digitalIrite/vermel*o,A.I5E digitalIrite/amarelo,A.I5E digitalIrite/verde,J$KJ5E returnE G void p1/5F digitalIrite/vermel*o,J$KJ5E digitalIrite/amarelo,A.I5E digitalIrite/verde,A.I5E returnE G

K ssa *uno liga o L ! #ermel6o e desliga os outros4 e retorna o 2asso 2ara o 2rimeiroD.

K Auno 2ara colocar os L !s no 2asso 3.

K Auno 2ara colocar os L !s no 2asso 2.

K Auno 2ara colocar os L !s no 2asso 1.

void loo!/5F if/passo DD 15F p1/5E passo D 4E delaL/WCCC5E G if/passo DD 45F p4/5E passo D 3E delaL/WCCC5E G if/passo DD 35F p3/5E passo D 1E delaL/1CCC5E G G

K Auno loo2 L aBuela executada sem2re Bue o microcontrolador esti#er alimentado. K ABui caso a #ari)#el Bue guarda o 2asso atual esti#er em 14 executamos a *uno Bue coloca os L !s no 2asso 14 ento mudamos a #ari)#el 2asso 2ara indicar o no#o 2asso e es2eramos %.---ms ou %s. K AaC o mesmo Bue o anterior 2orem 2ara o segundo 2asso.

K xecuta o mesmo 2ara o terceiro 2asso4 2orem agora es2erando a2enas 1 segundo no sinal amarelo.

T &m uma situao normal poder+amos executar p1/5 e esperar Ws na pr'pria funo de interrupo e depois ir direto para o passo 4, porem a%ui a funo delaL/5 no funciona. Resse caso como o tempo pe%ueno %uase no vemos problema, porem %uando o boto pressionado o passo 1 fica por mais tempo / o tempo %ue o programa j estava esperando no passo em %ue estava mais o tempo de W segundos de p1/5 5. 8omo exerc+cio para o minicurso tente resolver este problema. Ro final da apostila temos mais um projeto com semforo mais pr'ximo Y realidade com esse problema resolvido. &sta somente uma forma de fazer o programa, poder+amos, por exemplo mudar os estados dos A&(s na funo loop ao invs de criar fun;es separadas para isso. A logica de programao muito importante nesses casos. odemos resolver um problema aparentemente muito dif+cil de uma forma fcil se usarmos a logica certa. A (uno tone &sta funo gera uma onda %uadrada em uma sa+da do Arduino com uma fre%u,ncia especificada, vejamos como a funoB tone/pino, fre%u,ncia, durao5, onde a durao um argumento opcional. .bs.- Ras placas do Arduino %ue usam o microcontrolador Atmega0, se usado, o argumento >durao? causa um erro no programa. odemos usar ento a funo noTone/pino5. 8om essa funo podemos criar sons, sabendo a fre%u,ncia de uma nota musical por exemplo podemos facilmente toc!la em um auto falante ou um piezo!eltrico ligado ao Arduino.

Comunicao Serial
Alm de fun;es prontas, o Arduino possui, na sua pr'pria $(&, o >Herial "onitor? %ue uma interface para fazer o >debug? de programas, enviar e receber dados de forma serial. Ras placas do Arduino %ue possuem conexo 6H#, essas podem ser usadas para fazer a comunicao serial com um computador por exemplo. =ejamos ento como fazer isso. rimeiro devemos fazer a configurao para a comunicao serial, atravs da funoB Herial.begin/taxa5 , ondeB taxa- a taxa de transmisso de dados, em bits por segundo/baud5. Agora podemos enviar dados com as fun;es Herial.print/5, Herial.println/5 e Herial.)rite/5, e ler os dados recebidos com Herial.read/5 e Herial.peeZ/5. ara c*ecar se * dados recebidos podemos usar a funo Herial.available/5, %ue retorna no numero de bLtes dispon+veis para leitura.

Entradas e sa)das anal*gicas


=ejamos a seguir como podemos usar as entradas e sa+das anal'gicas do Arduino. Sa)das anal*gicas As sa+das anal'gicas do Arduino usam I" X ou +o ula),o por largura e pulso, em portugu,s ! para variar a transfer,ncia de potencia em um pino especifico. =ejamos ento como funciona o I". [uando temos o nivel logico 1 em um pino do Arduino e mudamos para C, temos um sinal como na figura a es%uerda7 %uando variamos repetidamente a mudana de n+vel logico temos algo como na figura a direita, o %ue caracteriza uma >onda %uadrada?, nesse caso se considerarmos um per+odo, veremos %ue o pino transferiu a metade da potencia %ue transmitiria se estivesse o tempo todo em n+vel logico 1. . I" consiste em manipularmos o tempo, em cada per+odo, %ue ficaremos em cada um dos n+veis l'gicos.

1-

Resse caso, por exemplo temos QW por cento de potencia transferida, porem no Arduino o per+odo dessas ondas muito baixo, fazendo com %ue a fre%u,ncia seja alta/aproximadamente POC Jz5, portanto, se estivermos com um A&( conectado a esse pino, no o veremos piscar, mas sim com QW\ de sua luminosidade total. &m motores (8 podemos controlar a velocidade do motor atravs de I". . Arduino possui alguns pinos %ue podem ser usados como I", e para isso usamos a funoB analogIrite/pino, valor5 , ondeB pino - pino de sa+da do I". B valor - valor entre C / C\5 e 4WW / 1CC\5 %ue determina a porcentagem em %ue o sinal estar ativo. .bs.- Ro e preciso declarar o pino como sa+da/usando pin"ode/55 para us!lo I". Entradas Anal*gicas 6m pino de entrada anal'gica tem a funo de ler a tenso nele colocada e transformar esse valor em um numero inteiro, no caso do Arduino teremos a preciso de 1C bits, ou seja 1C4P valores poss+veis, sendo C para C= e 1C43 para W=. A funo usada para leitura anal'gica no Arduino e a seguinteB analogSead/pino5 , onde >pino? indica o pino o %ual sera feito a leitura. B &ssa funo retorna um valor inteiro de C a 1C43 correspondente a leitura feita. Como funciona

Fo ensino m$dio #oc8 j) de#e ter estudado alguns circuitos com resistores e #iu Bue a corrente Bue circula em um circuito $ dada 2or V i= 4 onde Re $ a resist8ncia eBui#alente do circuito4 ou ento Re Bue a di*erena de 2otencial 1 nos 2olos de um resistor $ V R = Ri . (abendo isso #ejamos como ira *icar a tenso Bue iremos ler no Arduino: V V = Re R1+ R LDR A tenso Bue estaremos lendo esta nos 2olos de R LDR 4 assim: R LDR V V LDR = R LDR i = R LDR ou V LDR = V R1 +R LDR R1 + RLDR Isso $ o Bue c6amamos de di#isor de tenso entre R1 e RLDR . Assim4 como R LDR #aria con*orme a luC Bue incide no L!J4 2odemos #ariar V LDR A corrente Bue circula no circuito $: i =
&m um teste feito em uma sala %ual%uer %uando o A(S era submetido a muita luz obtivemos uma resist,ncia de WCCM4 e sem luC de ,-.---M4

11

com esses dados a leitura V LDR $ mostrada no gr)*ico a esBuerda4 e como o Arduino 2ossui um con#ersor anal/gico?digital de 1- bits4 ou seja4 #ai do decimal - ao 1-234 2odemos #er a leitura no gr)*ico a direita.

Projeto +: Controle de luminosidade ara este projeto %ueremos controlar a luminosidade em um local, de forma %ue teremos um boto %ue liga9desliga o sistema de iluminao. [uando o sistema estiver ligado usaremos um A(S para verificar a luminosidade no local, %uanto menor, a luz /A&(5 devera ter uma intensidade maior.

3oto

Liga?!esliga o sistema de iluminao

L!J

:sado como sensor de luminosidade.

L !

Iluminao.

&sse projeto fica como exerc+cio para o minicurso. 6ma resoluo poss+vel se encontra no final desse material.

12

,otores C [uando falamos de motores eltricos e Arduino, comum ouvirmos falar nos (er#omotores4 o %ual temos uma livraria com varias fun;es prontas para trabal*armos com eles. &sses motores so encontrados geralmente de forma %ue funcionam ligados diretamente aos pinos do Arduino. orem %uando falamos de motores em geral, como o Arduino no fornece uma corrente e voltagem muito altas, na maioria dos casos, teremos de fazer um circuito auxiliar para fazer o motor funcionar e no trazer nen*um risco a placa, como %ueimar algum componente. &sse circuito pode ser feito com transistores, como na figura abaixo.nde o 6AR4CC3 um 8$ %ue possui um conjunto de transistores (arlington. Himplificadamente um transistor um componente %ue serve para amplificar o nosso sinal, por exemplo, %ueremos usar um motor de 14= e C,4A, como o Arduino s' pode fornecer W= e alguns mA no teremos potencia o suficiente para fazer o motor funcionar somente com o Arduino, ai %ue entra o transistor. 6m transistor possui 3 pinos, uma base, um coletor e um emissor, no caso do 6AR4CC3, as entradas/base5 so barradas, ou seja, seu sinal invertido, portanto se o alimentarmos com 14= /coletor5, e tivermos n+vel logico C na entrada ento teremos 14= na sa+da/emissor5, e no caso de n+vel logico 1 na entrada teremos uma sa+da de C=. Projeto -: .eri(icao de su!er()cie =oc, j deve ter visto a%ueles robs %ue seguem uma lin*a no c*o em competi;es ou at mesmo em industrias. =eremos nesse projeto o principio de uso desses robs. Ra figura a es%uerda temos sensores e um emissor de luz infravermel*a, eles so usados, por exemplo, nas T=s, onde o controle remoto o transmissor e um sensor junto a T= o receptor infravermel*o. =oc, tambm j deve ter ouvido falar %ue a cor preta no reflete os raios de luz, isso tambm ocorre com o infravermel*o, %uando temos um arranjo como na figura ao lado, os raios de luz infravermel*a saem do emissor, refletem no obstaculo e c*egam at o receptor. He esse objeto for de cor preta a reflexo sera bem menor do %ue se ele for de cor branca, com isso podemos distinguir, por exemplo, uma lin*a escura em um c*o claro. . objetivo desse projeto e distinguir um objeto branco de um preto atravs desses sensores. &ste projeto tambm fica como exerc+cio para o minicurso, uma poss+vel implementao esta no final desse material.

13

Projetos extras
Projeto Extra 1: Sem(oro
Rosso objetivo a%ui fazer um programa %ue controle o transito como no projeto 4 porem agora teremos um grupo veicular e um de pedestres. . semforo sera como mostrado abaixo, onde o sinal com 3 cores o veicular e o com 4 cores o dos pedestres, e obedecendo as regras convencionais de um semforo.

493

orem, alm disso, teremos um boto %ue %uando pressionado reduzira o tempo %ue o pedestre tem de esperar para passar. =amos ento ao *ard)are, %ue sera montado com A&(s e um pus!button:

1"

. programa fica assimint tempo D CE void reduzTempo/5F if/tempo ]D 1C ^^ tempo _D1O5tempo D 1OE G void setu!/5F attac*$nterrupt/C, reduzTempo,MAAA$RK5E K 1ari)#el global 2ara armaCenar o tem2o. K Auno 2ara reduCir o tem2o de es2era caso seja a2ertado o boto. K ABui a nossa *uno de con*igurao K 1inculamos nossa *uno reduC9em2o<= com uma interru2o externa na borda de descida do canal - < no 2ino 2=. K Con*iguramos os 2inos de G a 12<L !s= como sa.das digitais. K Con*iguramos o 2ino "<pushbutton= como entrada digital. K Auno 2ara colocar os L !s no 2asso 3. 99 =ermel*o 99 Amarelo 99 =erde 99 edestre ! Heguir 99 edestre ! arar

for/int i D 0 E i _D14 E i::5F pin"ode/i,.6T 6T5E G pin"ode/P,$R 6T5E G void p3/5F digitalIrite/14,A.I5E digitalIrite/11,J$KJ5E digitalIrite/1C,A.I5E digitalIrite/O,A.I5E digitalIrite/0,J$KJ5E returnE G void p4/5F digitalIrite/14,A.I5E digitalIrite/11,A.I5E digitalIrite/1C,J$KJ5E digitalIrite/O,A.I5E digitalIrite/0,J$KJ5E returnE G void p1/5F digitalIrite/14,J$KJ5E digitalIrite/11,A.I5E digitalIrite/1C,A.I5E digitalIrite/O,J$KJ5E digitalIrite/0,A.I5E returnE G

K Auno 2ara colocar os L !s no 2asso 2.

K Auno 2ara colocar os L !s no 2asso 1.

1%

void pisca=ermel*o/5F for/int x D CE x_D 3Ex::5F digitalIrite/0,J$KJ5E delaL/WCC5E digitalIrite/0,A.I5E delaL/WCC5E G returnE G void addTempo/5F delaL/1CCC5E tempo::E if/tempo ] 445 tempo D CE returnE G void loo!/5F if/tempo DD C5p1/5E

K Auno 2ara 2iscar 3 #eCes o L ! Bue indica 2ara os 2edestres 2ararem.

K Auno usada 2ara adicionar 1 segundo <1---ms= na #ari)#el Bue guarda o tem2o.

K Auno loo2 L aBuela executada sem2re Bue o microcontrolador esti#er alimentado. K Para o tem2o entre - e , segundos colocamos os sinais na 2osio 1. K Para o tem2o entre 1- e 1, segundos42iscamos o L ! #ermel6o e de2ois mudamos os sinais 2ara a 2osio 2. K Para o tem2o entre 2- e 22 segundos colocamos os sinais na 2osio 3. K xecutamos a *uno 2ara adicionar um segundo a cada loo2.

if/tempo DD 1C5F digitalIrite/O,A.I5E pisca=ermel*o/5E p4/5E G if/tempo DD 4C5p3/5E addTempo/5E G

&sta somente uma forma de fazer o programa, poder+amos, por exemplo mudar os estados dos A&(s na funo loop ao invs de criar fun;es separadas para isso. A logica de programao muito importante nesses casos, no programa acima, consideramos %ue o tempo do ciclo no sair da faixa citada, e %ue no *aja erro na sua adio, se pulssemos do segundo O para o 11 , por exemplo, no ter+amos a mudana dos sinais para os segundo estado. Projeto extra ': Controle de luminosidade ara este projeto %ueremos controlar a luminosidade em um local, de forma %ue teremos 4 bot;es, um deles liga9desliga o sistema de iluminao, e o outro %uando pressionado iniciara ou adicionara tempo um >timer? %ue desligara a iluminao %uando o tempo terminar. [uando o sistema estiver ligado usaremos um A(S para verificar a luminosidade no local, %uanto menor, a luz /A&(5 devera ter uma intensidade maior.

1'

3oto 1

Liga?!esliga o sistema de iluminao

3oto 2

(eta um timer 2ara desligar o sistema.

L!J

:sado como sensor de luminosidade.

L !

Iluminao.

8ircuito usado no projeto-

8'digo fonteK InicialiCao das #ari)#eis: K 9em2o do timer. K 9em2o decorrido durante o timer. K 9em2o de segurana contra mau contato.

volatile float tempo D CE volatile float tempo(ecorrido D CE volatile unsigned long tmpseg D CE volatile boolean ligado D falseE void timer/5F if/millis/5 ] tmpseg:WCC5F tmpseg D millis/5E tempo:D1CCCCE if/tempo ]DWCCCC5F tempo D CE tempo(ecorrido D CE G G returnE G

K ssa 2arte garante Bue o boto s/ de e*eito se a2ertado de2ois de %-- ms4 isso 2re#ine contra mal contato nos *ios. K ABui adicionamos 1-s a #ari)#el Ntem2oO a cada #eC Bue a2ertarmos o boto4 e Ceramos ela caso 2asse de %x 2ressionadas.

1+

void ligar/5F if/millis/5 ] tmpseg:WCC5F tmpseg D millis/5E ligado D `ligadoE tempo D CE tempo(ecorrido D CE G returnE G void setu!/5F attac*$nterrupt/C,timer,S$H$RK5E attac*$nterrupt/1,ligar,MAAA$RK5E G void loo!/5F

K (egue o mesmo da *uno timer. K ABui in#ertemos o #alor da #ari)#el booleana NligadoO a cada #eC Bue 2ressionamos o boto4 e Ceramos as outras #ari)#eis.

K Pino 2 L boto timer. K Pino 3 L boto ligar.

if/ligado5F K AaC a leitura do L!J. int ldr D analogSead/P5E int luminosidade D map/ldr,34C,03C,C,4WW5E K Ajusta o #alor da con#erso A! 2ara o P;0. K scre#e o #alor ajustado 2ara a luminosidade do analogIrite/11,luminosidade5E L !. if/tempo ] C5F if/tempo(ecorrido _ tempo5F delaL/1CC5E tempo(ecorrido:D1CCE GelseF ligado D falseE G G GelseF analogIrite/11,C5E G G K Fessa 2arte #eri*icamos se o timer esta ati#ado < tem2o P-=4 caso isso ocorra: Adicionamos 1-- a #ari)#el tem2o!ecorrido 2ara cada 1-- milisegundos. caso Ntem2o!ecorrisoO seja maior Bue o tem2o do timer desligamos o sistema. K Caso a #ari)#el NligadoO seja false desligamos o sistema.

1G

Pro!osta de im!lementao dos exerc)cios


Projeto -: 8ircuito usado no projeto-

8'digo fonteint receptor D 4E int claro D WWCE int escuro D 1OCE Htring 8or D aa,=erificar D aaE void setup/5F Herial.begin/O2CC5E G void loop/5F int x D analogSead/receptor5E if/x ] claro58or D a.bjeto 8laroaE if/x _ escuro58or D a.bjeto &scuroaE if/x _ claro ^^ x ] escuro5 8or D aAproxime o .bjetoaE if/8or `D =erificar5F Herial.println/8or5E =erificar D 8orE G delaL/WCC5E G

K Ligamos o rece2tor IJ no 2ino 2 <entrada anal/gica=. K A leitura do rece2tor *oi de %%-E 2ara objetos claros4 K *oi de 1,-7 2ara objetos escuros. K InicialiCamos as strings 2ara en#iar serialmente 2ara o PC. K InicialiCamos a comunicao serial na *uno setu2.

K Lemos a entrada anal/gica ligada ao rece2tor. K Caso a leitura seja %%-E a string guardara NObjeto ClaroO K Caso seja 1,-7 guardara NObjeto scuroO K Caso o #alor esteja entre 1,- e %%- 2ediremos 2ara a2roximar um objeto. K ABui #eri*icamos se a string a ser en#iada $ a mesma Bue a anterior4 caso sim e#itamos a re2etio da cor do objeto4 caso no en#iamos serialmente a cor do objeto. K s2eramos um tem2o 2ara 2re#enir ru.dos na leitura.

1,

Biblio rafia e materiais para consulta


http:!!"""#arduino#cc! http:!!vimeo#com!$%$&'($)

http:!!"""#tecmundo#com#br!android!%))'&-arduino-a-plataforma-open-source-quevai-automati*ar-a-sua-vida#htm

2-

Você também pode gostar