FUNDAMENTOS DE PROGRAMAÇÃO E DE ELETRÔNICA COM ARDUINO

Documentos relacionados
Arduino. Introdução aos Componentes Básicos. Leonardo Mauro P. Moraes. Universidade Federal de Mato Grosso do Sul - UFMS.

Oficina de Programação utilizando a plataforma Arduino

MINICURSO ARDUINO BÁSICO

Caderno de Atividades 1

Podem ser substituídos pelo módulo P7-Sensor de Luminosidade da GBK Robotics.

- Clique aqui e veja o video deste curso - Clique aqui para ver as imagens deste curso

Missão: Arduino. 3 de Março. Organização

Conhecendo o ARDUINO LEGENDA

Projeto No. 2 Potenciômetro

Programação em Linguagem C

Curso: Tecnologias educacionais de baixo custo. Conector Ciência:

Oficina de Programação utilizando a plataforma Arduino

Apostila de introdução ao Tinkercad (antigo Circuits.io)

Introdução do Arduino para aquisição de dados e controle de instrumentos

Oficina de Programação utilizando a plataforma Arduino

SEMÁFORO, SUPER MÁQUINA

Disciplina: Laboratório de Fis26

Estrutura de Condição. Professor Pedro

Projeto 01. Adriano Joaquim de Oliveira Cruz Instituto de Matemática UFRJ 2015 Adriano Cruz. 30 de agosto de 2015

Curso de Arduino. Quais seus principais componentes?

- Trabalho Prático de Algoritmos e Programação usando Robô Arduino -

Usando 123D: Led e Protoboard

Introdução ao kit de desenvolvimento Arduino. Mini Projetos

Linguagem de Programação. Linguagem C com Arduino

A protoboard ou Matriz de contatos é utilizada para fazer montagens provisórias e/ou teste de projetos. É constituída por uma base plástica, contendo

Programação em Linguagem C

O aspecto do módulo de desenvolvimento Arduino Uno é mostrado na Figura 1 abaixo.

ROBÓTICA 1 INTRODUÇÃO A PROGRAMAÇÃO NO ARDUINO

Arduino. Prof. Maurício Dias

Para começar, iremos visualizar todas as informações no monitor serial. Portanto, a primeira montagem que devemos fazer na protoboard é a seguinte:

O ARDUINO. Plataforma de prototipagem eletrônica; Open Source; Formada por duas partes básicas: hardware e software.

Oficina de Introdução ao Arduino

1. Primeiros Passos no software Modelix

Arduino. Gilmar Aquino

Curso de robótica 2. Novos conceitos de programação

Aula 1 Apresentação e Conceitos Iniciais. Wellington Cássio Faria fb.com/wellingtoncf

Guia de Práticas Elevador Didático Programável

OFICINA Uso da plataforma Arduino no Ensino de Ciências

Projeto No. 15 Sensor Óptico Reflexivo

Scaling Up Inclusion: Robotics, a STEM focused Project. Centro de Formação de Associação de Escolas Paços de Ferreira, Paredes e Penafiel

Acendendo o Led com Arduino.

KIT INICIANTE V7 PARA ARDUINO

INTRODUÇÃO A PLATAFORMA ARDUINO. TÁSSIO JOSÉ GONÇALVES GOMES

PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ CENTRO DE CIÊNCIAS EXATAS E DE TECNOLOGIA ENGENHARIA DE COMPUTAÇÃO PROJETO SCATMAN S DIMMER

Tutorial Proteus 02. Como simular o Arduino no Proteus ISIS utilizando a biblioteca "Emulater" por João Vitor

ACENDENDO AS LUZES. Capitulo 2 - Aula 1 Livro: Arduino básico Tutor: Wivissom Fayvre

Depois de configurada nossa comunicação serial podemos enviar vários comandos para comunicação entre o computador e o Arduino:

Atividade de laboratório 003. Prof: Carlos Eduardo de Brito Novaes 29 de abril de Alunos RA Nome Curso Semestre

Atividade de laboratório 004. Prof: Carlos Eduardo de Brito Novaes 6 de maio de Alunos RA Nome Curso Semestre

Projeto No. 17 Infravermelho

Introdução à lógica de programação utilizando Scratch Aula 1

Programação do Arduino. Parte 1. IDE Wiring

Física Computacional. Prof. Luiz Claudio F. de Souza Luizclaudiofs.blogspot.com

INTRODUÇÃO AO ARDUINO DUE, CANAL DIGITAL, FUNÇÃO DELAY

Minicurso de Arduino

Material reorganizado e adaptado por: Suéllen Rodolfo Martinelli. Disponibilizado em:

- Tarefas Práticas de Programação usando Arduino - Imagem do Robô com Legendas

ARDUINO BÁSICO E T A P A 1 O QUE É ARDUINO? Prof. Amadeu Zanon Neto

MANUALDEGUSTAÇÃO ARDUINO KIT INICIANTE V4.0

O Arduíno. O Arduíno UNO

Arduino. Conectores, Fonte, USB, LEDs. Compilador, Bibliotecas, Editor, Burner

ASPECTOS TEÓRICOS DOS EXPERIMENTOS

Semáforo de 3 cores com interatividade (para carros e pedestres)

Mundo Arduino: Vamos começar a programar?

1. Crie um novo projeto Scratch. Apague o gato clicando com o botão direito e em apagar.

Arduino - Primeiros Passos

Programação Básica em Arduino Aula 2

