2

Sum´ ario
1 Conceitos b´ asicos 1.1 O Projeto Arduino . . . . . . . 1.2 Instala¸ c˜ ao do software . . . . . 1.3 Primeiro projeto . . . . . . . . 1.3.1 C´ alculos de resistˆ encia . 1.3.2 Alimenta¸ c˜ ao do circuito 1.4 Bibliotecas e shields . . . . . . 1.5 Integra¸ c˜ ao com o PC . . . . . . 1.6 Portas anal´ ogicas e digitais . . 1.6.1 Portas digitais . . . . . 1.6.2 Portas anal´ ogicas . . . . 7 8 9 10 12 13 13 14 15 15 18 21 22 22 22 23 23 23 24 24 25 25 26 27 29 30 30 30 31 31 33 35

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

2 Fundamentos de Eletrˆ onica 2.1 Resistores e Lei de Ohm . . . . . . . 2.1.1 Resistores em s´ erie . . . . . . 2.1.2 Resistores em paralelo . . . . 2.1.3 C´ odigo de cores . . . . . . . . 2.1.4 Divisor de tens˜ ao . . . . . . . 2.2 Capacitores e indutores . . . . . . . 2.2.1 Capacitores . . . . . . . . . . 2.2.2 Indutores . . . . . . . . . . . 2.3 Diodos . . . . . . . . . . . . . . . . . 2.4 Transistores . . . . . . . . . . . . . . 2.4.1 Utiliza¸ c˜ ao de transistores com 2.4.2 Ponte-H . . . . . . . . . . . . 3 Eletrˆ onica Digital 3.1 Introdu¸ c˜ ao . . . . . . . . . . . . . . 3.2 Portas l´ ogicas . . . . . . . . . . . . . 3.2.1 Tabela-verdade . . . . . . . . 3.2.2 Representa¸ c˜ ao das opera¸ c˜ oes 3.2.3 Fun¸ c˜ oes l´ ogicas compostas . . 4 Fazendo barulho com o Arduino 5 Armazenando na EEPROM

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . rel´ es . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

3

4 ´ SUMARIO .

5 .

com/turicas • Telefone: +55 21 9898-0141 1 http://www.org/ . al´ em de contribuir com o desenvolvimento de diversos projetos. Contato • E-mail: alvaro@CursoDeArduino. ´ e programador Python3 . onde j´ a desenvolveu diversas atividades de pesquisa.org/licenses/by-nc-sa/3. sinta-se livre para entrar em contato – terei um imenso prazer em receber sua contribui¸ c˜ ao! Download Essa apostila est´ a dispon´ ıvel para download atrav´ es do site do Curso de Arduino1 .6 ´ SUMARIO Pref´ acio Essa apostila ´ e destinada aos alunos que realizaram o Curso de Arduino1 . Acesse o site para verificar novas vers˜ oes no seguinte endere¸ co: http://www. que est´ a dispon´ ıvel nas formas compacta e completa nos seguintes endere¸ cos: http://creativecommons.br/ • Twitter: http://twitter. ensino e extens˜ ao (muitas ligadas ao Arduino). sendo o respons´ avel por trazer a pr´ atica a Niter´ oi. ´ Alvaro atualmente possui uma empresa que ministra cursos de Arduino por todo o Brasil e desenvolve projetos utilizando a plataforma para diversas empresas.br/apostila O Autor ´ Alvaro Justen. Al´ em disso. F˜ a de carteirinha de software livre (usu´ ario h´ a mais de 12 anos).python.0 Unported.0/deed. sempre participa de eventos (palestrando ou organizando) e grupos de usu´ arios. onde s˜ ao realizados encontros mensais para discutir sobre a plataforma.CursoDeArduino. ´ e o criador do Curso de Arduino1 e autor dessa apostila.0/legalcode Caso possua corre¸ c˜ oes.com.eng. tamb´ em conhecido como “Turicas”. devidamente citadas) est´ a dispon´ ıvel atrav´ es da licen¸ ca Creative Commons Atribui¸ c˜ ao-Uso n˜ ao-comercial-Compartilhamento pela mesma licen¸ ca 3.org/ 4 http://dojorio. tendo criado e contribu´ ıdo com diversos projetos nessa linguagem. Est´ a finalizando sua gradua¸ c˜ ao em Engenharia de Telecomunica¸ c˜ oes pela Universidade Federal Fluminense (Niter´ oi/RJ).br • Blog: http://blog.com.justen. entusiasta de metodologias a ´geis e Coding Dojo4 .CursoDeArduino.pt_BR http://creativecommons.com.cc/ 3 http://www.org/licenses/by-nc-sa/3. desenvolve bibliotecas abertas para o Arduino e publica artigos com dicas e projetos em seu blog. Foi respons´ avel pela cria¸ c˜ ao do grupo de usu´ arios de Arduino do Rio de Janeiro2 .br/ 2 http://ArduInRio. sugest˜ oes ou mesmo queira contribuir escrevendo essa apostila. tendo como premissa explicar em mais detalhes temas abordados em aula para que os alunos n˜ ao se preocupem com anota¸ c˜ oes durante os experimentos. Seu conte´ udo (com exce¸ c˜ ao das fotos de terceiros.

Cap´ ıtulo 1 Conceitos b´ asicos 7 .

