SlideShare ist ein Scribd-Unternehmen logo
1 von 38
Downloaden Sie, um offline zu lesen
Escola Secundária Afonso Lopes Vieira
Curso Profissional de Técnico de Eletrónica e Telecomunicações
2009/2012
Explorando a Plataforma Arduino
Relatório da Prova de Aptidão Profissional
Carlos Daniel Bajouco Martins Moço, N.º 17464, 3.º ET
Leiria, junho de 2012
Escola Secundária Afonso Lopes Vieira
Curso Profissional de Técnico de Eletrónica e Telecomunicações
2009/2012
Explorando a Plataforma Arduino
Relatório da Prova de Aptidão Profissional
Carlos Daniel Bajouco Martins Moço, N.º 17464, 3.º ET
Orientador – Paulo Manuel Martins dos Santos
Coorientadora – Judite de Jesus Rosa Judas da Cunha Vieira
Leiria, junho de 2012
Relatório da Prova de Aptidão Profissional – Carlos Moço
Dedicatória
Dedico este trabalho aos meus pais, pela sua constante preocupação e apoio.
Aos meus amigos, especialmente, o Emanuel por me ter ajudado a superar algumas
dificuldades.
- i -
Relatório da Prova de Aptidão Profissional – Carlos Moço
Agradecimentos
Em primeiro lugar, agradeço ao senhor diretor da escola, Dr. Luís Pedro Biscaia, por nos ter
apoiado, ao longo do curso.
Agradeço à diretora de turma e ex-presidente do conselho executivo da escola, Dr.ª Judite da
Cunha Vieira, responsável pela abertura do curso e por ter me ter dado a oportunidade de o
concluir.
Agradeço ao diretor de curso, Dr. Paulo Manuel Martins dos Santos, que nos acompanhou ao
longo destes anos.
O meu reconhecimento à empresa Baquelite Liz, S.A. por me ter proporcionado o contacto
com o mundo do trabalho.
Não posso deixar de agradecer a todos os professores em geral.
Quero, ainda, deixar aqui o meu reconhecimento à minha família, sem eles, nada sou.
Finalmente, agradeço aos meus colegas que também me ajudaram.
- ii -
Relatório da Prova de Aptidão Profissional – Carlos Moço
Índice geral
Dedicatória...................................................................................................................................i
Agradecimentos..........................................................................................................................ii
Índice geral................................................................................................................................iii
Outros índices.............................................................................................................................v
Índice de figuras.....................................................................................................................v
Índice de tabelas.....................................................................................................................v
Resumo......................................................................................................................................vi
Palavras-chave.......................................................................................................................vi
1.Introdução...............................................................................................................................1
1.1.Apresentação de ideias e linhas fundamentais................................................................1
1.2.Objetivos a alcançar........................................................................................................1
1.3.Estrutura do relatório.......................................................................................................2
2.Desenvolvimento....................................................................................................................3
2.1.Fundamentação do projeto..............................................................................................3
2.2.Métodos e técnicas utilizadas..........................................................................................8
2.3.Execução do projeto........................................................................................................9
2.4.Código-fonte desenvolvido...........................................................................................13
3.Conclusão..............................................................................................................................26
Bibliografia...............................................................................................................................27
Anexos......................................................................................................................................28
Anexo 1 – O que é necessário para começar a explorar o Arduino......................................29
- iii -
Relatório da Prova de Aptidão Profissional – Carlos Moço
Outros índices
Índice de figuras
Figura 1: Placa Arduino Uno......................................................................................................3
Figura 2: Exemplo de shield para o Arduino Uno......................................................................4
Figura 3: Arduino Ethernet Shield..............................................................................................6
Figura 4: Arduino Mega ADK....................................................................................................6
Figura 5: Arduino Motor Shield..................................................................................................7
Figura 6: Arduino Uno (em baixo) com as shields Ethernet (no meio) e VGA (em cima).........8
Figura 7: Esquemático elaborado no EAGLE.............................................................................9
Figura 8: Desenho da placa de circuito impresso do mostrador - lado dos componentes........10
Figura 9: Desenho da placa de circuito impresso do mostrador - lado das soldaduras.............11
Figura 10: Desenho da placa de circuito impresso da shield - face superior............................11
Figura 11: Desenho da placa de circuito impresso da shield - face inferior.............................11
Figura 12: Disposição dos componentes na placa de circuito impresso do mostrador.............12
Figura 13: Disposição dos componentes na placa de circuito impresso da shield....................12
Figura 14: Esquemático do circuito para testes........................................................................14
Figura 15: Circuito de testes montado em protoboard..............................................................14
Índice de tabelas
Tabela 1 – Lista de material......................................................................................................13
- iv -
Relatório da Prova de Aptidão Profissional – Carlos Moço
Resumo
Este projeto visa explorar o microcontrolador Arduino, o seu ambiente de programação em
linguagem C e a sua utilização na integração dos jogos do Pong (2 jogadores) e Snake (1
jogador), disponíveis em http://blog.bsoares.com.br/arduino/ping-pong-with-8x8-led-matrix-
on-arduino e http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1265668103.
O jogo do Pong consiste em duas barras e uma bola visualizáveis num mostrador com matriz
de 8x8 LEDs, uma das barras situa-se no lado direito e a outra barra está no lado esquerdo
ambas deslocam-se para cima e para baixo, comandadas por dois potenciómetros atuados pelo
jogador humano, um dos potenciómetros comanda a barra da esquerda o outro potenciómetro
comanda a barra da direita. A bola desloca-se no tabuleiro desviando o seu trajeto quando bate
nas barras (raquetas) laterais ou na parede superior ou inferior do tabuleiro, se transpuser uma
das laterais o jogador adversário ganha pontos. O jogo termina quando os jogadores
esgotarem as bolas disponíveis.
O jogo Snake consiste numa cobra pequena que se move para cima e para baixo, para
esquerda e para a direita no mostrador, neste jogo a cobra tem de comer as maçãs que vão
aparecendo, à medida que as vai comendo o seu comprimento vai aumentando, bem como o
grau de dificuldade do jogo.
O sistema será instalado numa caixa de madeira ficando os potenciómetros colocados um do
lado direito e o outro no lado esquerdo do mostrador.
Palavras-chave
Microcontrolador, Arduino, potenciómetro, LED
- v -
Relatório da Prova de Aptidão Profissional – Carlos Moço
1. Introdução
O trabalho que eu escolhi e sobre o qual vou falar é o Arduino Uno.
Este trabalho foi escolhido, porque o Arduino Uno dá para fazer várias coisas, como por
exemplo, fazer robôs, jogos e uma imensidão de outras coisas interessantes.
Foi este o projeto que escolhi para a Prova de Aptidão Profissional, porque gostei de ver o
Arduino Uno a funcionar com o jogo do Pong e Snake.
Também vou falar e mostrar o trabalho que fiz ao longo dos últimos meses.
1.1. Apresentação de ideias e linhas fundamentais
Foi esta a ideia escolhida porque visitei um sítio na internet onde vi este componente e gostei
do que vi e do que o Arduino Uno faz.
Decidi falar sobre o Arduino Uno pelo seu aspeto físico que está bem apresentado e pelo seu
funcionamento.
Quero, ainda, perceber como é o Arduino Uno, como funciona, e quais são as suas utilizações
desde jogos, robôs, dispositivos controlados à distância através de uma rede informática.
Para além do Arduino Uno irei falar de mais três outros Arduinos que são: Arduino Ethernet
Shield; Arduino Mega ADK; e Arduino Motor Shield.
1.2. Objetivos a alcançar
Espero superar as minhas expectativas, perceber mais dos componentes eletrónicos, e
entender mais sobre como programar em código de linguagem C o Arduino Uno.
- 1 -
Relatório da Prova de Aptidão Profissional – Carlos Moço
1.3. Estrutura do relatório
O meu relatório começa por uma breve dedicatória às pessoas de quem gosto. De seguida,
vêm os agradecimentos às pessoas que nos acompanharam nestes três anos de curso. Depois o
resumo onde faço uma breve apresentação do meu projeto. Segue-se o desenvolvimento onde
aprofundo mais circunstanciadamente o desenvolvimento do meu projeto, na fundamentação
faço um breve resumo dos componentes Arduino mais importantes, depois mostro as técnicas
e os métodos que utilizei para o desenvolvimento do mesmo. Por fim, a conclusão, a
bibliografia e os anexos.
- 2 -
Relatório da Prova de Aptidão Profissional – Carlos Moço
2. Desenvolvimento
O Arduino Uno é um componente muito utilizado pelos entusiastas de eletrónica, este
componente dá para fazer inúmeras coisas, desde jogos a robôs e muitos mais. É um
componente muito popular.
2.1. Fundamentação do projeto
Arduino Uno
O Arduino Uno é uma placa com um microcontrolador ATmega328, possui 6 pinos de entrada
analógica, 14 pinos de entrada e saídas digitais, 6 dos quais podendo enviar sinais modulados
por largura de pulso (PWM).
- 3 -
Figura 1: Placa Arduino Uno
Relatório da Prova de Aptidão Profissional – Carlos Moço
O Arduino Uno difere das placas antecessoras por não utilizar o circuito integrado conversor
USB-série da FTDI, mas sim o microcontrolador ATmega8U2 programado para conversor
USB-série.
A largura e o comprimento máximos da placa de circuito impresso (PCB) do Arduino Uno são
68,58 por 53,34mm respetivamente (2,7"x2,1"), com os conetores USB e de alimentação
estendendo-se além destas dimensões. Existem quatro furos para permitirem que através de
parafusos a placa seja fixada a uma superfície ou encapsulamento.
A distância entre os pinos digitais 7 e 8 é de 160mil (milésimos de polegada ou 0,16"),
não é múltiplo dos 100mil que separam os outros pinos.
O Arduino Uno em si não possui qualquer recurso de rede, porém é comum combinar um ou
mais Arduinos Unos.
Utilizando extensões apropriadas chamadas de shields, ver figura 2, também o Arduino Uno
pode ser usado para desenvolvimento de projetos interativos independentes, ou ainda para ser
conectado a outros projetos.
Este componente eletrónico goza de grande popularidade entre as pessoas entusiastas da
eletrónica. Também os músicos e profissionais da arte digital utilizam imenso este
microcontrolador.
- 4 -
Figura 2: Exemplo de shield para o Arduino Uno
Relatório da Prova de Aptidão Profissional – Carlos Moço
O Arduino Uno dá para fazer diversos projetos, como por exemplo: dá para fazer jogos e
passatempos; robôs moveis; projetos que nos ajudam no dia a dia que possam ser controlados
remotamente através de uma rede informática.
Seguem-se algumas características relevantes:
Entrada e saída – Cada um dos 14 pinos digitais no Arduino Uno pode ser usado como
entrada ou saída usando as funções pinMode(), digitalWrite(), e
digitalRead(). Estes pinos operam com 5V e cada pino pode fornecer ou
receber uma corrente máxima de 40 mA, internamente existe uma resistência de
pull-up de 20-50 kΩ que por defeito está desligada.
Comunicação – O Arduino Uno, bem como outros Arduinos, possui diversas formas de
comunicação com um computador, com outros Arduinos e mesmo com outros
microcontroladores.
Proteção de limite de corrente na porta USB – O Arduino Uno tem um fusível rearmável
que protege a porta USB contra correntes elevadas o que adiciona mais uma camada
de proteção para a porta USB. Enquanto a placa estiver em curto-circuito o fusível
permanece aberto, fechando numa situação normal de utilização.
Programação – O Arduino Uno pode ser programado com o software Arduino que se pode
descarregar para qualquer sistema operativo Microsoft Windows, Mac OSX ou Linux
(http://arduino.cc/en/Main/Software).
Arduino Ethernet Shield
O Arduino Ethernet Shield liga a uma rede informática ou à internet em poucos minutos. É só
encaixar este módulo à placa do Arduino Uno, ligar à sua rede informática através de um cabo
de pares entrançados UTP com ficha RJ45 macho, e seguir algumas instruções simples para
começar a controlar o que desejar através da internet.
O Arduino Ethernet Shield necessita de uma placa Arduino Uno ou Mega para funcionar.
Este módulo possui uma ranhura para inserir um cartão micro-SD, que pode ser usado para
armazenar ficheiros para envio através da rede.
- 5 -
Relatório da Prova de Aptidão Profissional – Carlos Moço
Arduino Mega ADK
O Arduino Mega ADK é uma placa baseada no microcontrolador ATmega2560. Possui uma
interface USB baseada no circuito integrado MAX3421 para ligação a tablets ou telemóveis
- 6 -
Figura 3: Arduino Ethernet Shield
Figura 4: Arduino Mega ADK
Relatório da Prova de Aptidão Profissional – Carlos Moço
Android. O módulo possui 16 entradas analógicas e ainda 54 pinos que podem funcionar
como entradas ou saídas digitais, dos quais 14 podem ser usados como saídas em modulação
por largura de pulso (PWM).
O Arduino Mega ADK pode ser alimentado através da ligação USB ou com uma fonte de
alimentação independente. A fonte de energia é selecionada automaticamente.
Arduino Motor Shield
O Arduino Motor Shield é baseado no L298, que é uma ponte em H dupla, concebidas para
cargas indutivas, como relés, eletroímanes, motores de corrente contínua e motores passo a
passo.
Este módulo permite comandar até dois motores de corrente contínua ou um motor passo a
passo, controlando a velocidade e a direção de cada um de forma independente.
O Arduino Motor Shield deve ser alimentado apenas por uma fonte de alimentação separada,
porque o circuito integrado L298 montado na shiled tem duas ligações de alimentação
separadas, uma para a lógica (5V) e a outra para a alimentação do motor (Vin).
- 7 -
Figura 5: Arduino Motor Shield
Relatório da Prova de Aptidão Profissional – Carlos Moço
Gameduino
Gameduino é um adaptador de jogos para Arduino Uno (ou qualquer outra placa com uma
interface SPI) que funciona como uma simples shield que se monta sobre o Arduino e conta
com uma saída para ligação a monitores de vídeo VGA e outra com som estéreo.
Para evitar possíveis danos para a placa Arduino em que a shield está montada, recomenda-se
a utilização de uma fonte de alimentação externa que forneça uma tensão entre 7 e 12V.
2.2. Métodos e técnicas utilizadas
Primeiro que tudo comecei a fazer o esquemático para ligar 64 LEDs numa matriz 8x8 no
programa EAGLE, depois de concluído o esquemático, comecei a desenhar as duas placas de
- 8 -
Figura 6: Arduino Uno (em baixo) com as shields Ethernet (no meio)
e VGA (em cima)
Relatório da Prova de Aptidão Profissional – Carlos Moço
circuito impresso, a dos LEDs e a shield a encaixar no Arduino Uno.
Depois comecei a testar vários circuitos em protoboard ligados ao Arduino Uno. Basicamente
com LEDs, resistências e potenciómetros. O objetivo era aprender como as coisas
funcionavam. Para cada exemplo desenvolvi o código em linguagem C no programa Arduino
a correr no sistema operativo Linux/Ubuntu.
2.3. Execução do projeto
O esquemático que elaborei pode ser observado na figura, nele se pode ver a matriz de LEDs
8x8, com os ânodos ligados por linha, os cátodos por coluna e os dois potenciómetros que
ligam às entradas analógicas A4 e A5 e permitem a interação com o Arduino Uno.
- 9 -
Figura 7: Esquemático elaborado no EAGLE
Relatório da Prova de Aptidão Profissional – Carlos Moço
Depois de ter concluído o esquemático desenhei também no EAGLE duas placas de circuito
impresso, uma para o mostrador de LEDs e a outra para encaixar como shield no Arduino
Uno. Tiveram de ser de dupla face devido à existência de muitas ligações. Seguem-se as
respetivas imagens, as figuras 8 e 9 referem-se ao mostrador de LEDs, as figuras 10 e 11
referem-se à shield para o Arduino Uno e as figuras 12 e 13 dizem respeito à disposição dos
vários componentes em ambas as placas.
- 10 -
Figura 8: Desenho da placa de circuito impresso
do mostrador - lado dos componentes
Relatório da Prova de Aptidão Profissional – Carlos Moço
- 11 -
Figura 9: Desenho da placa de circuito impresso
do mostrador - lado das soldaduras
Figura 10: Desenho da
placa de circuito impresso
da shield - face superior
Figura 11: Desenho da
placa de circuito impresso
da shield - face inferior
Relatório da Prova de Aptidão Profissional – Carlos Moço
- 12 -
Figura 12: Disposição dos componentes na placa
de circuito impresso do mostrador
Figura 13: Disposição dos
componentes na placa de
circuito impresso da shield
Relatório da Prova de Aptidão Profissional – Carlos Moço
Na tabela 1 apresento a lista de material que utilizei no meu projeto.
Tabela 1 – Lista de material
Item n.º Nome Quantidade Descrição/Valor
1 SV1,
SV2
2 Ligador com 2x8 pinos
2 R16, R17 2 Potenciómetro de 10kΩ linear
3 R1, R2,
R3, R4,
R5, R6,
R7, R8
8 Resistência de 10kΩ 1/4W
4 D1, D2,
D3, D4,
D5, D6,
D7, D8,
D9, D10,
…, D60,
D61,
D62,
D63, D64
64 LED Ø5mm vermelho
5 JP1, JP2,
JP3, JP4
4 Ligador de 3 pinos
2.4. Código-fonte desenvolvido
Depois de desenhar os esquemáticos e as placas de circuito impresso, passei para a
programação do microcontrolador do Arduino Uno, não sem antes ter montado numa
protoboard um circuito simples para testes, conforme figura 14, cuja fotografia se encontra na
figura 15.
- 13 -
Relatório da Prova de Aptidão Profissional – Carlos Moço
- 14 -
Figura 14: Esquemático do circuito para testes
Figura 15: Circuito de testes montado em protoboard
Relatório da Prova de Aptidão Profissional – Carlos Moço
Seguidamente descarreguei da internet o programa que se chama Arduino 1.0, onde
desenvolvi o código-fonte em linguagem C para alguns exemplos, que se transcreve de
seguida:
Exemplo 1
/*
Nome do programa: pisca4.ino
Descrição: Pisca o LED ligado ao pino 4 do Arduino Uno.
Autor(es): 17464 - Carlos Daniel Bajouco Martins Moço
Turma: 3.º ET
Disciplina: Prova de Aptidão Profissional (PAP)
Curso: C P de Técnico de Eletrónica e Telecomunicações
Escola: Escola Secundária Afonso Lopes Vieira
Data: 26/04/2012
*/
/* função de inicialização do microcontrolador, executada uma só vez */
void setup() {
// configura o pino digital 4 do Arduino como saída
pinMode(4, OUTPUT);
}
/* função principal do programa, executada continuamente */
void loop() {
digitalWrite(4, HIGH); // acende o LED
delay(500); // aguarda meio segundo
- 15 -
Relatório da Prova de Aptidão Profissional – Carlos Moço
digitalWrite(4, LOW); // apaga o LED
delay(500); // aguarda meio segundo
}
Exemplo 2
/*
Nome do programa: pisca4.ino
Descrição: Pisca o LED ligado ao pino 4 do Arduino Uno.
Autor(es): 17464 - Carlos Daniel Bajouco Martins Moço
Turma: 3.º ET
Disciplina: Prova de Aptidão Profissional (PAP)
Curso: C P de Técnico de Eletrónica e Telecomunicações
Escola: Escola Secundária Afonso Lopes Vieira
Data: 26/04/2012
*/
/* função de inicialização do microcontrolador, executada uma só vez */
void setup() {
// configura o pino digital 4 do Arduino como saída
pinMode(4, OUTPUT);
}
/* função principal do programa, executada continuamente */
void loop() {
digitalWrite(4, HIGH); // acende o LED
delay(500); // aguarda meio segundo
digitalWrite(4, LOW); // apaga o LED
- 16 -
Relatório da Prova de Aptidão Profissional – Carlos Moço
delay(500); // aguarda meio segundo
}
Exemplo 3
/*
Nome do programa: pisca451011.ino
Descrição: Pisca os LEDs ligados aos pinos 4, 5, 10 e 11 do
Arduino Uno, na sequência 4 -> 5 -> 10 -> 11 ->
10 -> 5 -> 4 -> 5 -> ...
Autor(es): 17464 - Carlos Daniel Bajouco Martins Moço
Turma: 3.º ET
Disciplina: Prova de Aptidão Profissional (PAP)
Curso: C P de Técnico de Eletrónica e Telecomunicações
Escola: Escola Secundária Afonso Lopes Vieira
Data: 26/04/2012
*/
/* função de inicialização do microcontrolador, executada uma só vez */
void setup() {
// configura os pinos digitais 4, 5, 10 e 11 do Arduino como saídas
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(10, OUTPUT);
pinMode(11, OUTPUT);
}
- 17 -
Relatório da Prova de Aptidão Profissional – Carlos Moço
/* função principal do programa, executada continuamente */
void loop() {
digitalWrite(4, HIGH); // acende o LED ligado ao pino 4
digitalWrite(5, LOW); // apaga o LED ligado ao pino 5
digitalWrite(10, LOW); // apaga o LED ligado ao pino 10
digitalWrite(11, LOW); // apaga o LED ligado ao pino 11
delay(500); // aguarda meio segundo
digitalWrite(4, LOW); // apaga o LED ligado ao pino 4
digitalWrite(5, HIGH); // acende o LED ligado ao pino 5
digitalWrite(10, LOW); // apaga o LED ligado ao pino 10
digitalWrite(11, LOW); // apaga o LED ligado ao pino 11
delay(500); // aguarda meio segundo
digitalWrite(4, LOW); // apaga o LED ligado ao pino 4
digitalWrite(5, LOW); // apaga o LED ligado ao pino 5
digitalWrite(10, HIGH); // acende o LED ligado ao pino 10
digitalWrite(11, LOW); // apaga o LED ligado ao pino 11
delay(500); // aguarda meio segundo
digitalWrite(4, LOW); // apaga o LED ligado ao pino 4
digitalWrite(5, LOW); // apaga o LED ligado ao pino 5
digitalWrite(10, LOW); // apaga o LED ligado ao pino 10
digitalWrite(11, HIGH); // acende o LED ligado ao pino 11
delay(500); // aguarda meio segundo
digitalWrite(4, LOW); // apaga o LED ligado ao pino 4
digitalWrite(5, LOW); // apaga o LED ligado ao pino 5
digitalWrite(10, HIGH); // acende o LED ligado ao pino 10
digitalWrite(11, LOW); // apaga o LED ligado ao pino 11
delay(500); // aguarda meio segundo
digitalWrite(4, LOW); // apaga o LED ligado ao pino 4
digitalWrite(5, HIGH); // acende o LED ligado ao pino 5
digitalWrite(10, LOW); // apaga o LED ligado ao pino 10
digitalWrite(11, LOW); // apaga o LED ligado ao pino 11
delay(500); // aguarda meio segundo
}
Exemplo 4
- 18 -
Relatório da Prova de Aptidão Profissional – Carlos Moço
/*
Nome do programa: potenciometro4.ino
Descrição: Pisca os LEDs ligados aos pinos 4, 5, 10 e 11 do
Arduino Uno, na sequência 4 -> 5 -> 10 -> 11 ->
10 -> 5 -> 4 -> 5 -> ...
A velocidade da sequência de acendimentos é
ajustada através de um potenciómetro ligado ao
pino analógico A4.
São também enviadas mensagens através da ligação
série, que podem ser visualizadas com o Serial
Monitor (Ctrl+Shift+M).
Autor(es): 17464 - Carlos Daniel Bajouco Martins Moço
Turma: 3.º ET
Disciplina: Prova de Aptidão Profissional (PAP)
Curso: C P de Técnico de Eletrónica e Telecomunicações
Escola: Escola Secundária Afonso Lopes Vieira
Data: 26/04/2012
*/
/* declaração de constantes e variáveis */
int potPin = A4; // selec. o pino analógico ao qual está ligado o sensor
int led1Pin = 4; // seleciona o pino digital ao qual está ligado o LED1
int led2Pin = 5; // seleciona o pino digital ao qual está ligado o LED2
int led3Pin = 10; // seleciona o pino digital ao qual está ligado o LED3
int led4Pin = 11; // seleciona o pino digital ao qual está ligado o LED4
int potValue = 0; // variável para guardar o valor analógico do sensor
- 19 -
Relatório da Prova de Aptidão Profissional – Carlos Moço
/* função de inicialização do microcontrolador, executada uma só vez */
void setup() {
Serial.begin(57600); // inicializa a linha de série para 57600bps
Serial.println("Arduino@CPTET"); // envia mensagem através da linha série
Serial.println("-------------"); // envia mensagem através da linha série
// configura os pinos digitais onde estão ligados os LEDs como saídas
pinMode(led1Pin, OUTPUT);
pinMode(led2Pin, OUTPUT);
pinMode(led3Pin, OUTPUT);
pinMode(led4Pin, OUTPUT);
}
/* função principal do programa, executada continuamente */
void loop() {
// lê o valor analógico presente no cursor do potenciómetro
potValue = analogRead(potPin);
// envia o valor lido através da linha de comunicação série
Serial.write("Leitura: ");
Serial.println(potValue, DEC);
// faz a sequência de acendimentos
digitalWrite(led1Pin, HIGH); // acende o LED1
digitalWrite(led2Pin, LOW); // apaga o LED2
digitalWrite(led3Pin, LOW); // apaga o LED3
digitalWrite(led4Pin, LOW); // apaga o LED4
delay(potValue); // aguarda algum tempo
digitalWrite(led1Pin, LOW); // apaga o LED1
digitalWrite(led2Pin, HIGH); // acende o LED2
digitalWrite(led3Pin, LOW); // apaga o LED3
digitalWrite(led4Pin, LOW); // apaga o LED4
delay(potValue); // aguarda algum tempo
digitalWrite(led1Pin, LOW); // apaga o LED1
digitalWrite(led2Pin, LOW); // apaga o LED2
digitalWrite(led3Pin, HIGH); // acende o LED3
digitalWrite(led4Pin, LOW); // apaga o LED4
delay(potValue); // aguarda algum tempo
digitalWrite(led1Pin, LOW); // apaga o LED1
- 20 -
Relatório da Prova de Aptidão Profissional – Carlos Moço
digitalWrite(led2Pin, LOW); // apaga o LED2
digitalWrite(led3Pin, LOW); // apaga o LED3
digitalWrite(led4Pin, HIGH); // acende o LED4
delay(potValue); // aguarda algum tempo
digitalWrite(led1Pin, LOW); // apaga o LED1
digitalWrite(led2Pin, LOW); // apaga o LED2
digitalWrite(led3Pin, HIGH); // acende o LED3
digitalWrite(led4Pin, LOW); // apaga o LED4
delay(potValue); // aguarda algum tempo
digitalWrite(led1Pin, LOW); // apaga o LED1
digitalWrite(led2Pin, HIGH); // acende o LED2
digitalWrite(led3Pin, LOW); // apaga o LED3
digitalWrite(led4Pin, LOW); // apaga o LED4
delay(potValue); // aguarda algum tempo
}
Exemplo 5
/*
Nome do programa: potenciometro45.ino
Descrição: Pisca os LEDs ligados aos pinos 4 e 5 do Arduino
Uno a um ritmo ajustado pelo potenciómetro ligado
à entrada A4.
O potenciómetro ligado à entrada A5 ajusta a
intensidade luminosa dos LEDs ligados aos
pinos 10 e 11.
Autor(es): 17464 - Carlos Daniel Bajouco Martins Moço
Turma: 3.º ET
Disciplina: Prova de Aptidão Profissional (PAP)
- 21 -
Relatório da Prova de Aptidão Profissional – Carlos Moço
Curso: C P de Técnico de Eletrónica e Telecomunicações
Escola: Escola Secundária Afonso Lopes Vieira
Data: 26/04/2012
*/
/* declaração de constantes e variáveis */
// seleciona o pino analógico ao qual liga o potenciómetro da temporização
int pot1Pin = A4;
// seleciona o pino analógico ao qual liga o potenciómetro da intensidade
int pot2Pin = A5;
int led1Pin = 4; // seleciona o pino digital ao qual está ligado o LED1
int led2Pin = 5; // seleciona o pino digital ao qual está ligado o LED2
int led3Pin = 10; // seleciona o pino digital ao qual está ligado o LED3
int led4Pin = 11; // seleciona o pino digital ao qual está ligado o LED4
// variável para guardar o valor analógico do potenciómetro da temporização
int pot1Value = 0;
// variável para guardar o valor analógico do potenciómetro da intensidade
int pot2Value = 0;
/* função de inicialização do microcontrolador, executada uma só vez */
void setup() {
// configura os pinos digitais onde estão ligados os LEDs como saídas
pinMode(led1Pin, OUTPUT);
pinMode(led2Pin, OUTPUT);
pinMode(led3Pin, OUTPUT);
pinMode(led4Pin, OUTPUT);
}
/* função principal do programa, executada continuamente */
void loop() {
// lê o valor analógico presente no cursor do potenciómetro ligado a A4
pot1Value = analogRead(pot1Pin);
// lê o valor analógico presente no cursor do potenciómetro ligado a A5
pot2Value = analogRead(pot2Pin);
pot2Value = pot2Value / 4; // cálculo para ajustar ao intervalo 0 .. 255
digitalWrite(led1Pin, HIGH); // acende o LED1
- 22 -
Relatório da Prova de Aptidão Profissional – Carlos Moço
digitalWrite(led2Pin, HIGH); // acende o LED2
analogWrite(led3Pin, pot2Value); // ajusta intensidade do LED3
analogWrite(led4Pin, pot2Value); // ajusta intensidade do LED4
delay(pot1Value); // aguarda algum tempo
digitalWrite(led1Pin, LOW); // apaga o LED1
digitalWrite(led2Pin, LOW); // apaga o LED2
analogWrite(led3Pin, pot2Value); // ajusta intensidade do LED3
analogWrite(led4Pin, pot2Value); // ajusta intensidade do LED4
delay(pot1Value); // aguarda algum tempo
}
Exemplo 6
/*
Nome do programa: movimento45.ino
Descrição: Sinaliza a rotação anti-horária do cursor do
potenciómetro 1 acendendo o LED 1, enquanto a
rotação horária é sinalizada pelo LED 2.
Sinaliza a rotação anti-horária do cursor do
potenciómetro 2 acendendo o LED 3, enquanto a
rotação horária é sinalizada pelo LED 4.
Não havendo movimento dos cursores dos
potenciómetros todos os LEDs mantém-se apagados.
Autor(es): 17464 - Carlos Daniel Bajouco Martins Moço
Turma: 3.º ET
Disciplina: Prova de Aptidão Profissional (PAP)
Curso: C P de Técnico de Eletrónica e Telecomunicações
Escola: Escola Secundária Afonso Lopes Vieira
- 23 -
Relatório da Prova de Aptidão Profissional – Carlos Moço
Data: 26/04/2012
*/
/* declaração de constantes e variáveis */
// seleciona o pino analógico ao qual está ligado o potenciómetro 1
int pot1Pin = A4;
// seleciona o pino analógico ao qual está ligado o potenciómetro 2
int pot2Pin = A5;
// seleciona o pino digital ao qual está ligado o LED1
int led1Pin = 4;
// seleciona o pino digital ao qual está ligado o LED2
int led2Pin = 5;
// seleciona o pino digital ao qual está ligado o LED3
int led3Pin = 10;
// seleciona o pino digital ao qual está ligado o LED4
int led4Pin = 11;
// variável para guardar o valor analógico do potenciómetro 1
int pot1Value = 0;
// variável para guardar o valor analógico do potenciómetro 2
int pot2Value = 0;
// variável para guardar o valor analógico anterior do potenciómetro 1
int pot1ValueOld = pot1Value;
// variável para guardar o valor analógico anterior do potenciómetro 2
int pot2ValueOld = pot2Value;
int potGap = 1; // define a sensibilidade para evitar o ruído nas leituras
/* função de inicialização do microcontrolador, executada uma só vez */
void setup() {
// configura os pinos digitais onde estão ligados os LEDs como saídas
pinMode(led1Pin, OUTPUT);
pinMode(led2Pin, OUTPUT);
pinMode(led3Pin, OUTPUT);
pinMode(led4Pin, OUTPUT);
}
/* função principal do programa, executada continuamente */
void loop() {
- 24 -
Relatório da Prova de Aptidão Profissional – Carlos Moço
// lê os valores analógicos dos potenciómetros 1 e 2
pot1Value = analogRead(pot1Pin);
pot2Value = analogRead(pot2Pin);
if (pot1Value < (pot1ValueOld - potGap)) {
digitalWrite(led1Pin, HIGH);
}
if (pot1Value > (pot1ValueOld + potGap)) {
digitalWrite(led2Pin, HIGH);
}
if (pot2Value < (pot2ValueOld - 2)) {
digitalWrite(led3Pin, HIGH);
}
if (pot2Value > (pot2ValueOld + 2)) {
digitalWrite(led4Pin, HIGH);
}
delay(100); // aguarda algum tempo
// apaga todos os LEDs
digitalWrite(led1Pin, LOW);
digitalWrite(led2Pin, LOW);
digitalWrite(led3Pin, LOW);
digitalWrite(led4Pin, LOW);
// guarda os valores lidos para futura comparação
pot1ValueOld = pot1Value;
pot2ValueOld = pot2Value;
}
- 25 -
Relatório da Prova de Aptidão Profissional – Carlos Moço
3. Conclusão
O meu projeto consistiu em falar sobre o Arduino Uno, para conseguir concluir este projeto
foi preciso ter uma grande capacidade de autonomia e persistência, aspetos esses que se foram
desenvolvendo à medida que o concebia, planeava e executava.
A execução do projeto da Prova de Aptidão Profissional envolveu um grande esforço e
dedicação. Para além das competências técnicas e diversas capacidades que o trabalho exigiu,
penso que foi benéfico para mim a nível profissional e a nível social, uma vez que no futuro
irei enfrentar outros projetos tão ou mais importante que este.
Naturalmente que, no decorrer da realização do projeto da Prova de Aptidão Profissional senti
diversas dificuldades, as quais só puderam ser ultrapassadas com a capacidade de trabalho que
foi desenvolvida em mim, com o apoio do professor Paulo Santos e da colaboração de alguns
dos meus colegas.
- 26 -
Relatório da Prova de Aptidão Profissional – Carlos Moço
Bibliografia
[1] Ping Pong com Matriz de Leds 8×8 e Arduino | Bruno Soares, acedido a 20 de
setembro de 2011, em http://blog.bsoares.com.br/arduino/ping-pong-with-8x8-led-
matrix-on-arduino.
[2] Snake on a 8x8 led matrix – Arduino Forum, acedido a 27 de setembro de 2011, em
http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1265668103.
[3] Arduino LCD Super Mario Game – YouTube, acedido a 27 de setembro de 2011, em
http://www.youtube.com/watch?v=qxJvsL6ES0k.
[4] Aprenda Arduino: Robótica para Iniciantes / robotics for beginners – YouTube,
acedido a 25 de outubro de 2011, em http://www.youtube.com/watch?
v=KZUrO9aXGh0.
[5] Arduino + Servo Motor + Wireless Playstation Controller – YouTube, acedido a 03 de
novembro de 2011, em http://www.youtube.com/watch?v=J85aui2W4mY.
[6] led matrix Snake - arduino powered – YouTube, acedido a 03 de novembro de 2011,
em http://www.youtube.com/watch?v=q0Wz8jydeAo.
[7] Sítio de internet do Arduino, acedido a entre 27 de setembro de 2011 a 26 de abril de
2012, em http://www.arduino.cc/.
[8] Gameduino: Consola de Jogos para Arduino – Loja Virtual da Aliatron, acedido a 22
de março de 2012, em http://aliatron.com/loja/catalog/product_info.php?
products_id=1161.
- 27 -
Relatório da Prova de Aptidão Profissional – Carlos Moço
- 28 -
Anexos
Relatório da Prova de Aptidão Profissional – Carlos Moço
Anexo 1 – O que é necessário para começar a explorar o Arduino
- 29 -
Arduino Uno
Cabo USB AB
Relatório da Prova de Aptidão Profissional – Carlos Moço
- 30 -
Fonte de alimentação de 9VAC 1,5A
Outros componentes eletrónicos à medida das necessidades
Relatório da Prova de Aptidão Profissional – Carlos Moço
- 31 -
Ferramenta de programação do Arduino, descarregar de
http://arduino.cc/en/Main/Software

Weitere ähnliche Inhalte

Ähnlich wie Arduino Pong e Snake

Curso de Informática para Concurso PC-RJ
Curso de Informática para Concurso PC-RJCurso de Informática para Concurso PC-RJ
Curso de Informática para Concurso PC-RJEstratégia Concursos
 
Curso Informática para Concurso PC-RJ - Inspetor
Curso Informática para Concurso PC-RJ - InspetorCurso Informática para Concurso PC-RJ - Inspetor
Curso Informática para Concurso PC-RJ - InspetorEstratégia Concursos
 
PROTÓTIPO DE SISTEMA WEB PARA UNIFICAR AS INFORMAÇÕES DAS UNIDADES DE SAÚDE M...
PROTÓTIPO DE SISTEMA WEB PARA UNIFICAR AS INFORMAÇÕES DAS UNIDADES DE SAÚDE M...PROTÓTIPO DE SISTEMA WEB PARA UNIFICAR AS INFORMAÇÕES DAS UNIDADES DE SAÚDE M...
PROTÓTIPO DE SISTEMA WEB PARA UNIFICAR AS INFORMAÇÕES DAS UNIDADES DE SAÚDE M...Artur Rocha
 
Desenho_de_Perspectiva_-_Fernando_Domingues_.pdf
Desenho_de_Perspectiva_-_Fernando_Domingues_.pdfDesenho_de_Perspectiva_-_Fernando_Domingues_.pdf
Desenho_de_Perspectiva_-_Fernando_Domingues_.pdfFranciele Rosa
 
Desenho_de_Perspectiva_-_Fernando_Domingues__(1).pdf
Desenho_de_Perspectiva_-_Fernando_Domingues__(1).pdfDesenho_de_Perspectiva_-_Fernando_Domingues__(1).pdf
Desenho_de_Perspectiva_-_Fernando_Domingues__(1).pdfFranciele Rosa
 
Sistema tintométrico tcc senai Carlos Henrique Borges
Sistema tintométrico tcc senai   Carlos Henrique BorgesSistema tintométrico tcc senai   Carlos Henrique Borges
Sistema tintométrico tcc senai Carlos Henrique BorgesCarlos Henrique Borges
 
Srm framework para reconhecimento de som em dispositivos móveis
Srm framework para reconhecimento de som em dispositivos móveisSrm framework para reconhecimento de som em dispositivos móveis
Srm framework para reconhecimento de som em dispositivos móveisMarcelo Ruaro
 
Curso de Informática para Concurso TRE-PA
Curso de Informática para Concurso TRE-PA Curso de Informática para Concurso TRE-PA
Curso de Informática para Concurso TRE-PA Estratégia Concursos
 
Manual do usuario_i_educar_portabilis
Manual do usuario_i_educar_portabilisManual do usuario_i_educar_portabilis
Manual do usuario_i_educar_portabilisdavi audio
 
MODELAGEM DE JOGOS ELETRÔNICOS EDUCATIVOS E DIVERTIDOS
MODELAGEM DE JOGOS ELETRÔNICOS EDUCATIVOS E DIVERTIDOSMODELAGEM DE JOGOS ELETRÔNICOS EDUCATIVOS E DIVERTIDOS
MODELAGEM DE JOGOS ELETRÔNICOS EDUCATIVOS E DIVERTIDOSrafaela barbosa
 
Arduino basico_vol.1
Arduino basico_vol.1Arduino basico_vol.1
Arduino basico_vol.1Antonio Veras
 
Ficha1 do dr2__de_tic
Ficha1 do dr2__de_ticFicha1 do dr2__de_tic
Ficha1 do dr2__de_ticLeonel Lopes
 
Apostila 130227111109-phpapp02
Apostila 130227111109-phpapp02Apostila 130227111109-phpapp02
Apostila 130227111109-phpapp02Jadiel Mendes
 
apostila informatica
apostila informaticaapostila informatica
apostila informaticanetdow livros
 

Ähnlich wie Arduino Pong e Snake (20)

Curso de Informática para Concurso PC-RJ
Curso de Informática para Concurso PC-RJCurso de Informática para Concurso PC-RJ
Curso de Informática para Concurso PC-RJ
 
Curso Informática para Concurso PC-RJ - Inspetor
Curso Informática para Concurso PC-RJ - InspetorCurso Informática para Concurso PC-RJ - Inspetor
Curso Informática para Concurso PC-RJ - Inspetor
 
Gcompris
GcomprisGcompris
Gcompris
 
PROTÓTIPO DE SISTEMA WEB PARA UNIFICAR AS INFORMAÇÕES DAS UNIDADES DE SAÚDE M...
PROTÓTIPO DE SISTEMA WEB PARA UNIFICAR AS INFORMAÇÕES DAS UNIDADES DE SAÚDE M...PROTÓTIPO DE SISTEMA WEB PARA UNIFICAR AS INFORMAÇÕES DAS UNIDADES DE SAÚDE M...
PROTÓTIPO DE SISTEMA WEB PARA UNIFICAR AS INFORMAÇÕES DAS UNIDADES DE SAÚDE M...
 
Desenho_de_Perspectiva_-_Fernando_Domingues_.pdf
Desenho_de_Perspectiva_-_Fernando_Domingues_.pdfDesenho_de_Perspectiva_-_Fernando_Domingues_.pdf
Desenho_de_Perspectiva_-_Fernando_Domingues_.pdf
 
Desenho_de_Perspectiva_-_Fernando_Domingues__(1).pdf
Desenho_de_Perspectiva_-_Fernando_Domingues__(1).pdfDesenho_de_Perspectiva_-_Fernando_Domingues__(1).pdf
Desenho_de_Perspectiva_-_Fernando_Domingues__(1).pdf
 
Domínio atendimento
Domínio atendimentoDomínio atendimento
Domínio atendimento
 
Sistema tintométrico tcc senai Carlos Henrique Borges
Sistema tintométrico tcc senai   Carlos Henrique BorgesSistema tintométrico tcc senai   Carlos Henrique Borges
Sistema tintométrico tcc senai Carlos Henrique Borges
 
Srm framework para reconhecimento de som em dispositivos móveis
Srm framework para reconhecimento de som em dispositivos móveisSrm framework para reconhecimento de som em dispositivos móveis
Srm framework para reconhecimento de som em dispositivos móveis
 
Curso de Informática para Concurso TRE-PA
Curso de Informática para Concurso TRE-PA Curso de Informática para Concurso TRE-PA
Curso de Informática para Concurso TRE-PA
 
Domínio lalur
Domínio lalurDomínio lalur
Domínio lalur
 
Manual do usuario_i_educar_portabilis
Manual do usuario_i_educar_portabilisManual do usuario_i_educar_portabilis
Manual do usuario_i_educar_portabilis
 
MODELAGEM DE JOGOS ELETRÔNICOS EDUCATIVOS E DIVERTIDOS
MODELAGEM DE JOGOS ELETRÔNICOS EDUCATIVOS E DIVERTIDOSMODELAGEM DE JOGOS ELETRÔNICOS EDUCATIVOS E DIVERTIDOS
MODELAGEM DE JOGOS ELETRÔNICOS EDUCATIVOS E DIVERTIDOS
 
Arduino basico_vol.1
Arduino basico_vol.1Arduino basico_vol.1
Arduino basico_vol.1
 
Dupla de Robôes Cooperativos
Dupla de Robôes CooperativosDupla de Robôes Cooperativos
Dupla de Robôes Cooperativos
 
Ficha1 do dr2__de_tic
Ficha1 do dr2__de_ticFicha1 do dr2__de_tic
Ficha1 do dr2__de_tic
 
Apostila informática
Apostila informáticaApostila informática
Apostila informática
 
Apostila infomatica windows xp
Apostila infomatica windows xpApostila infomatica windows xp
Apostila infomatica windows xp
 
Apostila 130227111109-phpapp02
Apostila 130227111109-phpapp02Apostila 130227111109-phpapp02
Apostila 130227111109-phpapp02
 
apostila informatica
apostila informaticaapostila informatica
apostila informatica
 

Arduino Pong e Snake

  • 1. Escola Secundária Afonso Lopes Vieira Curso Profissional de Técnico de Eletrónica e Telecomunicações 2009/2012 Explorando a Plataforma Arduino Relatório da Prova de Aptidão Profissional Carlos Daniel Bajouco Martins Moço, N.º 17464, 3.º ET Leiria, junho de 2012
  • 2. Escola Secundária Afonso Lopes Vieira Curso Profissional de Técnico de Eletrónica e Telecomunicações 2009/2012 Explorando a Plataforma Arduino Relatório da Prova de Aptidão Profissional Carlos Daniel Bajouco Martins Moço, N.º 17464, 3.º ET Orientador – Paulo Manuel Martins dos Santos Coorientadora – Judite de Jesus Rosa Judas da Cunha Vieira Leiria, junho de 2012
  • 3. Relatório da Prova de Aptidão Profissional – Carlos Moço Dedicatória Dedico este trabalho aos meus pais, pela sua constante preocupação e apoio. Aos meus amigos, especialmente, o Emanuel por me ter ajudado a superar algumas dificuldades. - i -
  • 4. Relatório da Prova de Aptidão Profissional – Carlos Moço Agradecimentos Em primeiro lugar, agradeço ao senhor diretor da escola, Dr. Luís Pedro Biscaia, por nos ter apoiado, ao longo do curso. Agradeço à diretora de turma e ex-presidente do conselho executivo da escola, Dr.ª Judite da Cunha Vieira, responsável pela abertura do curso e por ter me ter dado a oportunidade de o concluir. Agradeço ao diretor de curso, Dr. Paulo Manuel Martins dos Santos, que nos acompanhou ao longo destes anos. O meu reconhecimento à empresa Baquelite Liz, S.A. por me ter proporcionado o contacto com o mundo do trabalho. Não posso deixar de agradecer a todos os professores em geral. Quero, ainda, deixar aqui o meu reconhecimento à minha família, sem eles, nada sou. Finalmente, agradeço aos meus colegas que também me ajudaram. - ii -
  • 5. Relatório da Prova de Aptidão Profissional – Carlos Moço Índice geral Dedicatória...................................................................................................................................i Agradecimentos..........................................................................................................................ii Índice geral................................................................................................................................iii Outros índices.............................................................................................................................v Índice de figuras.....................................................................................................................v Índice de tabelas.....................................................................................................................v Resumo......................................................................................................................................vi Palavras-chave.......................................................................................................................vi 1.Introdução...............................................................................................................................1 1.1.Apresentação de ideias e linhas fundamentais................................................................1 1.2.Objetivos a alcançar........................................................................................................1 1.3.Estrutura do relatório.......................................................................................................2 2.Desenvolvimento....................................................................................................................3 2.1.Fundamentação do projeto..............................................................................................3 2.2.Métodos e técnicas utilizadas..........................................................................................8 2.3.Execução do projeto........................................................................................................9 2.4.Código-fonte desenvolvido...........................................................................................13 3.Conclusão..............................................................................................................................26 Bibliografia...............................................................................................................................27 Anexos......................................................................................................................................28 Anexo 1 – O que é necessário para começar a explorar o Arduino......................................29 - iii -
  • 6. Relatório da Prova de Aptidão Profissional – Carlos Moço Outros índices Índice de figuras Figura 1: Placa Arduino Uno......................................................................................................3 Figura 2: Exemplo de shield para o Arduino Uno......................................................................4 Figura 3: Arduino Ethernet Shield..............................................................................................6 Figura 4: Arduino Mega ADK....................................................................................................6 Figura 5: Arduino Motor Shield..................................................................................................7 Figura 6: Arduino Uno (em baixo) com as shields Ethernet (no meio) e VGA (em cima).........8 Figura 7: Esquemático elaborado no EAGLE.............................................................................9 Figura 8: Desenho da placa de circuito impresso do mostrador - lado dos componentes........10 Figura 9: Desenho da placa de circuito impresso do mostrador - lado das soldaduras.............11 Figura 10: Desenho da placa de circuito impresso da shield - face superior............................11 Figura 11: Desenho da placa de circuito impresso da shield - face inferior.............................11 Figura 12: Disposição dos componentes na placa de circuito impresso do mostrador.............12 Figura 13: Disposição dos componentes na placa de circuito impresso da shield....................12 Figura 14: Esquemático do circuito para testes........................................................................14 Figura 15: Circuito de testes montado em protoboard..............................................................14 Índice de tabelas Tabela 1 – Lista de material......................................................................................................13 - iv -
  • 7. Relatório da Prova de Aptidão Profissional – Carlos Moço Resumo Este projeto visa explorar o microcontrolador Arduino, o seu ambiente de programação em linguagem C e a sua utilização na integração dos jogos do Pong (2 jogadores) e Snake (1 jogador), disponíveis em http://blog.bsoares.com.br/arduino/ping-pong-with-8x8-led-matrix- on-arduino e http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1265668103. O jogo do Pong consiste em duas barras e uma bola visualizáveis num mostrador com matriz de 8x8 LEDs, uma das barras situa-se no lado direito e a outra barra está no lado esquerdo ambas deslocam-se para cima e para baixo, comandadas por dois potenciómetros atuados pelo jogador humano, um dos potenciómetros comanda a barra da esquerda o outro potenciómetro comanda a barra da direita. A bola desloca-se no tabuleiro desviando o seu trajeto quando bate nas barras (raquetas) laterais ou na parede superior ou inferior do tabuleiro, se transpuser uma das laterais o jogador adversário ganha pontos. O jogo termina quando os jogadores esgotarem as bolas disponíveis. O jogo Snake consiste numa cobra pequena que se move para cima e para baixo, para esquerda e para a direita no mostrador, neste jogo a cobra tem de comer as maçãs que vão aparecendo, à medida que as vai comendo o seu comprimento vai aumentando, bem como o grau de dificuldade do jogo. O sistema será instalado numa caixa de madeira ficando os potenciómetros colocados um do lado direito e o outro no lado esquerdo do mostrador. Palavras-chave Microcontrolador, Arduino, potenciómetro, LED - v -
  • 8. Relatório da Prova de Aptidão Profissional – Carlos Moço 1. Introdução O trabalho que eu escolhi e sobre o qual vou falar é o Arduino Uno. Este trabalho foi escolhido, porque o Arduino Uno dá para fazer várias coisas, como por exemplo, fazer robôs, jogos e uma imensidão de outras coisas interessantes. Foi este o projeto que escolhi para a Prova de Aptidão Profissional, porque gostei de ver o Arduino Uno a funcionar com o jogo do Pong e Snake. Também vou falar e mostrar o trabalho que fiz ao longo dos últimos meses. 1.1. Apresentação de ideias e linhas fundamentais Foi esta a ideia escolhida porque visitei um sítio na internet onde vi este componente e gostei do que vi e do que o Arduino Uno faz. Decidi falar sobre o Arduino Uno pelo seu aspeto físico que está bem apresentado e pelo seu funcionamento. Quero, ainda, perceber como é o Arduino Uno, como funciona, e quais são as suas utilizações desde jogos, robôs, dispositivos controlados à distância através de uma rede informática. Para além do Arduino Uno irei falar de mais três outros Arduinos que são: Arduino Ethernet Shield; Arduino Mega ADK; e Arduino Motor Shield. 1.2. Objetivos a alcançar Espero superar as minhas expectativas, perceber mais dos componentes eletrónicos, e entender mais sobre como programar em código de linguagem C o Arduino Uno. - 1 -
  • 9. Relatório da Prova de Aptidão Profissional – Carlos Moço 1.3. Estrutura do relatório O meu relatório começa por uma breve dedicatória às pessoas de quem gosto. De seguida, vêm os agradecimentos às pessoas que nos acompanharam nestes três anos de curso. Depois o resumo onde faço uma breve apresentação do meu projeto. Segue-se o desenvolvimento onde aprofundo mais circunstanciadamente o desenvolvimento do meu projeto, na fundamentação faço um breve resumo dos componentes Arduino mais importantes, depois mostro as técnicas e os métodos que utilizei para o desenvolvimento do mesmo. Por fim, a conclusão, a bibliografia e os anexos. - 2 -
  • 10. Relatório da Prova de Aptidão Profissional – Carlos Moço 2. Desenvolvimento O Arduino Uno é um componente muito utilizado pelos entusiastas de eletrónica, este componente dá para fazer inúmeras coisas, desde jogos a robôs e muitos mais. É um componente muito popular. 2.1. Fundamentação do projeto Arduino Uno O Arduino Uno é uma placa com um microcontrolador ATmega328, possui 6 pinos de entrada analógica, 14 pinos de entrada e saídas digitais, 6 dos quais podendo enviar sinais modulados por largura de pulso (PWM). - 3 - Figura 1: Placa Arduino Uno
  • 11. Relatório da Prova de Aptidão Profissional – Carlos Moço O Arduino Uno difere das placas antecessoras por não utilizar o circuito integrado conversor USB-série da FTDI, mas sim o microcontrolador ATmega8U2 programado para conversor USB-série. A largura e o comprimento máximos da placa de circuito impresso (PCB) do Arduino Uno são 68,58 por 53,34mm respetivamente (2,7"x2,1"), com os conetores USB e de alimentação estendendo-se além destas dimensões. Existem quatro furos para permitirem que através de parafusos a placa seja fixada a uma superfície ou encapsulamento. A distância entre os pinos digitais 7 e 8 é de 160mil (milésimos de polegada ou 0,16"), não é múltiplo dos 100mil que separam os outros pinos. O Arduino Uno em si não possui qualquer recurso de rede, porém é comum combinar um ou mais Arduinos Unos. Utilizando extensões apropriadas chamadas de shields, ver figura 2, também o Arduino Uno pode ser usado para desenvolvimento de projetos interativos independentes, ou ainda para ser conectado a outros projetos. Este componente eletrónico goza de grande popularidade entre as pessoas entusiastas da eletrónica. Também os músicos e profissionais da arte digital utilizam imenso este microcontrolador. - 4 - Figura 2: Exemplo de shield para o Arduino Uno
  • 12. Relatório da Prova de Aptidão Profissional – Carlos Moço O Arduino Uno dá para fazer diversos projetos, como por exemplo: dá para fazer jogos e passatempos; robôs moveis; projetos que nos ajudam no dia a dia que possam ser controlados remotamente através de uma rede informática. Seguem-se algumas características relevantes: Entrada e saída – Cada um dos 14 pinos digitais no Arduino Uno pode ser usado como entrada ou saída usando as funções pinMode(), digitalWrite(), e digitalRead(). Estes pinos operam com 5V e cada pino pode fornecer ou receber uma corrente máxima de 40 mA, internamente existe uma resistência de pull-up de 20-50 kΩ que por defeito está desligada. Comunicação – O Arduino Uno, bem como outros Arduinos, possui diversas formas de comunicação com um computador, com outros Arduinos e mesmo com outros microcontroladores. Proteção de limite de corrente na porta USB – O Arduino Uno tem um fusível rearmável que protege a porta USB contra correntes elevadas o que adiciona mais uma camada de proteção para a porta USB. Enquanto a placa estiver em curto-circuito o fusível permanece aberto, fechando numa situação normal de utilização. Programação – O Arduino Uno pode ser programado com o software Arduino que se pode descarregar para qualquer sistema operativo Microsoft Windows, Mac OSX ou Linux (http://arduino.cc/en/Main/Software). Arduino Ethernet Shield O Arduino Ethernet Shield liga a uma rede informática ou à internet em poucos minutos. É só encaixar este módulo à placa do Arduino Uno, ligar à sua rede informática através de um cabo de pares entrançados UTP com ficha RJ45 macho, e seguir algumas instruções simples para começar a controlar o que desejar através da internet. O Arduino Ethernet Shield necessita de uma placa Arduino Uno ou Mega para funcionar. Este módulo possui uma ranhura para inserir um cartão micro-SD, que pode ser usado para armazenar ficheiros para envio através da rede. - 5 -
  • 13. Relatório da Prova de Aptidão Profissional – Carlos Moço Arduino Mega ADK O Arduino Mega ADK é uma placa baseada no microcontrolador ATmega2560. Possui uma interface USB baseada no circuito integrado MAX3421 para ligação a tablets ou telemóveis - 6 - Figura 3: Arduino Ethernet Shield Figura 4: Arduino Mega ADK
  • 14. Relatório da Prova de Aptidão Profissional – Carlos Moço Android. O módulo possui 16 entradas analógicas e ainda 54 pinos que podem funcionar como entradas ou saídas digitais, dos quais 14 podem ser usados como saídas em modulação por largura de pulso (PWM). O Arduino Mega ADK pode ser alimentado através da ligação USB ou com uma fonte de alimentação independente. A fonte de energia é selecionada automaticamente. Arduino Motor Shield O Arduino Motor Shield é baseado no L298, que é uma ponte em H dupla, concebidas para cargas indutivas, como relés, eletroímanes, motores de corrente contínua e motores passo a passo. Este módulo permite comandar até dois motores de corrente contínua ou um motor passo a passo, controlando a velocidade e a direção de cada um de forma independente. O Arduino Motor Shield deve ser alimentado apenas por uma fonte de alimentação separada, porque o circuito integrado L298 montado na shiled tem duas ligações de alimentação separadas, uma para a lógica (5V) e a outra para a alimentação do motor (Vin). - 7 - Figura 5: Arduino Motor Shield
  • 15. Relatório da Prova de Aptidão Profissional – Carlos Moço Gameduino Gameduino é um adaptador de jogos para Arduino Uno (ou qualquer outra placa com uma interface SPI) que funciona como uma simples shield que se monta sobre o Arduino e conta com uma saída para ligação a monitores de vídeo VGA e outra com som estéreo. Para evitar possíveis danos para a placa Arduino em que a shield está montada, recomenda-se a utilização de uma fonte de alimentação externa que forneça uma tensão entre 7 e 12V. 2.2. Métodos e técnicas utilizadas Primeiro que tudo comecei a fazer o esquemático para ligar 64 LEDs numa matriz 8x8 no programa EAGLE, depois de concluído o esquemático, comecei a desenhar as duas placas de - 8 - Figura 6: Arduino Uno (em baixo) com as shields Ethernet (no meio) e VGA (em cima)
  • 16. Relatório da Prova de Aptidão Profissional – Carlos Moço circuito impresso, a dos LEDs e a shield a encaixar no Arduino Uno. Depois comecei a testar vários circuitos em protoboard ligados ao Arduino Uno. Basicamente com LEDs, resistências e potenciómetros. O objetivo era aprender como as coisas funcionavam. Para cada exemplo desenvolvi o código em linguagem C no programa Arduino a correr no sistema operativo Linux/Ubuntu. 2.3. Execução do projeto O esquemático que elaborei pode ser observado na figura, nele se pode ver a matriz de LEDs 8x8, com os ânodos ligados por linha, os cátodos por coluna e os dois potenciómetros que ligam às entradas analógicas A4 e A5 e permitem a interação com o Arduino Uno. - 9 - Figura 7: Esquemático elaborado no EAGLE
  • 17. Relatório da Prova de Aptidão Profissional – Carlos Moço Depois de ter concluído o esquemático desenhei também no EAGLE duas placas de circuito impresso, uma para o mostrador de LEDs e a outra para encaixar como shield no Arduino Uno. Tiveram de ser de dupla face devido à existência de muitas ligações. Seguem-se as respetivas imagens, as figuras 8 e 9 referem-se ao mostrador de LEDs, as figuras 10 e 11 referem-se à shield para o Arduino Uno e as figuras 12 e 13 dizem respeito à disposição dos vários componentes em ambas as placas. - 10 - Figura 8: Desenho da placa de circuito impresso do mostrador - lado dos componentes
  • 18. Relatório da Prova de Aptidão Profissional – Carlos Moço - 11 - Figura 9: Desenho da placa de circuito impresso do mostrador - lado das soldaduras Figura 10: Desenho da placa de circuito impresso da shield - face superior Figura 11: Desenho da placa de circuito impresso da shield - face inferior
  • 19. Relatório da Prova de Aptidão Profissional – Carlos Moço - 12 - Figura 12: Disposição dos componentes na placa de circuito impresso do mostrador Figura 13: Disposição dos componentes na placa de circuito impresso da shield
  • 20. Relatório da Prova de Aptidão Profissional – Carlos Moço Na tabela 1 apresento a lista de material que utilizei no meu projeto. Tabela 1 – Lista de material Item n.º Nome Quantidade Descrição/Valor 1 SV1, SV2 2 Ligador com 2x8 pinos 2 R16, R17 2 Potenciómetro de 10kΩ linear 3 R1, R2, R3, R4, R5, R6, R7, R8 8 Resistência de 10kΩ 1/4W 4 D1, D2, D3, D4, D5, D6, D7, D8, D9, D10, …, D60, D61, D62, D63, D64 64 LED Ø5mm vermelho 5 JP1, JP2, JP3, JP4 4 Ligador de 3 pinos 2.4. Código-fonte desenvolvido Depois de desenhar os esquemáticos e as placas de circuito impresso, passei para a programação do microcontrolador do Arduino Uno, não sem antes ter montado numa protoboard um circuito simples para testes, conforme figura 14, cuja fotografia se encontra na figura 15. - 13 -
  • 21. Relatório da Prova de Aptidão Profissional – Carlos Moço - 14 - Figura 14: Esquemático do circuito para testes Figura 15: Circuito de testes montado em protoboard
  • 22. Relatório da Prova de Aptidão Profissional – Carlos Moço Seguidamente descarreguei da internet o programa que se chama Arduino 1.0, onde desenvolvi o código-fonte em linguagem C para alguns exemplos, que se transcreve de seguida: Exemplo 1 /* Nome do programa: pisca4.ino Descrição: Pisca o LED ligado ao pino 4 do Arduino Uno. Autor(es): 17464 - Carlos Daniel Bajouco Martins Moço Turma: 3.º ET Disciplina: Prova de Aptidão Profissional (PAP) Curso: C P de Técnico de Eletrónica e Telecomunicações Escola: Escola Secundária Afonso Lopes Vieira Data: 26/04/2012 */ /* função de inicialização do microcontrolador, executada uma só vez */ void setup() { // configura o pino digital 4 do Arduino como saída pinMode(4, OUTPUT); } /* função principal do programa, executada continuamente */ void loop() { digitalWrite(4, HIGH); // acende o LED delay(500); // aguarda meio segundo - 15 -
  • 23. Relatório da Prova de Aptidão Profissional – Carlos Moço digitalWrite(4, LOW); // apaga o LED delay(500); // aguarda meio segundo } Exemplo 2 /* Nome do programa: pisca4.ino Descrição: Pisca o LED ligado ao pino 4 do Arduino Uno. Autor(es): 17464 - Carlos Daniel Bajouco Martins Moço Turma: 3.º ET Disciplina: Prova de Aptidão Profissional (PAP) Curso: C P de Técnico de Eletrónica e Telecomunicações Escola: Escola Secundária Afonso Lopes Vieira Data: 26/04/2012 */ /* função de inicialização do microcontrolador, executada uma só vez */ void setup() { // configura o pino digital 4 do Arduino como saída pinMode(4, OUTPUT); } /* função principal do programa, executada continuamente */ void loop() { digitalWrite(4, HIGH); // acende o LED delay(500); // aguarda meio segundo digitalWrite(4, LOW); // apaga o LED - 16 -
  • 24. Relatório da Prova de Aptidão Profissional – Carlos Moço delay(500); // aguarda meio segundo } Exemplo 3 /* Nome do programa: pisca451011.ino Descrição: Pisca os LEDs ligados aos pinos 4, 5, 10 e 11 do Arduino Uno, na sequência 4 -> 5 -> 10 -> 11 -> 10 -> 5 -> 4 -> 5 -> ... Autor(es): 17464 - Carlos Daniel Bajouco Martins Moço Turma: 3.º ET Disciplina: Prova de Aptidão Profissional (PAP) Curso: C P de Técnico de Eletrónica e Telecomunicações Escola: Escola Secundária Afonso Lopes Vieira Data: 26/04/2012 */ /* função de inicialização do microcontrolador, executada uma só vez */ void setup() { // configura os pinos digitais 4, 5, 10 e 11 do Arduino como saídas pinMode(4, OUTPUT); pinMode(5, OUTPUT); pinMode(10, OUTPUT); pinMode(11, OUTPUT); } - 17 -
  • 25. Relatório da Prova de Aptidão Profissional – Carlos Moço /* função principal do programa, executada continuamente */ void loop() { digitalWrite(4, HIGH); // acende o LED ligado ao pino 4 digitalWrite(5, LOW); // apaga o LED ligado ao pino 5 digitalWrite(10, LOW); // apaga o LED ligado ao pino 10 digitalWrite(11, LOW); // apaga o LED ligado ao pino 11 delay(500); // aguarda meio segundo digitalWrite(4, LOW); // apaga o LED ligado ao pino 4 digitalWrite(5, HIGH); // acende o LED ligado ao pino 5 digitalWrite(10, LOW); // apaga o LED ligado ao pino 10 digitalWrite(11, LOW); // apaga o LED ligado ao pino 11 delay(500); // aguarda meio segundo digitalWrite(4, LOW); // apaga o LED ligado ao pino 4 digitalWrite(5, LOW); // apaga o LED ligado ao pino 5 digitalWrite(10, HIGH); // acende o LED ligado ao pino 10 digitalWrite(11, LOW); // apaga o LED ligado ao pino 11 delay(500); // aguarda meio segundo digitalWrite(4, LOW); // apaga o LED ligado ao pino 4 digitalWrite(5, LOW); // apaga o LED ligado ao pino 5 digitalWrite(10, LOW); // apaga o LED ligado ao pino 10 digitalWrite(11, HIGH); // acende o LED ligado ao pino 11 delay(500); // aguarda meio segundo digitalWrite(4, LOW); // apaga o LED ligado ao pino 4 digitalWrite(5, LOW); // apaga o LED ligado ao pino 5 digitalWrite(10, HIGH); // acende o LED ligado ao pino 10 digitalWrite(11, LOW); // apaga o LED ligado ao pino 11 delay(500); // aguarda meio segundo digitalWrite(4, LOW); // apaga o LED ligado ao pino 4 digitalWrite(5, HIGH); // acende o LED ligado ao pino 5 digitalWrite(10, LOW); // apaga o LED ligado ao pino 10 digitalWrite(11, LOW); // apaga o LED ligado ao pino 11 delay(500); // aguarda meio segundo } Exemplo 4 - 18 -
  • 26. Relatório da Prova de Aptidão Profissional – Carlos Moço /* Nome do programa: potenciometro4.ino Descrição: Pisca os LEDs ligados aos pinos 4, 5, 10 e 11 do Arduino Uno, na sequência 4 -> 5 -> 10 -> 11 -> 10 -> 5 -> 4 -> 5 -> ... A velocidade da sequência de acendimentos é ajustada através de um potenciómetro ligado ao pino analógico A4. São também enviadas mensagens através da ligação série, que podem ser visualizadas com o Serial Monitor (Ctrl+Shift+M). Autor(es): 17464 - Carlos Daniel Bajouco Martins Moço Turma: 3.º ET Disciplina: Prova de Aptidão Profissional (PAP) Curso: C P de Técnico de Eletrónica e Telecomunicações Escola: Escola Secundária Afonso Lopes Vieira Data: 26/04/2012 */ /* declaração de constantes e variáveis */ int potPin = A4; // selec. o pino analógico ao qual está ligado o sensor int led1Pin = 4; // seleciona o pino digital ao qual está ligado o LED1 int led2Pin = 5; // seleciona o pino digital ao qual está ligado o LED2 int led3Pin = 10; // seleciona o pino digital ao qual está ligado o LED3 int led4Pin = 11; // seleciona o pino digital ao qual está ligado o LED4 int potValue = 0; // variável para guardar o valor analógico do sensor - 19 -
  • 27. Relatório da Prova de Aptidão Profissional – Carlos Moço /* função de inicialização do microcontrolador, executada uma só vez */ void setup() { Serial.begin(57600); // inicializa a linha de série para 57600bps Serial.println("Arduino@CPTET"); // envia mensagem através da linha série Serial.println("-------------"); // envia mensagem através da linha série // configura os pinos digitais onde estão ligados os LEDs como saídas pinMode(led1Pin, OUTPUT); pinMode(led2Pin, OUTPUT); pinMode(led3Pin, OUTPUT); pinMode(led4Pin, OUTPUT); } /* função principal do programa, executada continuamente */ void loop() { // lê o valor analógico presente no cursor do potenciómetro potValue = analogRead(potPin); // envia o valor lido através da linha de comunicação série Serial.write("Leitura: "); Serial.println(potValue, DEC); // faz a sequência de acendimentos digitalWrite(led1Pin, HIGH); // acende o LED1 digitalWrite(led2Pin, LOW); // apaga o LED2 digitalWrite(led3Pin, LOW); // apaga o LED3 digitalWrite(led4Pin, LOW); // apaga o LED4 delay(potValue); // aguarda algum tempo digitalWrite(led1Pin, LOW); // apaga o LED1 digitalWrite(led2Pin, HIGH); // acende o LED2 digitalWrite(led3Pin, LOW); // apaga o LED3 digitalWrite(led4Pin, LOW); // apaga o LED4 delay(potValue); // aguarda algum tempo digitalWrite(led1Pin, LOW); // apaga o LED1 digitalWrite(led2Pin, LOW); // apaga o LED2 digitalWrite(led3Pin, HIGH); // acende o LED3 digitalWrite(led4Pin, LOW); // apaga o LED4 delay(potValue); // aguarda algum tempo digitalWrite(led1Pin, LOW); // apaga o LED1 - 20 -
  • 28. Relatório da Prova de Aptidão Profissional – Carlos Moço digitalWrite(led2Pin, LOW); // apaga o LED2 digitalWrite(led3Pin, LOW); // apaga o LED3 digitalWrite(led4Pin, HIGH); // acende o LED4 delay(potValue); // aguarda algum tempo digitalWrite(led1Pin, LOW); // apaga o LED1 digitalWrite(led2Pin, LOW); // apaga o LED2 digitalWrite(led3Pin, HIGH); // acende o LED3 digitalWrite(led4Pin, LOW); // apaga o LED4 delay(potValue); // aguarda algum tempo digitalWrite(led1Pin, LOW); // apaga o LED1 digitalWrite(led2Pin, HIGH); // acende o LED2 digitalWrite(led3Pin, LOW); // apaga o LED3 digitalWrite(led4Pin, LOW); // apaga o LED4 delay(potValue); // aguarda algum tempo } Exemplo 5 /* Nome do programa: potenciometro45.ino Descrição: Pisca os LEDs ligados aos pinos 4 e 5 do Arduino Uno a um ritmo ajustado pelo potenciómetro ligado à entrada A4. O potenciómetro ligado à entrada A5 ajusta a intensidade luminosa dos LEDs ligados aos pinos 10 e 11. Autor(es): 17464 - Carlos Daniel Bajouco Martins Moço Turma: 3.º ET Disciplina: Prova de Aptidão Profissional (PAP) - 21 -
  • 29. Relatório da Prova de Aptidão Profissional – Carlos Moço Curso: C P de Técnico de Eletrónica e Telecomunicações Escola: Escola Secundária Afonso Lopes Vieira Data: 26/04/2012 */ /* declaração de constantes e variáveis */ // seleciona o pino analógico ao qual liga o potenciómetro da temporização int pot1Pin = A4; // seleciona o pino analógico ao qual liga o potenciómetro da intensidade int pot2Pin = A5; int led1Pin = 4; // seleciona o pino digital ao qual está ligado o LED1 int led2Pin = 5; // seleciona o pino digital ao qual está ligado o LED2 int led3Pin = 10; // seleciona o pino digital ao qual está ligado o LED3 int led4Pin = 11; // seleciona o pino digital ao qual está ligado o LED4 // variável para guardar o valor analógico do potenciómetro da temporização int pot1Value = 0; // variável para guardar o valor analógico do potenciómetro da intensidade int pot2Value = 0; /* função de inicialização do microcontrolador, executada uma só vez */ void setup() { // configura os pinos digitais onde estão ligados os LEDs como saídas pinMode(led1Pin, OUTPUT); pinMode(led2Pin, OUTPUT); pinMode(led3Pin, OUTPUT); pinMode(led4Pin, OUTPUT); } /* função principal do programa, executada continuamente */ void loop() { // lê o valor analógico presente no cursor do potenciómetro ligado a A4 pot1Value = analogRead(pot1Pin); // lê o valor analógico presente no cursor do potenciómetro ligado a A5 pot2Value = analogRead(pot2Pin); pot2Value = pot2Value / 4; // cálculo para ajustar ao intervalo 0 .. 255 digitalWrite(led1Pin, HIGH); // acende o LED1 - 22 -
  • 30. Relatório da Prova de Aptidão Profissional – Carlos Moço digitalWrite(led2Pin, HIGH); // acende o LED2 analogWrite(led3Pin, pot2Value); // ajusta intensidade do LED3 analogWrite(led4Pin, pot2Value); // ajusta intensidade do LED4 delay(pot1Value); // aguarda algum tempo digitalWrite(led1Pin, LOW); // apaga o LED1 digitalWrite(led2Pin, LOW); // apaga o LED2 analogWrite(led3Pin, pot2Value); // ajusta intensidade do LED3 analogWrite(led4Pin, pot2Value); // ajusta intensidade do LED4 delay(pot1Value); // aguarda algum tempo } Exemplo 6 /* Nome do programa: movimento45.ino Descrição: Sinaliza a rotação anti-horária do cursor do potenciómetro 1 acendendo o LED 1, enquanto a rotação horária é sinalizada pelo LED 2. Sinaliza a rotação anti-horária do cursor do potenciómetro 2 acendendo o LED 3, enquanto a rotação horária é sinalizada pelo LED 4. Não havendo movimento dos cursores dos potenciómetros todos os LEDs mantém-se apagados. Autor(es): 17464 - Carlos Daniel Bajouco Martins Moço Turma: 3.º ET Disciplina: Prova de Aptidão Profissional (PAP) Curso: C P de Técnico de Eletrónica e Telecomunicações Escola: Escola Secundária Afonso Lopes Vieira - 23 -
  • 31. Relatório da Prova de Aptidão Profissional – Carlos Moço Data: 26/04/2012 */ /* declaração de constantes e variáveis */ // seleciona o pino analógico ao qual está ligado o potenciómetro 1 int pot1Pin = A4; // seleciona o pino analógico ao qual está ligado o potenciómetro 2 int pot2Pin = A5; // seleciona o pino digital ao qual está ligado o LED1 int led1Pin = 4; // seleciona o pino digital ao qual está ligado o LED2 int led2Pin = 5; // seleciona o pino digital ao qual está ligado o LED3 int led3Pin = 10; // seleciona o pino digital ao qual está ligado o LED4 int led4Pin = 11; // variável para guardar o valor analógico do potenciómetro 1 int pot1Value = 0; // variável para guardar o valor analógico do potenciómetro 2 int pot2Value = 0; // variável para guardar o valor analógico anterior do potenciómetro 1 int pot1ValueOld = pot1Value; // variável para guardar o valor analógico anterior do potenciómetro 2 int pot2ValueOld = pot2Value; int potGap = 1; // define a sensibilidade para evitar o ruído nas leituras /* função de inicialização do microcontrolador, executada uma só vez */ void setup() { // configura os pinos digitais onde estão ligados os LEDs como saídas pinMode(led1Pin, OUTPUT); pinMode(led2Pin, OUTPUT); pinMode(led3Pin, OUTPUT); pinMode(led4Pin, OUTPUT); } /* função principal do programa, executada continuamente */ void loop() { - 24 -
  • 32. Relatório da Prova de Aptidão Profissional – Carlos Moço // lê os valores analógicos dos potenciómetros 1 e 2 pot1Value = analogRead(pot1Pin); pot2Value = analogRead(pot2Pin); if (pot1Value < (pot1ValueOld - potGap)) { digitalWrite(led1Pin, HIGH); } if (pot1Value > (pot1ValueOld + potGap)) { digitalWrite(led2Pin, HIGH); } if (pot2Value < (pot2ValueOld - 2)) { digitalWrite(led3Pin, HIGH); } if (pot2Value > (pot2ValueOld + 2)) { digitalWrite(led4Pin, HIGH); } delay(100); // aguarda algum tempo // apaga todos os LEDs digitalWrite(led1Pin, LOW); digitalWrite(led2Pin, LOW); digitalWrite(led3Pin, LOW); digitalWrite(led4Pin, LOW); // guarda os valores lidos para futura comparação pot1ValueOld = pot1Value; pot2ValueOld = pot2Value; } - 25 -
  • 33. Relatório da Prova de Aptidão Profissional – Carlos Moço 3. Conclusão O meu projeto consistiu em falar sobre o Arduino Uno, para conseguir concluir este projeto foi preciso ter uma grande capacidade de autonomia e persistência, aspetos esses que se foram desenvolvendo à medida que o concebia, planeava e executava. A execução do projeto da Prova de Aptidão Profissional envolveu um grande esforço e dedicação. Para além das competências técnicas e diversas capacidades que o trabalho exigiu, penso que foi benéfico para mim a nível profissional e a nível social, uma vez que no futuro irei enfrentar outros projetos tão ou mais importante que este. Naturalmente que, no decorrer da realização do projeto da Prova de Aptidão Profissional senti diversas dificuldades, as quais só puderam ser ultrapassadas com a capacidade de trabalho que foi desenvolvida em mim, com o apoio do professor Paulo Santos e da colaboração de alguns dos meus colegas. - 26 -
  • 34. Relatório da Prova de Aptidão Profissional – Carlos Moço Bibliografia [1] Ping Pong com Matriz de Leds 8×8 e Arduino | Bruno Soares, acedido a 20 de setembro de 2011, em http://blog.bsoares.com.br/arduino/ping-pong-with-8x8-led- matrix-on-arduino. [2] Snake on a 8x8 led matrix – Arduino Forum, acedido a 27 de setembro de 2011, em http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1265668103. [3] Arduino LCD Super Mario Game – YouTube, acedido a 27 de setembro de 2011, em http://www.youtube.com/watch?v=qxJvsL6ES0k. [4] Aprenda Arduino: Robótica para Iniciantes / robotics for beginners – YouTube, acedido a 25 de outubro de 2011, em http://www.youtube.com/watch? v=KZUrO9aXGh0. [5] Arduino + Servo Motor + Wireless Playstation Controller – YouTube, acedido a 03 de novembro de 2011, em http://www.youtube.com/watch?v=J85aui2W4mY. [6] led matrix Snake - arduino powered – YouTube, acedido a 03 de novembro de 2011, em http://www.youtube.com/watch?v=q0Wz8jydeAo. [7] Sítio de internet do Arduino, acedido a entre 27 de setembro de 2011 a 26 de abril de 2012, em http://www.arduino.cc/. [8] Gameduino: Consola de Jogos para Arduino – Loja Virtual da Aliatron, acedido a 22 de março de 2012, em http://aliatron.com/loja/catalog/product_info.php? products_id=1161. - 27 -
  • 35. Relatório da Prova de Aptidão Profissional – Carlos Moço - 28 - Anexos
  • 36. Relatório da Prova de Aptidão Profissional – Carlos Moço Anexo 1 – O que é necessário para começar a explorar o Arduino - 29 - Arduino Uno Cabo USB AB
  • 37. Relatório da Prova de Aptidão Profissional – Carlos Moço - 30 - Fonte de alimentação de 9VAC 1,5A Outros componentes eletrónicos à medida das necessidades
  • 38. Relatório da Prova de Aptidão Profissional – Carlos Moço - 31 - Ferramenta de programação do Arduino, descarregar de http://arduino.cc/en/Main/Software