Arduino como ferramenta de aquisição de Dados

O que você pode fazer com o Arduino

Arduino: primeiros passos para aprender e configurar.

Introdução ao Arduino ESCOLA DE ARTES VISUAIS DO PARQUE LAGE. Núcleo de Arte e Tecnologia. julio lucio martin. Aula 01

BIBLIOTECA DIGITAL MINHA BIBLIOTECA

Introdução ao Arduino

Aula 2: Ferramentas para aulas de Robótica Educacional. Roben Castagna Lunardi

introdução Olá, Após alimentar você deve enviar comandos AT para verificar que o modulo está funcionando e comunicando via serial.

Kit controle remoto IR acionando 3 Led com Arduino

Arduino. Conectores, Fonte, USB, LEDs. Compilador, Bibliotecas, Editor, Burner

Ficha 3. Exercícios de preparação da actividade 3

Alarma Aê Projeto de alarme com envio de alerta para aplicativo para Smartphone.

Comunicação Serial 1

SPYDER. um ambiente de desenvolvimento integrado (IDE*) para Python. Prof. Carlos Hitoshi Morimoto DCC IME USP Março, 2016

Estrutura Básica da Linguagem Arduino

Introdução ao kit de desenvolvimento Arduino. Relatórios

Tutorial. Acessando e utilizando o Pixton: da criação até o envio da História em Quadrinhos

Biblioteca Digital Minha Biblioteca

Manual de aventuras com scratch

ARDUINO KIT INICIANTE V3.0

Introdução ao Arduino ESCOLA DE ARTES VISUAIS DO PARQUE LAGE. Núcleo de Arte e Tecnologia. julio lucio martin. Aula 07

Oficina de Programação utilizando a plataforma Arduino

Scaling Up Inclusion: Robotics, a STEM focused Project. Centro de Formação de Associação de Escolas Paços de Ferreira, Paredes e Penafiel

MOBILIDADE SUSTENTÁVEL. Luís Martins Duarte Abreu

Antes da aula. Para mudar o idioma, no canto superior esquerdo da tela, clique no botão em forma de engrenagem. Escolha Language.

Roteiro da oficina. 1. Abrir o Scratch Offline Clicar no ícone Scratch 2 na sua área de trabalho. 2. Mudar o idioma para Português.

Guia do Instrutor Jogo da Bruxa

Trabalhando com LEDs. Professor Pedro

Transcrição:

FUNDAMENTOS DE PROGRAMAÇÃO E DE ELETRÔNICA COM ARDUINO UMA ABORDAGEM PRÁTICA VERSÃO 1.1 Nicollas Mocelin Sdroievski, Bernardo Alves Villarinho Lima e Raphael Jardim Lopes Em parceria com o Grupo PET-CoCE

c 2015 Nicollas Mocelin Sdroievski, Bernardo Alves Villarinho Lima e Raphael Jardim Lopes O conteúdo desta apostila está licenciado sob a Creative Commons - Atribuição-CompartilhaIgual 4.0 Internacional. A logomarca na Capa PET-CoCE arduino está licenciada sob a Creative Commons license CC-BY-NC- SA 3.0, conforme logomarca original em http://arduino.cc/en/trademark/communitylogo Os diagramas de projeto foram construídos com o software Fritzing c, e estão licenciados sob a Creative Commons - Atribuição-CompartilhaIgual 4.0 Internacional. As listagens de código fonte em wiring para o arduino e processing fazem uso do pacote listings (licenciado sob LaTeX Project Public License 1.3 ou posterior) e definições de cores para este pacote elaboradas por Merkle, L. E.. Estas foram agregadas a este documento e estão licenciadas em Creative Commons - Atribuição-Compartilha Igual 4.0 Internacional. As capturas de tela do aplicativo 123d Autodesk R são reproduzidas com autorização da Autodesk R ( Autodesk screen shots reprinted with the permission of Autodesk, Inc. ) e se reproduzidas em futuras versões devem aderir as demais diretivas listadas em http://www.autodesk.com/company/legal-notices-trademarks/ copyright-information/requesting-copyright-permissions

Agradecimentos aos professores Luiz Ernesto Merkle e Marília Abrahão Amaral pelo apoio e supervisão e ao MEC-SeSU por possibilitar e financiar o programa PET-CoCE.

C O N T E Ú D O 1 introdução 7 1.1 O Arduino 7 1.2 Como funciona esse material? 7 2 projeto 1 - led pisca pisca 9 2.1 Código 10 2.2 Exercícios 10 3 simulador 11 3.1 Introdução 11 3.2 Para Continuar ou Copiar um Projeto 16 4 projeto 2 - led pisca pisca com delay decremental 17 4.1 Código 18 4.2 Exercícios 18 5 projeto 3 - luz pulsante (incremental) 19 5.1 Código 20 5.2 Exercícios 20 6 projeto 4 - meu primeiro botão 21 6.1 Código 22 6.2 Exercícios 22 7 projeto 5 - led controlado por potenciômetro 25 7.1 Código 26 7.2 Exercícios 26 8 projeto 6 - led inteligente 27 8.1 Código 28 8.2 Exercícios 28 9 projeto 7 - calibrando o led inteligente 29 9.1 Código 30 9.2 Exercícios 30 10 projeto 8 - leds controlados pelo teclado 31 10.1 Código 32 10.2 Exercícios 32 11 exercícios resolvidos 35 11.1 Exercício 1.3 35 11.1.1 Código 36 11.2 Exercício 2.2 37 11.2.1 Código 38 11.3 Exercício 3.1 39 11.3.1 Código 39 11.4 Exercício 4.2 40 11.4.1 Código 41 11.5 Exercício 5.3 43 5