dentre outras coisas que n˜ ao conseguir´ ıamos diretamente com um PC. o projeto est´ a na vers˜ ao Uno.org/licenses/gpl. CONCEITOS BASICOS 1.gnu. na maior parte das vezes. Como a interface do Arduino com outros dispositivos est´ a mais perto do meio f´ ısico que a de um PC. ´ e um computador como qualquer outro: possui microprocessador. uma placa que cabe na palma da m˜ ao. utilizando um microcontrolador. O software ´ e livre (GNU GPL2 ). Por exemplo: em um PC utilizamos teclado e mouse como dispositivos de entrada e monitores e impressoras como dispositivos de sa´ ıda. A parte de hardware do projeto.).) e controlar outros circuitos (lˆ ampadas.cc/ 2 http://www. seja traduzindo) atrav´ es da wiki! 1 http://www. tornando poss´ ıvel integra¸ c˜ ao f´ acil com sensores.org/licenses/ . luz. o hardware ´ e totalmente especificado (basta entrar no site e baixar os esquemas) e a documenta¸ c˜ ao est´ a dispon´ ıvel em Creative Commons3 – os usu´ arios podem colaborar (seja escrevendo documenta¸ c˜ ao. Figura 1.1: Foto do hardware de um Arduino Duemilanove A principal diferen¸ ca entre um Arduino e um computador convencional ´ e que. n´ os mesmos constru´ ımos os circuitos que s˜ ao utilizados. temporizadores. em italiano). A grande diferen¸ ca com rela¸ c˜ ao ao uso desses dispositivos.8 ´ CAP´ ITULO 1. ou seja. eletrodom´ esticos etc. 32kB de mem´ oria flash.arduino. ´ e que. o Arduino utiliza dispositivos diferentes para entrada e sa´ ıda em geral. j´ a em projetos com o Arduino os dispositivos de entrada e sa´ ıda s˜ ao circuitos el´ etricos/eletrˆ onicos.html 3 http://creativecommons. por´ em muitos Arduinos encontrados hoje s˜ ao da vers˜ ao Duemilanove (2009. motores e outros dispositivos eletrˆ onicos.1 O Projeto Arduino Arduino1 ´ e um projeto que engloba software e hardware e tem como objetivo fornecer uma plataforma f´ acil para prototipa¸ c˜ ao de projetos interativos. n˜ ao estamos limitados apenas a produtos existentes no mercado: o limite ´ e dado por nosso conhecimento e criatividade! O melhor de tudo nesse projeto ´ e que seu software. Ele faz parte do que chamamos de computa¸ c˜ ao f´ ısica: ´ area da computa¸ c˜ ao em que o software interage diretamente com o hardware. hardware e documenta¸ c˜ ao s˜ ao abertos. mem´ oria RAM. no caso do Arduino. al´ em ter menor porte (tanto no tamanho quanto no poder de processamento). mem´ oria flash (para guardar o software ). press˜ ao etc. dentre outras funcionalidades. podemos ler dados de sensores (temperatura. 2kB de mem´ oria RAM. motores. que possui um clock de 16MHz. contadores. Atualmente. 14 portas digitais e 6 entradas anal´ ogicas.

cc/playground/Linux/Ubuntu 6 http://www. Como qualquer computador. Vamos l´ a: • Ubuntu GNU/Linux 10.arduino. A seguinte tela ser´ a mostrada: 4 http://arduino. • Outras distribui¸ c˜ oes GNU/Linux: Consulte a p´ agina de instala¸ c˜ ao em outras distribui¸ c˜ oes GNU/Linux6 . A partir do momento que o software ´ e gravado no Arduino n˜ ao precisamos mais do PC: o Arduino. • Apple Mac OS X: Consulte a p´ agina de instala¸ c˜ ao para o Mac OS X8 .arduino.cc/en/Guide/Windows 8 http://www. como ´ e um computador independente. o Arduino precisa de um software para executar comandos. fazer download da interface integrada de desenvolvimento (IDE)4 e ligar a placa ` a porta USB do PC.cc/playground/Learning/Linux 7 http://www. Esse software ser´ a desenvolvido na Arduino IDE em nosso PC.10: Basta executar em um terminal: sudo aptitude install arduino ou procurar pelo pacote “arduino” no Synaptic (menu Sistema → Administra¸ c˜ ao → Gerenciador de pacotes Synaptic). Ap´ os escrever o c´ odigo.2.arduino.10): Consulte a p´ agina de instala¸ c˜ ao do Arduino em Ubuntu5 .2 Instala¸ c˜ ao do software Para criar um projeto com o Arduino.arduino. abra a IDE (no Ubuntu GNU/Linux ela estar´ a dispon´ ıvel no menu Aplicativos → Eletrˆ onica → Arduino IDE ).˜ DO SOFTWARE 1. Antes de iniciar nosso projeto precisamos ent˜ ao instalar a IDE. basta comprar uma placa Arduino (utilizaremos o Arduino Duemilanove como exmplo) – que custa em torno de US$30 no exterior e por volta de R$100 no Brasil –. o compilaremos e ent˜ ao faremos o envio da vers˜ ao compilada ` a mem´ oria flash do Arduino. atrav´ es da porta USB.cc/en/Guide/MacOSX . • Ubuntu GNU/Linux (anterior a 10.cc/en/Main/Software 5 http://www. utilizando a linguagem C++. INSTALAC ¸ AO 9 1. conseguir´ a sozinho executar o software que criamos. desde que seja ligado a uma fonte de energia. • Microsoft Windows: Consulte a p´ agina de instala¸ c˜ ao para as variadas vers˜ oes do Microsoft Windows7 . Ap´ os a instala¸ c˜ ao.

10 1. ou seja. } void loop() { digitalWrite(13. ser´ a vista a mensagem Done uploading na IDE e ent˜ ao o sketch estar´ a rodando no Arduino. Nosso LED ficar´ a aceso durante um segundo e apagado durante outro segundo e ent˜ ao recome¸ car´ a o ciclo. da direita para a esquerda – destacado na figura acima). Como o Arduino n˜ ao vem por padr˜ ao com um display. Com nosso sketch pronto. Abra a IDE e digite o seguinte c´ odigo: void setup() { pinMode(13. } Chamamos um c´ odigo feito para Arduino de sketch e o salvamos em um arquivo com a extens˜ ao .3 Primeiro projeto Quando ensinamos linguagens de programa¸ c˜ ao novas.10 ´ CAP´ ITULO 1. delay(1000).pde. Vamos agora ` a explica¸ c˜ ao do processo: . Ap´ os o processo. CONCEITOS BASICOS Figura 1. delay(1000). nosso primeiro exemplo ser´ a fazer um LED piscar – e por isso ser´ a chamado blink. OUTPUT). digitalWrite(13. de 1 em 1 segundo. geralmente o primeiro exemplo ´ e um hello world.2: Arduino IDE vers˜ ao 0018 rodando no Ubuntu GNU/Linux 10. bastar´ a conectar o Arduino na porta USB e clicar no bot˜ ao upload (segundo. o LED acender´ a e apagar´ a. HIGH). LOW).

5V. A fun¸ c˜ ao setup ´ e executada assim que o Arduino d´ a boot. precisamos acender e apagar o LED que est´ a conectado a ela. note que n˜ ao precisamos digitar as diretivas include para arquivos como o stdlib. o resistor ` a porta 13 e o LED ` a porta GND – ground ou terra –. para que ele n˜ ao queime.3: Arduino Duemilanove rodando o exemplo Blink Por´ em. PRIMEIRO PROJETO 11 O Arduino possui 14 portas digitais. chamamos a fun¸ c˜ ao delay passando o parˆ ametro 1000 – o que essa fun¸ c˜ ao faz ´ e esperar um tempo em milisegundos para ent˜ ao executar a pr´ oxima instru¸ c˜ ao. vamos utilizar a porta de n´ umero 13 como sa´ ıda. se d´ a por conta da porta digital: ela assume ou a tens˜ ao 0V. j´ a a fun¸ c˜ ao loop fica sendo executada continuamente (em loop ) at´ e que o Arduino seja desligado. Podemos utilizar um LED de 5mm que acende com 2. ligamos um resistor de 120Ω em s´ erie com o LED. Tudo ´ e feito de forma autom´ atica para facilitar o desenvolvimento do projeto! Como o Arduino j´ a vem com um LED internamente conectado ` a porta 13. Para solucionar esse problema precisamos ligar algum outro componente que seja respons´ avel por dividir parte dessa tens˜ ao com o LED. por exemplo. precisamos criar duas fun¸ c˜ oes espec´ ıficas: setup e loop. n˜ ao precisaremos de circuitos externos para que esse projeto funcione. passamos para essa fun¸ c˜ ao a porta que queremos alterar a tens˜ ao e o novo valor de tens˜ ao (HIGH = 5V. Se vocˆ e est´ a acostumado com C/C++. Para alterar a tens˜ ao na porta. O problema. Depois das chamadas para acender e apagar o LED. nesse caso. como na Figura 1. Como as portas digitais s˜ ao de entrada ou sa´ ıda. bastar´ a fazer upload daquele c´ odigo e j´ a teremos o resultado esperado: (a) LED apagado (b) LED aceso Figura 1. ent˜ ao utilizaremos um resistor.3. Nesse caso. que j´ a vem na biblioteca padr˜ ao do Arduino. por isso. definimos ent˜ ao dentro da fun¸ c˜ ao setup que a nossa porta 13 ´ e uma porta de sa´ ıda – fazemos isso atrav´ es da chamada ` a fun¸ ca ˜o pinMode. Para que nosso software funcione corretamente no Arduino. ou seja. Portanto.1.h. . dessa forma. Depois de configurarmos corretamente a porta 13 como sa´ ıda. podemos controlar quando a porta ficar´ a com 5V ou quando ficar´ a com 0V – internamente o Arduino possui um LED conectado ` a porta 13 e. se quisermos acender um LED externo ` a placa. LOW = 0V). Deve-se ressaltar que a IDE Arduino inclui automaticamente todas as bibliotecas que utilizamos. ou a tens˜ ao 5V – e caso coloquemos 5V no LED ele ir´ a queimar. utilizamos a fun¸ c˜ ao digitalWrite (que tamb´ em est´ a na biblioteca padr˜ ao do Arduino). que podemos utilizar como entrada ou sa´ ıda.4. podemos conect´ a-lo diretamente ` a porta 13. teremos como “ver” nosso software funcionando.

podemos calcular o valor da resistˆ encia R do resistor que iremos utilizar atrav´ es da Lei de Ohm: V = RI . 8V . Dada essa situa¸ c˜ ao. 2V ⇒ VR = 2. 020A ∴ R = 02 . Em vez do LED. temos duas alternativas: • Utilizar um resistor de maior resistˆ encia e limitar mais a corrente (que far´ a com que o LED brilhe menos). podemos concluir que a tens˜ ao no resistor ser´ a de: VR = 5V − VLED ∴ VR = 5V − 2. por´ em n˜ ao existem resistores com esse valor para venda – os valores s˜ ao pr´ e-definidos9 .12 ´ CAP´ ITULO 1.2V e corrente de 20mA atrav´ es do Arduino.8V Assim. e ent˜ ao veremos o LED externo piscar juntamente com o LED interno. precisei fazer algumas contas (e arredondamentos).org/hack-s-dicas/valores-comerciais-para-resistores-capacitores-e-indutores/ . 8V = R0. 20mA. CONCEITOS BASICOS Figura 1. eletrodom´ esticos etc.4: Utilizando um LED externo para o exemplo Blink N˜ ao precisamos fazer nenhuma altera¸ c˜ ao no software para que esse circuito funcione: basta ligar o Arduino na porta USB do computador. como motores. para que o computador dˆ e energia ao circuito.1 C´ alculos de resistˆ encia Para chegar ao valor de 120Ω acima. poder´ ıamos controlar outros componentes. precisamos de um resistor de 140Ω. 9 Saiba mais em http://www2. Se precisarmos acender um LED verde. como j´ a vimos. temos: 2. ou • Associar dois ou mais resistores em s´ erie ou paralelo para conseguir o valor. 2V Sabendo desses detalhes. j´ a que uma altera¸ c˜ ao pequena de corrente n˜ ao causar´ a danos ao dispositivo. ou seja: VLED = 2. 8V . Geralmente escolhemos um resistor de valor pr´ oximo. podemos generalizar com a seguinte f´ ormula: R= Vf onte − VLED IR Para o LED verde. Como IR = 20mA e VR = 2. j´ a que o Arduino s´ o consegue fornecer ou 0V ou 5V. que ´ e alimentado com tens˜ ao de 2. por´ em em alguns casos precisaremos combinar resistores de valores diferentes para conseguir o valor equivalente – esse tema ser´ a explicado em mais detalhes no pr´ oximo cap´ ıtulo. ou seja. e com isso podemos concluir que: • A tens˜ ao total (soma das tens˜ oes no resistor e no LED) ser´ a de 5V.eletronica.3.020A ⇒ R = 140Ω Depois de feito o c´ alculo. ou seja: VLED + VR = 5V • A corrente total que passa pelo resistor e pelo LED ´ e igual. Vamos aprender agora a calcular o valor dos resistores que precisamos utilizar. precisaremos de um resistor. ou seja: ILED = IR = 20mA • Precisamos colocar uma tens˜ ao de 2.2V no LED. Colocaremos o resistor em s´ erie com o LED. 1.

outros como sa´ ıda. gera¸ c˜ ao de a ´udio. o circuito do Arduino ´ e alimentado com uma tens˜ ao de 5V.4 Bibliotecas e shields Assim como a IDE j´ a vem com diversas fun¸ c˜ oes pr´ e-definidas. Com os shields conseguimos. podemos utilizar uma outra fonte de energia de 5V (a fonte deve ser ligada diretamente nos pinos 5V e GND do Arduino). utilizar uma bateria de 9V ou mesmo baterias de carros. para as mais diversas fun¸ c˜ oes. Existem shields dos mais variados tipos. dentre muitas outras coisas! E quem pensa que essa estensibilidade toda se restringe ` a parte de software est´ a muito enganado: o Arduino possui o que chamamos de shields.1. Para resolver esse problema. e ainda outros como entrada e sa´ ıda. motos e no-breaks (12V). fica complicado alimentar um Arduino dessa forma alternativa – se tivermos uma tomada de 127/220VAC por perto. recep¸ c˜ ao de sinais de sensores e outros dispositivos (como teclado PS/2). atrav´ es do cabo USB. acelerˆ ometro. GPS e diversos outros sensores que podem gerar dados importantes para o software que est´ a rodando no microcontrolador. Wi-Fi ou Zigbee. apesar de n˜ ao ser recomendado). displays LCD. Por´ em nem sempre temos um PC por perto. poder´ ıamos ligar uma fonte AC/DC (essas sim. que s˜ ao placas que se acoplam ` a placa original. por exemplo. . BIBLIOTECAS E SHIELDS 13 1. Como n˜ ao possu´ ımos pilhas/baterias em abundˆ ancia no mercado com tens˜ ao de 5V.arduino.4. agregando funcionalidades ` a mesma. Com o regulador de tens˜ ao podemos combinar pilhas em s´ erie. para esses casos. fazer o Arduino se comunicar numa rede Ethernet.3.5: Arduino alimentado por uma bateria de 9V Retirado de http://www. Alguns servem como entrada. existem aos montes). Quando ligamos o Arduino em uma porta USB do PC. alimenta o Arduino. o pr´ oprio PC. o Arduino possui outras bibliotecas para controle de servomotores.cc/playground/Learning/9VBatteryAdapter 1. o Arduino possui um regulador de tens˜ ao que aceita tens˜ oes de 7 a 12V (na verdade. Figura 1. outros possuem leitor de cart˜ ao SD. ou ainda transmitir dados para qualquer dispositivo via Bluetooth.2 Alimenta¸ c˜ ao do circuito Internamente. Existem shields com circuitos integrados prontos para controlarmos motores sem que precisemos nos preocupar com complica¸ c˜ oes eletrˆ onicas envolvidas. ele consegue funcionar com tens˜ oes entre 6 e 20V.

que tem como finalidade criar um oscilosc´ opio. atrav´ es de um PC! Existem in´ umeros projetos interessantes que fazem interface entre linguagens de programa¸ c˜ ao e o Arduino – existem implementa¸ c˜ oes para Python. onde podemos ver em tempo real.com/p/arduinoscope/ 13 http://www. C. Isso nos permite desenvolver um software que roda no PC e se comunica com o software que roda no Arduino.google.org/ . ele pode tamb´ em enviar dados.python. cria uma plataforma para desenvolvimento de jogos no Arduino: o Video Game Shield10 . via USB (atrav´ es do Arduino). no PC.5 Integra¸ c˜ ao com o PC Apesar de o Arduino ser um computador independente. de certa forma. Ruby. dentre outras linguagens. cuja implementa¸ c˜ ao est´ a dispon´ ıvel 10 http://www. baseados nesses dados. que j´ a possui v´ arias fun¸ c˜ oes pr´ e-programadas para fazermos desenhos na televis˜ ao e capturar os dados dos movimentos nos controles. Um exemplo de aplica¸ c˜ ao que utiliza a porta USB para comunica¸ c˜ ao do Arduino com o PC ´ e o projeto Arduinoscope12 . que s˜ ao sistemas completos. gr´ aficos das tens˜ oes que est˜ ao ligadas ` as portas anal´ ogicas do Arduino. que possui uma sa´ ıda RCA e duas entradas para controles Numchuck do Nintendo Wii. por exemplo. por exemplo.wayneandlayne.br/Turiquinhas 14 http://www.org/ 12 http://code. criar um software em Python11 que recebe os dados de um sensor. CONCEITOS BASICOS Figura 1. Al´ em do hardware. o Turiquinhas13 . e envia para algum banco de dados na Internet – assim teremos. Um deles. enviando dados para o mundo. Fica a dica para quem quer come¸ car um projeto Arduino assistido por computador de maneira f´ acil: vale a pena estudar um protocolo de comunica¸ c˜ ao e controle chamado Firmata14 . Java.6: Arduino Duemilanove com shield Ethernet Existem tamb´ em outros shields mais elaborados.eng. em alguns casos podemos nos aproveitar de um PC por perto e explorar outra funcionalidade muito boa do projeto: o Arduino consegue conversar com o computador atrav´ es da porta USB. Outro exemplo ´ e um projeto que criei.firmata. existe uma biblioteca para ser utilizada em conjunto. onde controlo um carrinho atrav´ es de Wi-Fi.14 ´ CAP´ ITULO 1. controlando o Arduino! Dessa forma. nosso Arduino online. 1. receber dados da Web e enviar comandos ao Arduino. por exemplo.justen.com/projects/video-game-shield/ 11 http://www. E n˜ ao para por a´ ı: al´ em de o software que roda no PC receber dados. o que nos abre um mar de possibilidades! Podemos. podemos.

1 Portas digitais Utilizamos as portas digitais quando precisamos trabalhar com valores bem definidos de tens˜ ao. Como o sistema ´ e bin´ ario. S˜ ao elas: 0V e 5V. • Leia o valor de uma determinada porta (ter´ a 0V ou 5V como resposta). de 13 a 0 Apesar de ser poss´ ıvel.7: Portas digitais do Arduino. as portas digitais do Arduino podem trabalhar apenas com essas duas tens˜ oes – e o software que desenvolveremos poder´ a requisitar ao microcontrolador do Arduino que: • Coloque uma determinada porta em 0V. Utilizaremos as fun¸ c˜ oes digitalRead e digitalWrite para ler e escrever. 1. ou seja. existe uma linguagem chamada Processing15 . as portas digitais tamb´ em servem como portas de sa´ ıda. com intervalo de 1 segundo. 1. onde acendemos e apagamos um LED ao alternar a tens˜ ao da porta 13 entre 5V e 0V.6. j´ a que ´ e esse o utilizado pelo Arduino.org/ . Al´ em das op¸ c˜ oes citadas acima. respectivamente. dentre outras coisas. parecid´ ıssima com a linguagem que utilizamos no Arduino.´ 1.6. Al´ em disso. a partir dos dados vindos da comunica¸ c˜ ao com o Arduino. projetamos sistemas que utilizam apenas dois valores bem definidos de tens˜ ao. respectivamente) e. quatern´ arios. Dessa forma. funcionando com dois tipos b´ asicos de sa´ ıda: sa´ ıda digital comum e sa´ ıda PWM – o PWM pode ser utilizado para simular uma sa´ ıda anal´ ogica. que consegue se comunicar com o Arduino via USB e ´ e utilizada para criar imagens. mas focaremos no bin´ ario. nas portas digitais. anima¸ c˜ oes e intera¸ c˜ oes no PC. Existem sistemas tern´ arios.processing. • Coloque uma determinada porta em 5V. A fun¸ c˜ ao digitalWrite j´ a foi exemplificada em nosso exemplo Blink. PORTAS ANALOGICAS E DIGITAIS 15 para v´ arias linguagens (e j´ a vem por padr˜ ao um exemplo na IDE do Arduino). Ele facilita o processo de aquisi¸ c˜ ao de dados e controle da placa. seu uso pode conflitar com o upload do software. O Arduino Duemilanove possui 14 portas digitais que est˜ ao destacadas na figura a seguir: Figura 1. n˜ ao ´ e recomend´ avel utilizar as portas 0 e 1 pois elas est˜ ao diretamente ligadas ao sistema de comunica¸ c˜ ao do Arduino (pinos RX e TX – recep¸ c˜ ao e transmiss˜ ao. Para exemplificar a fun¸ c˜ ao digitalRead utilizaremos um bot˜ ao. certifique-se de desconectar quaisquer circuitos conectados a ela no momento do upload. temos que ter apenas duas tens˜ oes.6 Portas anal´ ogicas e digitais O Arduino possui dois tipos de portas de entrada: anal´ ogicas e digitais. por isso. Caso queira utiliz´ a-las. como no diagrama a seguir: 15 http://www. Apesar de nem sempre ser verdade. geralmente trabalhamos com valores digitais bin´ arios.

que ´ e uma otimiza¸ c˜ ao do anterior e possui mesma funcionalidade: #define BOTAO 2 #define LED 13 void setup() { pinMode(LED. • LOW. O que o programa faz. } } A fun¸ c˜ ao digitalRead nos retorna o valor correspondente ` a tens˜ ao que est´ a na porta que passamos entre parenteses. INPUT). cujo valor ´ e 2. LOW). caso a tens˜ ao na porta seja 5V. INPUT).16 ´ CAP´ ITULO 1. caso a tens˜ ao na porta seja 0V. OUTPUT). ´ e apagar o LED caso o bot˜ ao esteja pressionado e acendˆ e-lo caso n˜ ao esteja. HIGH). definida atrav´ es da diretiva #define). vamos programar o Arduino com o seguinte c´ odigo: #define BOTAO 2 #define LED 13 void setup() { pinMode(LED. Fica como exerc´ ıcio entender o c´ odigo a seguir. pinMode(BOTAO. CONCEITOS BASICOS Figura 1. OUTPUT). } else { digitalWrite(LED. } . O valor retornado ´ e uma constante. mapeado da seguinte forma: • HIGH. pinMode(BOTAO. } void loop() { if (digitalRead(BOTAO) == HIGH) { digitalWrite(LED. utilizamos a porta BOTAO (que na verdade ´ e uma constante.8: Esquema el´ etrico ligando um bot˜ ao ao Arduino Montado o circuito acima. Em nosso exemplo. ent˜ ao.

chamando a fun¸ c˜ ao analogWrite (passando como parˆ ametros a porta do LED (11) e i) e esperando por 30 milisegundos a cada itera¸ c˜ ao. PWM PWM significa Modula¸ c˜ ao por Largura de Pulso (Pulse-Width Modulation. i++) { analogWrite(LED. } void loop() { for (int i = 0. 9. podemos utilizar essa t´ ecnica para limitar a potˆ encia de algum circuito. Basicamente. OUTPUT). Infelizmente. . ou seja. por limita¸ c˜ oes de hardware. A Figura 1. o percentual de tempo em que o sinal fica em 5V. 10 e 11 s˜ ao privilegiadas e podem utilizar esse recurso. i). !digitalRead(BOTAO)).´ 1.9 ilustra melhor esse conceito: Figura 1. do Inglˆ es) e consiste em manipularmos a raz˜ ao c´ ıclica de um sinal (conhecida do Inglˆ es como duty cycle ) a fim de transportar informa¸ c˜ ao ou controlar a potˆ encia de algum outro circuito. Para exemplificar o uso de controle de potˆ encia de um circuito utilizando PWM vamos utilizar um LED em s´ erie com um resistor ligados ` a porta 11 (o circuito ´ e o mesmo do experimento Blink.6. } } Na fun¸ c˜ ao loop acima temos um la¸ co for. o Arduino n˜ ao possui PWM em todas as portas digitais: apenas as portas 3. delay(30). Dessa forma. considere que um LED L1 seja alimentado o tempo inteiro por um sinal constante de 5V. 6. i < 255. } 17 Dica: o caractere “!”. Atrav´ es de um c´ alculo simples de potˆ encia podemos notar que o LED L2 consumir´ a apenas 25% da potˆ encia do primeiro. que conta de 0 a 255 (armazenando o valor do contador na vari´ avel i). por´ em os tempos em que o sinal permanece em 0V e 5V podem ser diferentes. teremos um sinal digital que oscila entre 0V e 5V com determinada frequˆ encia (o Arduino trabalha com um padr˜ ao perto de 500Hz) – funciona como se fosse um clock. temos: duty cycle = x x = x+y T O que controlamos atrav´ es de software ´ e justamente a duty cycle. PORTAS ANALOGICAS E DIGITAIS void loop() { digitalWrite(LED. Duty cycle ´ e a raz˜ ao do tempo em que o sinal permanece em 5V sobre o tempo total de uma oscila¸ c˜ ao. 5. significa not e tem como finalidade negar a express˜ ao que segue ` a sua direita. em linguagem C.9: Sinal PWM com duty cycle de 25% Assim. Por exemplo. s´ o vamos mudar a porta) e o seguinte c´ odigo: #define LED 11 void setup() { pinMode(LED. j´ a o LED L2 ´ e alimentado pelo sinal PWM acima (duty cycle de 25%).

a precis˜ ao das medi¸ c˜ oes de tens˜ ao no Arduino ´ e de por volta de 0. Como os conversores anal´ ogico-digitais (ADC – analog-digital converter.11. de 0 a 5 Como os nomes de fun¸ c˜ oes no Arduino s˜ ao bastante intuitivos. tamb´ em apague suavemente. . Quando vocˆ e rodar o c´ odigo perceber´ a que o LED acende de maneira mais suave – cada etapa de luminosidade diferente corresponde a uma itera¸ c˜ ao do for. al´ em de acender. as portas anal´ ogicas s˜ ao apenas de entrada e nelas podemos ter como entrada infinitos valores de tens˜ ao (delimitados na faixa de 0V a 5V). utilizamos a fun¸ c˜ ao analogRead para ler valores anal´ ogicos – ao chamar a fun¸ c˜ ao passamos como argumento o n´ umero da porta que desejamos ler (de 0 a 5). CONCEITOS BASICOS A fun¸ c˜ ao analogWrite (apesar de estarmos utilizando uma porta digital) ´ e respons´ avel pelo PWM e recebe como parˆ ametros a porta e um valor entre 0 e 255 – esse valor corresponde ao duty cycle. Como exemplo vamos regular a luminosidade de nosso LED (utilizando PWM) atrav´ es da quantidade de luz detectada por um resistor dependente de luz (ou LDR – light dependent resistor. do Inglˆ es). Fica como exerc´ ıcio para o leitor modificar o programa para que o LED. :-) 1. Figura 1.6. do Inglˆ es) do Arduino possuem 10 bits de precis˜ ao.005V ou 5mV. onde 0 corresponde a 0% e 255 a 100%. Monte o circuito segundo a figura 1. Ao contr´ ario das portas digitais.10: Portas anal´ ogicas do Arduino.2 Portas anal´ ogicas Al´ em das portas digitais o Arduino possui as portas anal´ ogicas.18 ´ CAP´ ITULO 1.

resistores utilizados e luminosidade desejada.25 e 255 da linha que definem a vari´ avel valorPWM devem ser calibrados conforme ilumina¸ c˜ ao do ambiente.25 * leitura + 255. de maneira an´ aloga com o PWM). OUTPUT). } Os valores 0. Para o c´ odigo acima. valorPWM). basta fazer uma regra de trˆ es simples. onde 0 corresponde a uma leitura de 0V na porta anal´ ogica e 1023 corresponde a 5V (para valores intermedi´ arios. teremos o seguinte comportamento do valor que colocamos na porta PWM a partir dos valores lidos na porta anal´ ogica: .6. a fun¸ c˜ ao analogRead nos devolve um valor entre 0 e 1023. PORTAS ANALOGICAS E DIGITAIS 19 Figura 1. Vamos carregar em nosso Arduino o seguinte c´ odigo: #define LED 11 #define LDR 5 void setup() { pinMode(LED. } void loop() { int leitura = analogRead(LDR). int valorPWM = . analogWrite(LED.´ 1.0.11: Circuito com LDR e LED Como os conversores anal´ ogico-digital possuem 10 bits de precis˜ ao.

25 e 255. em vez do LDR. • Volte o LDR para seu lugar anterior e utilize o potenciˆ ometro para configurar os valores 0.12: Gr´ afico da fun¸ c˜ ao PWM versus leitura anal´ ogica Ficam trˆ es exerc´ ıcios: • Aprenda a utilizar um potenciˆ ometro e o utilize para regular o brilho do LED. por´ em sens´ ıvel a temperatura (e n˜ ao mais a luz).20 ´ CAP´ ITULO 1. CONCEITOS BASICOS Figura 1. . • Leia o datasheet do circuito integrado LM35 e monte um circuito parecido com o anterior.

Cap´ ıtulo 2 Fundamentos de Eletrˆ onica 21 .

atrav´ es da f´ ormula: Req = R1 + R2 + . a resistˆ encia equivalente ser´ a o inverso da soma dos inversos das resistˆ encias. + Req R1 R2 Rn Figura 2. + Rn Figura 2. Por consequˆ encia.2 Resistores em paralelo Caso os resistores estejam em paralelo. R ´ e constante para in´ umeros valores de V e I ... a resistˆ encia ´ e proporcional ao comprimento e indiretamente proporcional ` a´ area. como na f´ ormula a seguir: 1 1 1 1 = + + .1 Resistores em s´ erie Se possuirmos resistores em s´ erie em determinado circuito. FUNDAMENTOS DE ELETRONICA 2.wikipedia. a resistˆ encia pode ser calculada atrav´ es das caracter´ ısticas do material resistivo: R= ρL A Onde ρ ´ e a resistividade do material.wikipedia.1: Resistores em s´ erie Retirado de http://en... caso as fontes de tens˜ ao do circuito n˜ ao consigam fornecˆ e-las. ou seja. V e I tˆ em uma rela¸ c˜ ao linear. eles tˆ em como fun¸ c˜ ao oferecer uma resistˆ encia ` a passagem da corrente el´ etrica – medimos essa resistˆ encia atrav´ es da unidade Ω (ohm). Sabendo-se a tens˜ ao e corrente em um resistor. ou seja. L ´ e seu comprimento e A sua ´ area.org/wiki/Resistor 2. 2. Como o pr´ oprio nome sugere.org/wiki/Resistor . eles causam uma queda de tens˜ ao na regi˜ ao do circuito onde se encontram – muitas vezes acabamos utilizando esse efeito para conseguirmos tens˜ oes intermedi´ arias.1.22 ˆ CAP´ ITULO 2. Se. podemos calcular sua resistˆ encia atrav´ es da f´ ormula: R= V I Por sua vez. podemos calcular a resistˆ encia equivalente do mesmo somando-se as resistˆ encias. para um determinado circuito.1.2: Resistores em paralelo Retirado de http://en. ent˜ ao chamamos o material (que possui resistˆ encia R) de ˆ ohmico.1 Resistores e Lei de Ohm Resistores s˜ ao dispositivos utilizados com a finalidade de transformar energia el´ etrica em energia t´ ermica e/ou limitar a corrente el´ etrica em um circuito.

temos que: Vout = R2 · Vin R1 + R2 Esse recurso ´ e bastante u ´til quando precisamos medir um tens˜ ao maior do que nossos circuitos conseguem. Basicamente. mapeamos as cores das diversas faixas do resistor e utilizamos a seguinte f´ ormula: R = (10a + b) · 10c ± t.3 C´ odigo de cores Os resistores possuem um c´ odigo de cores que nos permite identificar qual sua resistˆ encia. capacitores e indutores armazenam energia (pense como 1 http://pt. Por´ em.2. Para isso. onde a. aten¸ c˜ ao: caso precisemos conectar resistores ou outros circuitos resistivos no pino Vout .1. j´ a que as portas anal´ ogicas do Arduino trabalham nessa faixa menor. Dessa forma.org/wiki/Resistor 2. podemos criar o que chamamos de divisores de tens˜ ao1 : circuitos com resistores que.4: Circuito divisor de tens˜ ao A partir do circuito acima. o c´ alculo das tens˜ oes muda e Vout passa a depender das novas resistˆ encias do circuito.wikipedia.2. 2. poder´ ıamos utilizar in um divisor de tens˜ ao cujos valores de resistˆ encia resultassem em Vout = V3 . resistores criam uma queda de tens˜ ao na regi˜ ao do circuito em que est˜ ao. Utilizando esse efeito. Para isso. Figura 2.3: C´ odigo de cores Retirado de http://pt. aplicada uma tens˜ ao. Por exemplo: se quisermos medir uma tens˜ ao que varia de 9 a 12V no Arduino precisaremos coloc´ a-la na faixa de 0 a 5V. eles podem ser importantes no desenvolvimento de futuros projetos.wikipedia. os valores lidos em Vout seriam de 3 a 4V.4 Divisor de tens˜ ao Como citado acima. tˆ em como sa´ ıda uma fra¸ c˜ ao (da´ ı o nome divisores) dessa tens˜ ao de entrada. Figura 2.1. CAPACITORES E INDUTORES 23 2.org/wiki/Divisor de tens˜ ao .2 Capacitores e indutores Apesar de n˜ ao estudarmos a fundo esses dois elementos b´ asicos de circuitos. b e c s˜ ao as primeiras faixas e t a u ´ltima faixa (geralmente prata ou dourada). que representa a tolerˆ ancia.

2 Indutores Os indutores s˜ ao componentes que armazenam energia em forma de campo magn´ etico.6: Representa¸ c˜ ao de um capacitor em circuito el´ etrico 2. comuns no mercado . circuitos ressonantes (como transmissores e receptores de r´ adio).7: Indutores de v´ arios tipos. dentre outros. S˜ ao formados por duas placas met´ alicas com um diel´ etrico (isolante) no meio. µF (microFarad) e pF (picoFarad). Geralmente s˜ ao formados por bobinas (fio enrolado) com um condutor no meio. A unidade de medida ´ e o Henry (H). estabilizadores de tens˜ ao.24 ˆ CAP´ ITULO 2. comumente encontramos capacitores na casa dos mF (miliFarad). FUNDAMENTOS DE ELETRONICA uma bateria em que vocˆ e carrega e descarrega de tempos em tempos. Figura 2. 2. A unidade de medida ´ e o Farad (F). por´ em como 1 Farad ´ e algo bem grande. Figura 2. por´ em com capacidade bem limitada) e s˜ ao bastante utilizados em filtros de sinais.1 Capacitores Os capacitores s˜ ao componentes que armazenam energia em forma de campo el´ etrico.2.5: Capacitor eletrol´ ıtico bastante comum no mercado Figura 2.2.

2. para esse diodo) corresponde ao terminal negativo Figura 2. Os transistores s˜ ao a base de todos os circuitos integrados e placas modernos – alguns. funcionar´ a como um curto-circuito. E ao de 0. para uso em circuitos de comunica¸ c˜ ao sem fio). ele funcionar´ a como ´ importante notar que para diodos reais existe uma queda de tens˜ circuito aberto (n˜ ao conduzir´ a). do Inglˆ es) com polaridade NPN e PNP. .7V para que ele conduza. Bipolar Junction Transistor.7V em sua jun¸ c˜ ao P-N e. do Inglˆ es –. a forma como as baterias nos fornecem energia). do Inglˆ es –. como os FETs. Caso contr´ ario.4 Transistores Transistores s˜ ao dispositivos semicondutores usados como amplificadores ou chaveadores. DIODOS 25 Figura 2. com isso. possuem milh˜ oes deles. como os microprocessadores. a energia que temos em nossas tomadas) em corrente cont´ ınua (CC ou DC – direct current. Figura 2. Outros usos de diodo s˜ ao prote¸ c˜ ao de circuitos (contra corrente reversa) e extra¸ c˜ ao de modula¸ c˜ ao de sinais (por exemplo.9: Foto de um diodo comum no mercado – a faixa menor (cinza. por´ em existem outros tipos. a tens˜ ao do lado positivo precisa ser maior que a tens˜ ao negativa + 0.2.3. iremos focar nos transistores de estrutura bipolar de jun¸ c˜ ao (ou BJT. ou seja.10: Representa¸ c˜ ao de um diodo em circuito el´ etrico O diodo conduzir´ a corrente el´ etrica caso a tens˜ ao em seu terminal positivo (+) seja maior que a tens˜ ao em seu terminal negativo (−).8: Representa¸ c˜ ao de um indutor em circuito el´ etrico 2.3 Diodos Diodos s˜ ao componentes que tˆ em a capacidade de conduzir corrente el´ etrica em uma dire¸ c˜ ao e bloque´ a-la em outra – esse comportamento ´ e chamado de retifica¸ c˜ ao e pode ser utilizado para converter corrente alternada (CA ou AC – alternating current. Sua entrada ´ e uma corrente/tens˜ ao que altera a corrente/tens˜ ao de sa´ ıda. Para nossos estudos.

Existem rel´ es mecˆ anicos e de estado s´ olido (SSD ou Solid-state relay. por´ em iremos utilizar um rel´ e mecˆ anico em nosso exemplo. Figura 2. A segunda equa¸ c˜ ao nos evidencia o poder de amplifica¸ c˜ ao de um transistor: dependendo da corrente que colocarmos na base (corrente IB ). por ser mais barato e f´ acil de se encontrar no mercado. por exemplo. No mercado encontramos transistores NPN e PNP com v´ arios encapsulamentos diferentes. podemos utilizar um rel´ e: o Arduino controlar´ a o rel´ e. acender uma lˆ ampada incandescente (que utiliza corrente alternada) atrav´ es do Arduino. que n˜ ao est˜ ao indicadas no diagrama: . Utilizando um rel´ e acionado por 5V. ele permitir´ a maior ou menor corrente no coletor (corrente IC ). do Inglˆ es). Como rel´ es possuem correntes de ativa¸ c˜ ao maiores que as portas digitais do Arduino conseguem suprir. precisamos amplificar a corrente que sai das portas digitais do Arduino para que ela seja capaz de acionar o rel´ e – e isso faremos utilizando um transistor NPN. que ent˜ ao far´ a a conex˜ ao (ou n˜ ao) da lˆ ampada com a tomada.12: Componente 2N3904: transistor NPN com encapsulamento TO-92 2.4. coletor e emissor.1 Utiliza¸ c˜ ao de transistores com rel´ es Rel´ es s˜ ao componentes u ´teis quando precisamos isolar eletronicamente um circuito de controle de um circuito de potˆ encia. Alguns comuns s˜ ao o 2N2904 (NPN) e 2N3906 (PNP).26 ˆ CAP´ ITULO 2. E suas principais equa¸ c˜ oes caracter´ ısticas s˜ ao: IC + IB = IE IC = βIB . um transistor NPN (2N3904) e dois resistores (10Ω para o rel´ e e 470Ω para a base do transistor) podemos utilizar o circuito a seguir para controlar qualquer carga de corrente alternada – basta ligar a carga ` as sa´ ıdas do rel´ e. Se quisermos. FUNDAMENTOS DE ELETRONICA (a) NPN (b) PNP Figura 2. onde β ´ e uma constante (tamb´ em referida como hF E ) caracter´ ıstica do transistor (fator de amplifica¸ c˜ ao).11: S´ ımbolos de transistores BJT em circuito el´ etrico Os transistores possuem trˆ es terminais: base.

Podemos implementar circuitos que fazem essa invers˜ ao de tens˜ ao a partir de 4 transistores funcionando como chave.4.13: Circuito para ligar um rel´ e (controlado por transistor) no Arduino Fica como exerc´ ıcio para o leitor verificar como seria o uso de um transistor PNP.14: Diagrama de uma ponte-H . Por exemplo: os motores de corrente cont´ ınua giram para um lado caso apliquemos tens˜ ao positiva em seu terminal esquerdo e negativa em seu terminal direito.2.4.2 Ponte-H Em alguns projetos precisamos inverter a tens˜ ao de entrada de determinado circuito. para fazˆ e-los girar em sentido contr´ ario. precisamos aplicar tens˜ ao negativa em seu terminal esquerdo e positiva em seu terminal direito. como pode ser visto no diagrama a seguir: Figura 2. Por´ em. 2. Esse tipo de circuito se chama ponte-H por conta da disposi¸ c˜ ao dos transistores com rela¸ c˜ ao ao motor. TRANSISTORES 27 Figura 2.

FUNDAMENTOS DE ELETRONICA Quando fechamos as chaves S1 e S4.28 ˆ CAP´ ITULO 2. O que precisamos fazer ´ e substituir as chaves por transistores.com/chuck/robotics/tutorial/h-bridge/ Para quem n˜ ao quer ter trabalho montando o circuito. o terminal esquerdo do motor recebe tens˜ ao positiva e o terminal direito recebe tens˜ ao negativa. existe a op¸ c˜ ao de comprar um circuito integrado pronto com a ponte-H – uma das op¸ c˜ oes ´ e o L293D.15: Esquema de uma ponte-H com transistores Retirado de http://www. PWM e ponte-H para controle de velocidade Como com PWM conseguimos controlar a quantidade de potˆ encia que ser´ a entregue a um circuito. . o terminal esquerdo do motor recebe tens˜ ao negativa e o terminal direito recebe tens˜ ao positiva. controlar sua velocidade. A seguir temos um circuito bastante completo de ponte-H que utiliza diodos de prote¸ c˜ ao e acopladores opticos para dar mais seguran¸ ´ ca ` a solu¸ c˜ ao como um todo: Figura 2. para ent˜ ao podermos controlar o sentido de rota¸ c˜ ao do motor atrav´ es do Arduino. caso utilizemos PWM como entrada do controle de uma ponte-H. podemos limitar a quantidade de potˆ encia entregue ao motor e. J´ a quando fechamos as chaves S2 e S3.mcmanis. com isso.

Cap´ ıtulo 3 Eletrˆ onica Digital 29 .

1 Introdu¸ c˜ ao Dizemos que um circuito ´ e digital quando suas entradas e sa´ ıdas trabalham com sinais digitais. Geralmente esses circuitos trabalham apenas com dois valores e. Para as fun¸ c˜ oes l´ ogicas acima. teremos toda a informa¸ c˜ ao codificada em bin´ ario – chamamos cada informa¸ c˜ ao bin´ aria de bit (d´ ıgito bin´ ario ou binary digit. O circuito abaixo exemplifica a cria¸ c˜ ao de uma porta do tipo AND: Figura 3. vamos tratar as opera¸ c˜ oes com uma ou duas entradas.1: Porta l´ ogica AND criada a partir de diodos e resistor 3. • XOR: tamb´ em chamade de exclusive or (“ou exclusivo”). • OR: opera¸ c˜ ao que resulta em 1 quando pelo menos uma das entradas ´ e 1 (ou seja. Chama-se tabela-verdade a tabela que lista todas essas possibilidades. E como temos somente dois valores poss´ ıveis de tens˜ ao. na aritm´ etica bin´ aria temos opera¸ c˜ oes que podemos fazer com nossos bits. Para simplificar. apenas uma sa´ ıda.2 Portas l´ ogicas Assim como na Matem´ atica possu´ ımos opera¸ c˜ oes b´ asicas como soma. se nossos circuitos trabalham com tens˜ oes de 0V e 5V. estamos pensando uma camada acima. Quando estamos falando de circuitos digitais.). ou seja. multiplica¸ c˜ ao e divis˜ ao. resulta em “verdadeiro” quando o primeiro ou o segundo bit forem “verdadeiros”. sinais com valores bem definidos.30 ˆ CAP´ ITULO 3. tratar o bit 0 como sinˆ onimo de falso e o bit 1 como sinˆ onimo de verdadeiro. ou seja. Dessa forma. chamamos esses sistemas de digitais bin´ arios. s´ o resulta em “verdadeiro” se somente o primeiro e o segundo bit forem “verdadeiros”.). essa opera¸ c˜ ao s´ o resulta em bit 1 quando somente um dos bits de entrada ´ e 1. temos as seguintes opera¸ c˜ oes: • AND: opera¸ c˜ ao que resulta em bit 1 somente quando os dois bits de entrada s˜ ao 1 (ou seja. quando temos duas entradas temos um total de 4 poss´ ıveis combina¸ c˜ oes de umero de entradas ) e as seguintes tabelas: entradas diferentes (o n´ umero de combina¸ c˜ oes bin´ arias ´ e sempre 2n´ . Dessa forma. 3.1 Tabela-verdade Para um n´ umero finito de entradas podemos aplicar as opera¸ c˜ oes l´ ogicas em todos os poss´ ıveis valores dessa entrada e obter todos os poss´ ıveis resultados da opera¸ c˜ ao/fun¸ c˜ ao l´ ogica. por isso. ELETRONICA DIGITAL 3. dizemos que 0V equivale ao bit 0 e 5V equivale ao bit 1 – agora passamos a falar de bits (informa¸ c˜ ao) em vez de tens˜ oes. • NOT: opera¸ c˜ ao que resulta na invers˜ ao do bit de entrada. subtra¸ c˜ ao.2. estamos falando de transporte de informa¸ c˜ ao. do Inglˆ es) e os representamos por 0 e 1.

2 Representa¸ c˜ ao das opera¸ co ˜es As opera¸ c˜ oes l´ ogicas citadas acima podem ser representadas em circuitos pelos seguintes s´ ımbolos: (a) NOT (b) AND (c) NAND (d) OR (e) NOR (f) XOR (g) XNOR Figura 3.´ 3.4: Diagrama da fun¸ c˜ ao composta XOR . PORTAS LOGICAS 31 A 0 0 1 1 B 0 1 0 1 A AND B 0 0 0 1 A 0 0 1 1 B 0 1 0 1 A OR B 0 1 1 1 A 0 1 NOT A 1 0 A 0 0 1 1 B 0 1 0 1 A XOR B 0 1 1 0 (c) Opera¸ ca ˜o NOT (a) Opera¸ c˜ ao AND (b) Opera¸ ca ˜o OR (d) Opera¸ c˜ ao XOR Figura 3.3: S´ ımbolos das opera¸ c˜ oes l´ ogicas Al´ em disso. NOR e XNOR. basta negar a sa´ ıda da tabela verdade das outras opera¸ c˜ oes (AND. por exemplo. podem ser escritas por extenso: Opera¸ c˜ ao NOT A A AND B A NAND B A OR B A NOR B A XOR B A XNOR B Representa¸ c˜ ao A A+B A+B A·B A·B A⊕B A⊕B 3. Para saber a tabela-verdade dessas.2. como NAND. 3.2. temos as nega¸ c˜ oes nas mesmas. pode ser obtida atrav´ es da composi¸ c˜ ao das fun¸ c˜ oes NOT. respectivamente).2.3 Fun¸ c˜ oes l´ ogicas compostas Assim como na Matem´ atica. OR e XOR. A fun¸ c˜ ao XOR. AND e OR: A⊕B =A·B+A·B ou Figura 3. podemos fazer composi¸ c˜ oes das fun¸ c˜ oes l´ ogicas b´ asicas para obter novas fun¸ c˜ oes (compostas).2: Tabelas-verdade das opera¸ c˜ oes l´ ogicas b´ asicas Al´ em das opera¸ c˜ oes b´ asicas.

que podem evoluir para mem´ orias e fazer parte do circuito de um microprocessador. dentre outros. ELETRONICA DIGITAL A partir de fun¸ c˜ oes l´ ogicas compostas e t´ ecnicas como realimenta¸ c˜ ao conseguimos criar dispositivos mais complexos como latches. . coders/decoders.32 ˆ CAP´ ITULO 3. por exemplo: com alguns flip-flops conseguimos criar registradores. flip-flops. mux/demux. Esses dispositivos s˜ ao a base para criar circuitos l´ ogicos de alto n´ ıvel.

Cap´ ıtulo 4 Fazendo barulho com o Arduino 33 .

Um vetor nada mais ´ e que um local onde armazenamos v´ arias vari´ aveis de mesmo tipo.34 CAP´ ITULO 4.wikipedia. adicionando circuitos extras (para filtros e distor¸ c˜ oes) e um pouco de criatividade. respectivamente: pino (precisa ser um pino que tenha suporte a PWM). notas[i]. void setup() { pinMode(BUZZER. delay(1000). 1000). A fun¸ c˜ ao que faz esse trabalho ´ e chamada tone. conseguimos criar sons legais para nossos projetos. A fun¸ c˜ ao tone recebe trˆ es parˆ ametros. } Al´ em do la¸ co for.org/wiki/S´ erie harmˆ onica (m´ usica) . 785. No exemplo acima. 881. 660. para acessar os elementos utilizamos i. o Arduino possui uma fun¸ c˜ ao pronta para criar uma onda quadrada na frequˆ encia e no tempo desejados. onde n ´ e o n´ umero total de elementos. 1 Saiba mais em http://pt. frequˆ encia da nota e dura¸ c˜ ao do som em milissegundos. utilizamos tamb´ em um vetor de inteiros chamado notas. Os segredos do c´ odigo acima s˜ ao: • Saber a frequˆ encia das notas1 e • Saber utilizar a fun¸ c˜ ao tone. } delay(1000). 989 }. Apesar de serem notas simples e a onda ser quadrada. 588. Vamos criar um projeto-exemplo ligando um buzzer – componente que reproduz sons de acordo com as varia¸ c˜ oes de tens˜ ao em seus terminais – para tocar nosso som da seguinte forma: Figura 4. Os vetores s˜ ao indexados e para acessar cada item guardado neles utilizamos ´ ındices que variam de 0 a n − 1. } void loop() { for (int i = 0. FAZENDO BARULHO COM O ARDUINO Para quem gosta de fazer m´ usica. OUTPUT). por isso. utilizamos a vari´ avel i para percorrer o vetor e. i++) { tone(BUZZER. 699.1: Circuito com buzzer Utilizaremos o seguinte c´ odigo: #define BUZZER 9 int notas[] = { 524. i < 7.

Cap´ ıtulo 5 Armazenando na EEPROM 35 .

EEPROM. a EEPROM pode chegar at´ e 4KiB . O ATMega328. para nosso exemplo. ler um por um e configurar o valor lido como sa´ ıda PWM da porta 11 (na fun¸ c˜ ao loop). por exemplo). no caso do Arduino Duemilanove com ATMega328) e o byte que escreveremos nesse local. vamos ligar um LED na porta 11 e utilizar o seguinte c´ odigo: #include <EEPROM. al´ em do c´ odigo que digitamos. } A diretiva #include diz ao compilador que queremos incluir a biblioteca EEPROM. microcontrolador presente no Arduino Duemilanove.h – isso quer dizer que. O exemplo nada mais faz que escrever 16 bytes na EEPROM (na fun¸ c˜ ao setup). Por´ em. Para utilizar a EEPROM n˜ ao precisamos de circuitos adicionais: precisamos apenas utilizar a biblioteca EEPROM. i++) { EEPROM.read recebe apenas um parˆ ametro (o endere¸ co de onde ela far´ a a leitura) e nos retorna o valor lido na mem´ oria (um byte ). } } void loop() { for (int i = 0. .read(i). } delay(1000). delay(50).write.36 CAP´ ITULO 5. recebe dois parˆ ametros: o endere¸ co onde ela vai escrever (um valor entre 0 e 1023. j´ a a fun¸ c˜ ao EEPROM. como o Mega (que usa ATMega1280 ou ATMega2560. i < 16. i++) { byte leitura = EEPROM. dependendo do modelo).h. i < 16. Ter o circuito EEPROM integrado significa que nosso software pode armazenar 1KiB de dados que n˜ ao ser˜ ao perdidos (mesmo que desliguemos o Arduino da fonte de alimenta¸ c˜ ao) – funciona como se fosse um micro-pendrive. ou seja. que n˜ ao se apaga ao retirarmos energia de seu circuito (o que n˜ ao ´ e verdade para as mem´ orias do tipo RAM. do Inglˆ es) ´ e um tipo de mem´ oria n˜ ao vol´ atil. A fun¸ c˜ ao de escrita.write(i. i * i). possui um circuito EEPROM integrado de 1024 bytes (ou 1KiB ) – em outras vers˜ oes do Arduino. utilizaremos um c´ odigo j´ a criado pela equipe do Arduino para facilitar a utiliza¸ c˜ ao da EEPROM.h> #define LED 11 void setup() { for (int i = 0. leitura). analogWrite(LED. ARMAZENANDO NA EEPROM EEPROM (Electrically Erasable Programmable Read-Only Memory.

Sign up to vote on this title
UsefulNot useful