CONTEÚDO 11.5.1 Código 44 11.6 Exercício 6.2 45 11.6.1 Código 46 11.7 Exercício 7.2 48 11.7.1 Código 49 11.8 Exercício 8.2 50 12 e agora? pra onde vou? 51 6

1 I N T R O D U Ç Ã O Esta apostila, desenvolvida por alunos da disciplina de Computação e Sociedade do segundo semestre de 2014, em conjunto com o grupo PET-CoCE, tem o objetivo de introduzir conceitos de programação e eletrônica básica através da plataforma livre Arduino. O conteúdo desse material foi desenvolvido tendo em vista os alunos do ensino médio regular, que ainda não tiveram ou tiveram pouco contato com eletrônica e programação, através da Oficina de Arduino ministrada pelo grupo PET-CoCE, porém o material pode ser utilizado em qualquer curso introdutório que aborde esses conteúdos, levando em consideração o conhecimento prévio do grupo. 1.1 o arduino O Arduino é uma plataforma eletrônica de código e projeto abertos para prototipação, seu site oficial é o (http://arduino.cc/). Foi desenvolvido pensando nos artistas, designers e pessoas que possuem interesse em criar criar projetos que propiciam controle e interação. O Arduino traz consigo uma filosofia de aprendizado muito prática, na qual a frase "Aprender Fazendo" é muito importante. Por esse motivo, esse material possui vários projetos para reproduzir e por essa filosofia em prática. Nos diagramas de projeto o modelo de Arduino utilizado é o Arduino Uno, um dos modelos mais simples e acessíveis do Arduino, porém pode ser utilizado qualquer outro modelo do Arduino que não haverão grandes diferenças no desenvolvimento dos projetos. 1.2 como funciona esse material? Esse material possui três partes principais: Projetos: Atualmente há 8 projetos nesse material, cada projeto possui listagem de componentes necessários, diagrama de montagem física e código fonte. Os projetos seguem uma ordem de complexidade, e cada projeto mostra o funcionamento, de forma prática, de um novo conceito de programação ou eletrônica. É recomendado, se estiver usando essa apostila em algum curso, dar uma pe- 7

introdução Figura 1: Arduino Uno, por Arduino c, licenciada sob Creative Commons Attribution ShareAlike 3.0 quena introdução sobre os assuntos abordados em cada projeto para que os alunos possam entender melhor o funcionamento desses. Simulador: Imediatamente após o primeiro projeto há um passo a passo de utilização de um simulador online de Arduino, o que permite que os projetos e exercícios sejam realizados em casa ou sem possuir os componentes necessários. Mesmo assim é fortemente recomendado que se utilize os componentes de verdade sempre que possível ao seguir o material. Exercícios: No fim de cada projeto há 3 exercícios, esses exercícios tem o objetivo de fixar os conteúdos abordados a cada novo projeto, e propiciar desafios interessantes a quem estiver seguindo o material. Pelo menos um exercício de cada projeto estará marcado com um asterisco ( ) para indicar que esse exercício está resolvido no último capítulo do material, e alguns estarão marcados com uma estrela ( ) para indicar que são desafios, e podem necessitar de informações presentes em outras fontes. Há ainda, no fim do material, dicas para saber onde buscar mais informações a respeito de programação e eletrônica, para complementar o curso ou para ter uma direção assim que o tiver terminado. 8

2 P R O J E T O 1 - L E D P I S C A P I S C A Componentes necessários Protoboard LED colorido Resistor de 220Ω ou valor aproximado Jumpers Figura 2: Diagrama do Projeto 1 9

projeto 1 - led pisca pisca 2.1 código int ledpin = 9; Código Fonte 2.1: Projeto 1 void setup() { / inicializa o terminal digital como OUTPUT. / pinmode(ledpin, OUTPUT); void loop() { digitalwrite(ledpin, HIGH); / LED ligado / delay(1000); / intervalo de um segundo / digitalwrite(ledpin, LOW); / LED desligado / delay(1000); / intervalo de um segundo / 2.2 exercícios Exercício 1.1 Nesse exercício iremos explorar o funcionamento do Projeto 1 e tentar entender melhor como as variáveis funcionam. a) Mude os valores passados para o comando "delay"e verifique o funcionamento do programa com essas mudanças. b) Crie uma nova variável, seu nome pode ser "intervalo", guarde um valor nessa varíavel e a utilize nas duas ocorrências do comando "delay", mude o valor dessa variável e verifique o funcionamento do programa. Exercício 1.2 Você consegue alterar o código e a montagem do projeto para que ele funcione com 2 Leds? Faça com que os Leds pisquem juntos e alternadamente. Exercício 1.3 ( ) Agora que você entendeu melhor o funcionamento do Arduino, tente fazer um projeto com 3 Leds que simule o funcionamento de um semáforo de trânsito com as cores verde, amarelo e vermelho. 10

3 S I M U L A D O R 3.1 introdução Para estudar os conteúdos das aulas em casa e fazer projetos da oficina sem precisar ter o Arduino e os componentes, é possível utilizar um simulador online. Nesse capítulo, será descrito passo a passo como utilizar o simulador Autodesk 123D Circuits R : Passo 1- Acesse a página http://123d.circuits.io/ no seu navegador de internet; o simulador que recomendamos é online, não sendo necessário download. Clique no botão "Get started designing electronics online!". Figura 3: Passo 1 - Acessar 123d.curcuits.io 11

simulador Passo 2- Registre-se com sua data de nascimento, país, endereço de e-mail e senha. É possível também se inscrever com o facebook. Figura 4: Passo 2 - Cadastrar-se no 123D Circuits Passo 3- Para realizar projetos na protoboard utilizando o Arduino, como na oficina, clique em "New Breadboard Circuit". Figura 5: Passo 3 - Escolha New Breadboard Circuit Passo 4- Após iniciar o projeto, aparecerá a protoboard na página de projeto, mas não haverá nenhum outro componente, nem o Arduino, para colocar um Arduino no projeto, clique em Components. 12

3.1 introdução Figura 6: Passo 4 - Opção Components Passo 5- Encontre o Arduino Uno dentre os componentes, e arraste-o para perto da board. Figura 7: Passo 4 e 5- Adicionando o Arduino ao Projeto 13

simulador Passo 6- É possível também arrastar outros componentes para o projeto, como leds e resistores, coloque um resistor e um led como no projeto LED pisca-pisca. Figura 8: Passo 6 - Adicionando outros componentes ao projeto Passo 7- Para inserir os jumpers, clique com o botão esquerdo no furo ou terminal aonde você quer que uma das extremidades fique, depois clique com o botão esquerdo aonde você quer que a outra fique. Figura 9: Passo 7 - Adicionando jumpers ao projeto Passo 8- Agora que temos o circuito completo, clique em Code Editor, ao lado de Components. Aparecerá um código de exemplo, faça as alterações necessárias no código para que ele funcione com o circuito que você fez. 14

3.1 introdução Figura 10: Passo 8 - Programando com o editor de código (Opção Code Editor) Passo 9- Clique em Upload & Run, se não há problemas com o código e o circuito, o LED acenderá. Figura 11: Passo 9 - Upload and Run 15

simulador 3.2 para continuar ou copiar um projeto Os projetos feitos na ferramenta são salvos automaticamente a medida que você trabalha neles, para carregá-los, clique no seu ícone de usuário no canto superior direito da página. Para continuar o seu projeto, clique na opção Edit circuit ao lado do nome do projeto que você quer continuar. Para criar uma cópia de um projeto seu ou de outra pessoa, para realizar alterações sem mexer no projeto inicial, clique na opção Fork ao lado do nome do projeto que você quer copiar. Figura 12: Clique no ícone de usuário Figura 13: Selecione Edit circuit para editar e Fork para criar uma cópia 16

4 P R O J E T O 2 - L E D P I S C A P I S C A C O M D E L AY D E C R E M E N TA L Componentes necessários Protoboard LED colorido Resistor de 220Ω ou valor aproximado Jumpers Figura 14: Diagrama do Projeto 2 17

projeto 2 - led pisca pisca com delay decremental 4.1 código Código Fonte 4.1: Projeto 2 int ledpin = 9; int intervalo = 2000; / Variavel para controlar o intervalo / void setup() { pinmode(ledpin, OUTPUT); void loop() { if (intervalo == 0){ / Quando o intervalo ficar muito pequeno (valor zero) ele volta a ser 2000 / intervalo = 2000; digitalwrite(ledpin, HIGH); / LED ligado / delay(intervalo); / Usa a variavel intervalo no comando delay! / digitalwrite(ledpin, LOW); / LED desligado / delay(intervalo); intervalo = intervalo 200; / Modifica o valor de intervalo, reduzindo seu valor em 200 / 4.2 exercícios Exercício 2.1- Que tal aprender a usar um componente diferente? Experimente trocar o LED do projeto por um buzzer, verifique o funcionamento do projeto com o novo componente. Exercício 2.2- ( ) Agora que você tem conhecimento da estrutura condicional "ifelse", que tal modificar o código do Exercício 1.2 para utilizar essa estrutura na troca dos LEDs? Dica: mantenha duas variáveis com o estado dos LEDs (HIGH ou LOW) e verifique seu valor a cada passagem pelo loop(). Exercício 2.3- Você consegue alterar o código e a montagem do projeto para que o intervalo cresça gradativamente (de 200 em 200 ms) assim como ele diminui? Dica: mantenha uma variável chamada incremento, que inicia com o valor (- 200), e a utilize para modificar o valor de intervalo. Quando chegar em um dos extremos (0 e 2000), inverta seu valor. 18

5 P R O J E T O 3 - L U Z P U L S A N T E ( I N C R E M E N TA L ) Componentes necessários Protoboard LED colorido Resistor de 220Ω ou valor aproximado Jumpers Figura 15: Diagrama do Projeto 3 19

projeto 3 - luz pulsante (incremental) 5.1 código Código Fonte 5.1: Projeto 3 int ledpin = 9; / Atencao, o pino deve ter um simbolo de "~" proximo a seu numero, ou a saida PWM nao funcionara / int intensidade = 0; / Variavel que controla a intensidade do led / void setup() { pinmode(ledpin, OUTPUT); void loop() { if (intensidade == 255){ / Intensidade chegou ao valor maximo / intensidade = 0; analogwrite(ledpin, intensidade); / Aciona o led com o valor da variavel intensidade / delay(15); intensidade = intensidade + 1; / Modifica o valor de intensidade, aumentando seu valor em 1, poderia ser escrito como "intensidade++;" / 5.2 exercícios Exercício 3.1- ( ) Modifique o código do projeto para que o LED no pino de saída 9 pulse de forma crescente e decrescente, ou seja, aumente sua intensidade até que atinja o valor máximo (255) e então diminua sua intensidade até que atinja o valor mínimo (0), repetindo o processo indefinidamente. Dica para esse exercício: utilize uma variável para controlar a intensidade, inicie com essa variável no valor "0"e modifique seu valor a cada passagem pelo "loop". Possua também uma variável que controla o incremento, e inverta seu valor quando a intensidade chegar nos extremos (0 e 255). Exercício 3.2- Troque o LED do projeto 3 por um buzzer. Agora que você sabe utilizar a saída analógica, tente criar uma melodia variando valores de saída analógica e de delay com o buzzer. Exercício 3.3- ( ) Você sabia que o Arduino não realiza saída analógica "de verdade"? Pesquise e entenda como funciona a saída analógica através de PWM. 20

6 P R O J E T O 4 - M E U P R I M E I R O B O TÃ O Componentes necessários Protoboard 2 LEDs coloridos 4 Resistores de 220Ω ou valor aproximado Chave tátil Jumpers Figura 16: Diagrama do Projeto 4 21

projeto 4 - meu primeiro botão 6.1 código Código Fonte 6.1: Projeto 4 int ledverde = 9; / pino do LED / int ledvermelho = 10; int estadoverde = HIGH; int estadovermelho = LOW; int pinobotao = 2; / pino de leitura / int apertou; / variavel para guardar o valor de leitura / void setup(){ pinmode(ledverde, OUTPUT); pinmode(ledvermelho, OUTPUT); pinmode(pinobotao, INPUT); / Atencao, esse eh INPUT! / digitalwrite(ledverde, estadoverde); / Ja inicia o ledverde como HIGH, ou ligado / digitalwrite(ledvermelho, estadovermelho); / Ja inicia o ledvermelho como LOW, ou desligado / void loop(){ apertou = digitalread(pinobotao); if (apertou == HIGH){ if (estadoverde == HIGH) { estadoverde = LOW; estadovermelho = HIGH; else { estadoverde = HIGH; estadovermelho = LOW; digitalwrite(ledverde, estadoverde); digitalwrite(ledvermelho, estadovermelho); delay(500); 6.2 exercícios Exercício 4.1- Modifique o projeto para que ele funcione com um LED RGB, e cada acionamento do botão troca a cor do LED (entre Vermelho, Verde e Azul). Dica: O LED RGB funciona como três LEDs separados, então lique cada uma de suas "pernas"curtas em um pino de saída diferente. Não esqueça que precisará de mais "ifs"para fazer a troca entre os 3 LEDs. 22

6.2 exercícios Exercício 4.2- ( )( ) Agora que sabemos como utilizar a chave tátil, podemos fazer um semáforo mais inteligente. Faça um semáforo de pedestre que funciona em conjunto com um semáforo de carros, quando o botão é apertado, aguarde um certo tempo e realize a transição do semáforo de carros para vermelho (passando pelo amarelo) e a do semáforo de pedestres para verde, mas não esqueça de piscar o semáforo de pedestres, fechá-lo e então abrir novamente o semáforo dos carros. Exercício 4.3- A proposta agora é aumentar o projeto do exercício 3.2, fazendo uma campainha que toque a música que você inventou nesse exercício quando pressionada. Se você ainda não fez esse exercício aproveite pra inventar sua música agora. 23

7 P R O J E T O 5 - L E D C O N T R O L A D O P O R P O T E N C I Ô M E T R O Componentes necessários Protoboard LED colorido Resistor de 220Ω ou valor aproximado Potenciômetro de 20kΩ ou valor aproximado Jumpers Figura 17: Diagrama do Projeto 3 25

projeto 5 - led controlado por potenciômetro 7.1 código int ledpin = 9; Código Fonte 7.1: Projeto 5 void setup(){ pinmode(ledpin, OUTPUT); void loop(){ int leitura = analogread(a5); / Note que nao foi preciso inicializar o pino A5 como leitura / analogwrite(ledpin, 255 leitura/4); / A leitura eh um valor entre 0 e 1023, dividindo por 4 temos um valor entre 0 e 255 / 7.2 exercícios Exercício 5.1- Modifique o projeto, adicionando um led que deverá se comportar de forma contrária ao primeiro, ou seja, conforme o primeiro led ficar mais luminoso o segundo deve ficar menos, e vice-versa. Exercício 5.2- Agora vamos modificar o projeto do Exercício 3.1, adicionando um potenciômetro ao projeto e fazendo com que esse controle a velocidade na qual o led pulsa. Dica: divida o valor da leitura por algum número inteiro antes de passá-lo para o comando delay, senão o intervalo pode ficar muito grande. Exercício 5.3- ( )( ) Nesse exercício faremos uma brincadeira de quente-frio, construindo um projeto com um potenciômetro e um LED ou buzzer, que deverá piscar/apitar mais rapidamente conforme a medição do potenciômetro se aproxima da metade de seu valor máximo (512). Dica: pesquise sobre ou pergunte ao seu instrutor sobre o comando abs() do arduino. 26

8 P R O J E T O 6 - L E D I N T E L I G E N T E Componentes necessários Protoboard LED colorido Resistor de 220Ω ou valor aproximado 2 Resistores de 10kΩ ou valor aproximado LDR Jumpers Figura 18: Diagrama do Projeto 6 27

projeto 6 - led inteligente 8.1 código int ledpin = 9; Código Fonte 8.1: Projeto 6 void setup(){ pinmode(ledpin, OUTPUT); void loop(){ int leitura = analogread(a5); / Note que nao foi preciso inicializar o pino A5 como leitura / if (leitura < 500) { / A leitura se aproxima de 0 quando a luminosidade eh baixa / digitalwrite(ledpin, HIGH); else { digitalwrite(ledpin, LOW); 8.2 exercícios Exercício 6.1- Experimente trocar no Projeto 5 o potenciômetro utilizado por um LDR e então verifique e tente explicar o funcionamento do projeto com essa modificação. Exercício 6.2- ( )( ) Nesse exercício iremos construir uma Jukebox! Use um potenciômetro para trocar entre as músicas (podem ser três), e três LEDs para indicar qual música está ativa. Tenha um botão no projeto que quando apertado toca a música ativa. Dica: Depois que fizer o projeto, tente trocar o potenciômetro por um LDR, e você terá uma jukebox que troca de música de acordo com a iluminação ambiente. Exercício 6.3- ( ) Agora que você entende melhor o funcionamento da entrada analógica do Arduino, pesquise como funcionam os LEDs emissores e receptores de infravermelho, e construa um pequeno alarme detector de presença, que emite um som quando o feixe infravermelho for interrompido. 28

9 P R O J E T O 7 - C A L I B R A N D O O L E D I N T E L I G E N T E Componentes necessários Protoboard LED colorido Resistor de 220Ω ou valor aproximado 2 Resistores de 10kΩ ou valor aproximado LDR Jumpers Figura 19: Diagrama do Projeto 7 29

projeto 7 - calibrando o led inteligente 9.1 código Código Fonte 9.1: Projeto 7 / Nesse projeto utilizaremos a comunicacao serial para ver na tela do computador os valores lidos pelo LDR do projeto, ajuste o valor do bloco if para que o LED acenda com diferentes niveis de luminosidade / int ledpin = 9; void setup(){ pinmode(ledpin, OUTPUT); Serial.begin(9600); / Inicia a comunicacao serial com o computador / void loop(){ int leitura = analogread(a5); / Note que nao foi preciso inicializar o pino A5 como leitura / Serial.println(leitura); if (leitura < 500) { / Modifique o valor 500 para os que desejar / digitalwrite(ledpin, HIGH); else { digitalwrite(ledpin, LOW); 9.2 exercícios Exercício 7.1- ( ) Pesquise sobre os comandos Serial.print() e Serial.println(), para aprender a utilizar a comunicação serial para imprimir texto na tela do computador, Experimente então mudar o código do projeto para que ele seja mais amigável, e escreva: A leitura atual é de x. Exercício 7.2- ( ) Faça um projeto que possui uma chave tátil, a ideia desse projeto é testar o tempo de reação de quem estiver interagindo com ele. Avise, através do Serial.println(), o momento que o botão deve ser apertado e conte quanto tempo passa entre o aviso e o aperto do botão, mostrando esse tempo na tela do computador. Dica: Pesquise ou pergunte a seu instrutor sobre o funcionamento do comando millis() do Arduino. Exercício 7.3- Faça um projeto que possua 3 chaves táteis ligadas em terminais digitais diferentes (lembre de não usar os terminais 0 e 1 se estiver utilizando comunicação serial). A ideia é fazer uma pergunta e dar 3 alternativas distintas, representadas pelas 3 chaves táteis, e verificar se quem apertou o botão acertou ou não a resposta. 30

10 P R O J E T O 8 - L E D S C O N T R O L A D O S P E L O T E C L A D O Componentes necessários Protoboard 3 LEDs coloridos 3 Resistores de 220Ω ou valor aproximado Jumpers Figura 20: Diagrama do Projeto 8 31

projeto 8 - leds controlados pelo teclado 10.1 código Código Fonte 10.1: Projeto 8 int ledum = 10; int leddois = 9; int ledtres = 8; int ledativo; / variavel para controlar qual led ficara ligado / void setup(){ pinmode(ledum, OUTPUT); pinmode(leddois, OUTPUT); pinmode(ledtres, OUTPUT); Serial.begin(9600); / necessario para utilizar comunicacao serial com o computador / void loop(){ if (Serial.available() > 0){ / verifica se ha informacao nova chegando / ledativo = Serial.parseInt(); / le um numero inteiro atraves da entrada serial / if (ledativo == 1) { digitalwrite(ledum, HIGH); digitalwrite(leddois, LOW); digitalwrite(ledtres, LOW); else if (ledativo == 2) { digitalwrite(leddois, HIGH); digitalwrite(ledum, LOW); digitalwrite(ledtres, LOW); else if (ledativo == 3) { digitalwrite(ledtres, HIGH); digitalwrite(ledum, LOW); digitalwrite(leddois, LOW); 10.2 exercícios Exercício 8.1- Modifique o Projeto 8 para que seja utilizado um LED RGB no lugar dos três LEDs coloridos utilizados originalmente. Exercício 8.2- Faça um projeto que, possuindo um LED em um pino de saída, acione esse led com intensidade lida pelo teclado, entre 0 e 255. Dicas: utilize um 32

10.2 exercícios pino que possa realizar saída analógica PWM e não esqueça de fazer a verificação do valor lido para a intensidade. Exercício 8.3- ( ) Agora é sua vez! Teve alguma ideia de projeto durante o curso ou leitura do material? Agora é a hora de tornar essa ideia realidade. Dica: Se sentir que os conteúdos são insuficientes para concretizar sua ideia, veja a última seção do material para saber onde buscar mais informações. 33

11 E X E R C Í C I O S R E S O LV I D O S 11.1 exercício 1.3 Componentes necessários Protoboard 3 LEDs coloridos 3 Resistores de 220Ω ou valor aproximado Jumpers Figura 21: Montagem Física do Exercício 1.3 35

exercícios resolvidos 11.1.1 Código int ledverde = 10; int ledamarelo = 9; int ledvermelho = 8; Código Fonte 11.1: Código Fonte do Exercício 1.3 void setup(){ pinmode(ledverde, OUTPUT); pinmode(ledvermelho, OUTPUT); void loop(){ digitalwrite(ledvermelho, HIGH); delay(5000); digitalwrite(ledvermelho, LOW); digitalwrite(ledverde, HIGH); delay(5000); digitalwrite(ledverde, LOW); digitalwrite(ledamarelo, HIGH); delay(3000); digitalwrite(ledamarelo, LOW); 36

11.2 exercício 2.2 11.2 exercício 2.2 Componentes necessários Protoboard 2 LEDs coloridos 2 Resistores de 220Ω ou valor aproximado Jumpers Figura 22: Montagem Física do Exercício 2.2 37

exercícios resolvidos 11.2.1 Código int ledum = 9; int estadoum = HIGH; int leddois = 8; int estadodois = LOW; void setup() { pinmode(ledum, OUTPUT); pinmode(leddois, OUTPUT); digitalwrite(ledum, HIGH); void loop() { if (estadoum == HIGH){ digitalwrite(ledum, LOW); digitalwrite(leddois, HIGH); estadoum = LOW; estadodois = HIGH; else { digitalwrite(leddois, LOW); digitalwrite(ledum, HIGH); estadoum = HIGH; estadodois = LOW; delay(1000); Código Fonte 11.2: Código Fonte do Exercício 2.2 38

11.3 exercício 3.1 11.3 exercício 3.1 Nesse exercício a montagem física é a mesma do Projeto 3. 11.3.1 Código int pino = 9; int incremento = 1; int intensidade = 0; void setup(){ pinmode(pino, OUTPUT); Código Fonte 11.3: Código Fonte do Exercício 3.1 void loop(){ analogwrite(pino, intensidade); delay(15); intensidade = intensidade + incremento; if (intensidade == 0 intensidade == 255){ incremento = incremento 1; 39

exercícios resolvidos 11.4 exercício 4.2 Componentes necessários Protoboard 5 LEDs coloridos 7 Resistores de 220Ω ou valor aproximado Chave tátil Jumpers Figura 23: Montagem Física do Exercício 4.2 40

11.4 exercício 4.2 11.4.1 Código int ledcarroverde = 12; int ledcarroamarelo = 11; int ledcarrovermelho = 10; int ledpedestreverde = 6; int ledpedestrevermelho = 5; int pinobotao = 2; int apertou; Código Fonte 11.4: Código Fonte do Exercício 4.2 void setup(){ pinmode(ledcarroverde, OUTPUT); pinmode(ledcarroamarelo, OUTPUT); pinmode(ledcarrovermelho, OUTPUT); pinmode(ledpedestreverde, OUTPUT); pinmode(ledpedestrevermelho, OUTPUT); pinmode(pinobotao, INPUT); digitalwrite(ledcarroverde, HIGH); digitalwrite(ledpedestrevermelho, HIGH); void loop(){ apertou = digitalread(pinobotao); if (apertou == HIGH){ delay(3000); digitalwrite(ledcarroverde, LOW); digitalwrite(ledcarroamarelo, HIGH); delay(3000); digitalwrite(ledcarroamarelo, LOW); digitalwrite(ledcarrovermelho, HIGH); digitalwrite(ledpedestrevermelho, LOW); digitalwrite(ledpedestreverde, HIGH); delay(5000); digitalwrite(ledpedestreverde, LOW); digitalwrite(ledpedestrevermelho, HIGH); delay(300); digitalwrite(ledpedestrevermelho, LOW); delay(300); digitalwrite(ledpedestrevermelho, HIGH); delay(300); digitalwrite(ledpedestrevermelho, LOW); delay(300); digitalwrite(ledpedestrevermelho, HIGH); delay(300); 41

exercícios resolvidos digitalwrite(ledpedestrevermelho, LOW); delay(300); digitalwrite(ledpedestrevermelho, HIGH); digitalwrite(ledcarrovermelho, LOW); digitalwrite(ledcarroverde, HIGH); 42

11.5 exercício 5.3 11.5 exercício 5.3 Componentes necessários Protoboard Buzzer 1 Resistor de 220Ω ou valor aproximado Potenciômetro de 20kΩ ou valor aproximado Jumpers Figura 24: Montagem Física do Exercício 5.3 43

exercícios resolvidos 11.5.1 Código int beep = 9; int medicao; Código Fonte 11.5: Código Fonte do Exercício 5.3 void setup(){ pinmode(beep, OUTPUT); void loop(){ medicao = analogread(a5); digitalwrite(beep, HIGH); delay(25 + abs(medicao 512)); digitalwrite(beep, LOW); delay(25 + abs(medicao 512)); 44

11.6 exercício 6.2 11.6 exercício 6.2 Componentes necessários Protoboard Buzzer 3 LEDs coloridos 6 Resistores de 220Ω ou valor aproximado Potenciômetro de 20kΩ ou valor aproximado Chave tátil Jumpers Figura 25: Montagem Física do Exercício 6.2 45

exercícios resolvidos 11.6.1 Código int ledum = 10; int leddois = 9; int ledtres = 8; int botao = 2; int buzzer = 6; int apertou; int leitura; int musica; Código Fonte 11.6: Código Fonte do Exercício 6.2 void setup(){ pinmode(botao, INPUT); pinmode(buzzer, OUTPUT); pinmode(ledum, OUTPUT); pinmode(leddois, OUTPUT); pinmode(ledtres, OUTPUT); void loop(){ leitura = analogread(a5); if (leitura < 342){ digitalwrite(ledum, HIGH); digitalwrite(leddois, LOW); digitalwrite(ledtres, LOW); musica = 1; else if (leitura < 684) { digitalwrite(leddois, HIGH); digitalwrite(ledum, LOW); digitalwrite(ledtres, LOW); musica = 2; else { digitalwrite(ledtres, HIGH); digitalwrite(ledum, LOW); digitalwrite(leddois, LOW); musica = 3; apertou = digitalread(botao); if (apertou == HIGH){ if (musica == 1){ digitalwrite(buzzer, HIGH); delay(100); 46

11.6 exercício 6.2 digitalwrite(buzzer, LOW); delay(100); digitalwrite(buzzer, HIGH); delay(200); digitalwrite(buzzer, LOW); delay(200); digitalwrite(buzzer, HIGH); delay(300); digitalwrite(buzzer, LOW); delay(300); else if (musica == 2){ digitalwrite(buzzer, HIGH); delay(100); digitalwrite(buzzer, LOW); delay(100); digitalwrite(buzzer, HIGH); delay(100); digitalwrite(buzzer, LOW); delay(100); digitalwrite(buzzer, HIGH); delay(100); digitalwrite(buzzer, LOW); delay(100); else { digitalwrite(buzzer, HIGH); delay(50); digitalwrite(buzzer, LOW); delay(50); digitalwrite(buzzer, HIGH); delay(25); digitalwrite(buzzer, LOW); delay(25); digitalwrite(buzzer, HIGH); delay(100); digitalwrite(buzzer, LOW); delay(100); 47

exercícios resolvidos 11.7 exercício 7.2 Componentes necessários Protoboard 2 Resistores de 220Ω ou valor aproximado Chave tátil Jumpers Figura 26: Montagem Física do Exercício 7.2 48

11.7 exercício 7.2 11.7.1 Código int botao = 2; int apertou; int controle = 0; int tempomensagem; int tempobotao; int tempofinal; void setup(){ pinmode(botao, INPUT); Serial.begin(9600); delay(8000); Serial.println("Ja!"); tempomensagem = millis(); Código Fonte 11.7: Código Fonte do Exercício 7.2 void loop(){ apertou = digitalread(botao); if (apertou == HIGH && controle == 0){ tempobotao = millis(); tempofinal = tempobotao tempomensagem; Serial.print("Seu tempo de reacao eh: "); Serial.print(tempoFinal); Serial.print(" milissegundos"); controle = 1; 49

exercícios resolvidos 11.8 exercício 8.2 Nesse exercício a montagem física é a mesma do Projeto 3. int led = 9; int intensidade; Código Fonte 11.8: Código Fonte do Exercício 8.2 void setup(){ pinmode(led, OUTPUT); Serial.begin(9600); void loop(){ if (Serial.available() > 0){ intensidade = Serial.parseInt(); if (intensidade >= 0 && intensidade <= 255){ analogwrite(led, intensidade); 50

12 E A G O R A? P R A O N D E V O U? Então você chegou até o fim do material e está ansioso para aprender mais? Aqui vão algumas dicas para continuar aprendendo: Se você gostou bastante da parte de programação e gostaria de desenvolver projetos com comportamentos mais sofisticados, você pode buscar um livro sobre lógica de programação ou introdução à linguagem de programação C, que é muito parecida com a linguagem utilizada para programar o Arduino. Também é interessante verificar recursos de aprendizado de programação online como o Code (http://www.code.org/), o Code School (http://www.codeschool.com/) ou o Code Academy (http://www.codeacademy.com/). Alguns desses sites possuem os cursos também em português, mas caso prefira acessar um recurso em português pode dar uma olhada no site brasileiro Aprender a Programar (http://www. aprenderprogramar.com.br/). Se tem maior interesse em aprender as diversas possibilidades que o Arduino oferece, pode buscar direto da fonte. A documentação do Arduino (http://arduino. cc/en/reference/homepage) possui todas as suas funcionalidades explicadas, e a página de exemplos (http://arduino.cc/en/tutorial/homepage) possui vários exemplos de utilização dessas funcionalidades. A ferramenta utilizada para criar todos os diagramas de montagem de projetos desse material, o Fritzing (http://fritzing. org/home/), também possui vários projetos submetidos por seus usuários para você explorar e aprender um pouco mais. Por último, mas também muito interessante, vale a pena citar a linguagem de programação Processing (https://processing.org/), criada na mesma filosofia do Arduino (porém antes desse) de tecnologia livre e aprendizado prático, que permite criar projetos gráficos como jogos e animações de forma programática e interessante, o que o torna uma ótima maneira de aprofundar seus conhecimentos de programação. 51