Académique Documents
Professionnel Documents
Culture Documents
Minicurso
1a Edicao
Campina Grande, Setembro de 2016
Introducao a Plataforma Arduino
PET Eletrica
Autores: Barbara Nicoly Menezes de Oliveira
Emilly Rennale Freitas de Melo
Giuseppe Di Giuseppe Deininger
Jose Wemerson Farias Lima
Saul Borges Nobre
2
Sumario
1 Introducao 5
1.1 A plataforma Arduino . . . . . . . . . . . . . . . . . . . . . . . . 11
1.1.1 Hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.1.2 Software . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
1.1.3 Instalando Arduino . . . . . . . . . . . . . . . . . . . . . . 14
2 Iniciando 19
2.1 Organizando seu Sketch . . . . . . . . . . . . . . . . . . . . . . . 19
2.2 A IDE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.3 Anatomia de um sketch . . . . . . . . . . . . . . . . . . . . . . . 22
2.3.1 Setup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
2.3.2 O loop infinito . . . . . . . . . . . . . . . . . . . . . . . . 22
2.3.3 Comentando o codigo . . . . . . . . . . . . . . . . . . . . 23
2.4 Diferencas entre Analogico e Digital . . . . . . . . . . . . . . . . 25
2.5 Funcoes basicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.5.1 Funcao Serial . . . . . . . . . . . . . . . . . . . . . . . . . 26
2.5.2 Funcoes de entrada e sada digitais . . . . . . . . . . . . . 27
2.5.3 Funcoes de entrada e sada analogicas . . . . . . . . . . . 31
2.5.4 Funcao de sada PWM . . . . . . . . . . . . . . . . . . . . 40
3 Bibliotecas 43
3.1 Biblioteca Essencial . . . . . . . . . . . . . . . . . . . . . . . . . 43
3.2 Biblioteca Padrao . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
3.3 Biblioteca de Terceiros . . . . . . . . . . . . . . . . . . . . . . . . 44
3.4 Instalando uma nova biblioteca . . . . . . . . . . . . . . . . . . . 45
3.5 Shields . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
3.5.1 Shields de motor . . . . . . . . . . . . . . . . . . . . . . . 46
3.5.2 Shields de Ethernet e Wi-fi . . . . . . . . . . . . . . . . . 47
3.5.3 Shields de Prototipagem . . . . . . . . . . . . . . . . . . . 48
3
Introducao a Plataforma Arduino
Sumario PET Eletrica
5 Anexos 73
5.1 Informacoes tecnicas do Arduino UNO . . . . . . . . . . . . . . . 73
5.2 Comunicacao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
5.2.1 Plataforma Bluetooth do Arduino . . . . . . . . . . . . . 73
5.2.2 Fazendo a montagem com a conexao Bluetooth . . . . . . 74
4
Captulo 1
Introducao
5
Introducao a Plataforma Arduino
PET Eletrica
6
Introducao a Plataforma Arduino
PET Eletrica
7
Introducao a Plataforma Arduino
PET Eletrica
8
Introducao a Plataforma Arduino
PET Eletrica
publica os resultados no Twitter. Ele tem mais de 280 000 seguidores. Com
somente 14 anos, antecipou em um ano um projeto governamental.
Quando o acidente de Fukushima aconteceu, muitas pessoas no Japao
perceberam que grande parte das informacoes disponibilizadas pelo governo
com relacao aos nveis de radiacao nao eram de fato abertas e confiaveis.
Assim, eles criaram um contador Geiger juntamente com um Arduino e
uma interface de rede, espalhando cerca de 100 unidades dele pelo Japao, a
fim de que analisassem as condicoes locais e enviassem as informacoes para
o website Cosm em tempo real.
Ha tambem projetos feitos a nvel de diversao, como um que, pela analise
do feed do Twitter de uma famlia, e possvel determinar onde cada membro
esta, e com isso fez-se um relogio com Arduino como o da famlia Weasley
dos filmes de Harry Potter. E tudo necessario para fazer este relogio se
encontra online.
Um ultimo projeto importante de ser aludido e o Ardusat, que esteve
recentemente no Kickstarter. Trata-se de um satelite que realmente vai
para o espaco e e completamente open source, controlado por Arduino e
diversos sensores. Logo, se voce sabe usar um Arduino, voce pode realmente
desenvolver experimentos e carrega-los ao satelite, que realizaria testes no
espaco.
Sao por projetos como esses que se evidencia a importancia da revolucao
dita por Massimo Banzi e Limor Fried. As pessoas finalmente estao mais
confortaveis com a ideia de construir e hackear aquilo que precisam,
mesmo quando elas nao se identificam como criadoras - makers. O im-
pacto e tao forte e crescente que se estima que em dez anos, nos pases
desenvolvidos, as escolas tenham aulas de robotica mecatronica com tanta
importancia como se tem as de matematica.
Nao obstante tantos benefcios, pode-se questionar sobre as mudancas no
consumo, uma vez que as pessoas estao comecando a ter que escolher entre
produtos de manufatura tradicional ou por aqueles feitos pela manufatura
maker. O fato e que todos querem tecnologia bastante especializada, o que
nao e disponibilizado por grandes empresas, mas que agora sao capazes
de ter. Quando alguem faz um aparelho para si mesmo e o disponibiliza
para comunidade, nao e incomum que outras diversas pessoas tambem se
identifiquem e gostem do que foi criado. Nao e mais necessario se submeter
a tudo aquilo imposto por grandes companhias, os consumidores terao mais
escolhas feitas por pessoas parecidas com eles. No entanto, nao e uma
producao em larga escala a ponto de tentar produzir a nvel de mercado,
mas sim uma manufatura suficiente para suprir as necessidades de uma
pequena comunidade.
A revolucao do Open Source e do movimento Do it Yourself, portanto,
vai muito alem da Engenharia Eletrica e da Ciencia da Computacao: esta
mudando vidas. Afinal, dissera Limor Fried:
Nos fazemos Ciencia e nao temos ideia para que ela servira ate que
9
Introducao a Plataforma Arduino
PET Eletrica
alguem eventualmente descubra algo e diga, uau, isso vai ser util para a
eletricidade talvez sera como a tecnologia verde. Nos nao temos ideia.
Sera estranho e surpreendente, e nos estaremos chocados, mas sera fasci-
nante.
10
Introducao a Plataforma Arduino
1.1. A plataforma Arduino PET Eletrica
1.1.1 Hardware
A placa Arduino e um pequeno microcontrolador: circuito e chip principal.
Esse chip, que e o computador do Arduino, e de baixa performance comparado
a um computador convencional, mas e bem mais economico e muito util para
desenvolver dispositivos interessantes. No caso do Arduino Uno, o tipo mais
comum de Arduino, esse chip e o Atmega328.
Ha uma variedade de plataformas Arduino, todas baseadas em um chip mi-
croprocessador de 8 bits Atmel AVR. A primeira placa era baseada na Atmega8,
de velocidade de 16 MHz, com 8 Kb de memoria flash. Outras recentes versoes
de Arduino, como o Duemilanove e Uno, usam o Atmega328 com 32 Kb de
memoria flash e podem alternar automaticamente entre as fontes de alimentacao
do USB e CC. Ja a ultima versao e o Arduino Leonardo, que se destaca dos
outros pelo fato do chip responsavel pela conexao USB ser o mesmo que tambem
controla as outras atividades desempenhadas pela placa, enquanto ate os tipos
anteriores, cada placa tinha dois chips, sendo um especfico para o controle da
conexao USB, o Atmega16U2, e o outro seria o Atmega328, que nao processa
USB.
Assim, no Arduino Leonardo, os designers de microcontroladores finalmente
conseguiram desenvolver um unico chip capaz de controlar tanto o USB como
as demais aplicacoes do Arduino, resultando no ATmega32U4. Ja ha outros
Arduinos que utilizam do ATmega32U4, como o Arduino Yun, Arduino Esplora
e o robo Arduino. Para projetos que necessitam de mais memoria, ha como
opcoes os Arduino Mega1280 com 128 Kb de memoria ou o Arduino Mega2560,
mais recente, com 256Kb de memoria.
As placas Arduino tem 14 pinos digitais, em que cada um pode ser confi-
gurado como input ou output, e ha seis entradas analogicas. Alem disso, seis
dos pinos digitais podem ser programados para uma sada PWM (pulse with
11
Introducao a Plataforma Arduino
1.1. A plataforma Arduino PET Eletrica
14 pinos digitais de entrada e sada (pinos 0-13: Esses pinos podem ser
tanto de sada como de entrada. Entradas sao usadas para ler informacoes
de sensores, enquanto sadas controlam atuadores. No sketch e especifi-
cado qual o tipo desejado (entrada ou sada). Entradas digitais podem ler
apenas um dentre dois valores e sadas digitais lancam tambem um dentre
dois valores (High e Low).
Quanto a alimentacao da placa, ela pode ser feita pela porta USB de um
computador, um carregador USB ou um adaptador AC (recomenda-se 9 volts,
2.1 mm de ponta, centro positivo). Sempre que energia esteja sendo fornecida
ao socket de alimentacao, o Arduino a utilizara. Caso nao seja alimentado dessa
forma, o Arduino utilizara a energia promovida pela conexao USB. Por questoes
de seguranca, aconselha-se alimentar a placa tanto pelo socket de energia como
pelo USB.
Arduino UNO
Em 25 de setembro de 2010, O jantar esta servido era o ttulo do blog
que anunciava o Arduino Uno e Arduino Mega2560. Uno significa um em
italiano e foi escolhido como marco no lancamento do Software Arduino 1.0,
a IDE. As placas Arduino e a versao 1.0 da IDE foram as referencias para
as versoes de Arduino seguintes. A placa UNO e a primeira de uma serie de
Arduinos com USB e modelo de referencia para a plataforma Arduino.
A maior diferenca entre o Uno e seus precessores e a inclusao do Atmega8U2,
microcontrolador programado como um conversor USB-serial, no lugar do ul-
trapassado FTDI, usado nas versoes anteriores. O Atmega8U2 pode ser repro-
gramado para dispor o Arduino como qualquer outro dispositivo USB, como um
12
Introducao a Plataforma Arduino
1.1. A plataforma Arduino PET Eletrica
mouse, teclado ou joystick. Outra diferenca e que o Uno e mais confiavel por
garantir a placa 3.3 volts, o que ajuda a manter a estabilidade de alguns shields
que apresentaram problemas no passado. A Figura 1.1 mostra o Arduino UNO.
Vin - A tensao de entrada para o Uno quando a placa esta usando uma
fonte externa. Pode-se aplicar uma tensao por esse pino ou, caso aplica-se
uma tensao externa pela power jack, esta pode ser acessada por este pino.
3.3V - Uma tensao de 3.3V, gerada pelo regulador, e promovida pela placa.
O maximo de corrente que se necessita e de 50mA.
GND - Sao pinos de aterramento (ground pins).
IOREF - Este pino no Uno garante uma tensao de referencia com a qual
o microcontrolador opera. Um shield propriamente configurado pode ler
a tensao no IOREF e selecionar a fonte de alimentacao apropriada ou
habilitar os tradutores de tensao de sada para trabalharem com 5V ou
3.3V.
13
Introducao a Plataforma Arduino
1.1. A plataforma Arduino PET Eletrica
O Arduino UNO e a melhor placa para iniciantes. Voce pode trabalhar com
o UNO sem se preocupar bastante em fazer algo errado. O pior dos casos e ter
de trocar o chip principal por alguns reais e comecar tudo de novo. Para mais
caractersticas tecnicas, veja o Anexo X.
1.1.2 Software
O Ambiente de Desenvolvimento Integrado (Integrated Development Envi-
ronment, IDE) do Arduino providencia tudo o que e necessario para programar
o Arduino, como tambem inclui programas de exemplo que demonstram como
conectar e se comunicar com dispositivos comuns, coo LEDs, LCDs e senso-
res. A linguagem utilizada e a Processing, uma vez que e considerada bastante
simples, podendo ser amplamente utilizada por estudantes de areas nao ape-
nas da engenharia, como de artes e desing. E esse era o objetivo. Ao fazer
um programa, ou sketch, e carrega-lo (upload) na placa, o codigo e tradu-
zido para linguagem C e entao passa por um compilador, que, por fim, leva
o codigo para a linguagem de maquina. O software responsavel por todo esse
processo, IDE Arduino, como o hardware, e open source e pode ser baixado
no site http://arduino.cc/en/Main/Software. Necessita-se apenas atentar se a
versao a baixar e a propcia para o seu sistema. Sao disponibilizadas versoes
para Windows, Mac OS X e Linux.
14
Introducao a Plataforma Arduino
1.1. A plataforma Arduino PET Eletrica
15
Introducao a Plataforma Arduino
1.1. A plataforma Arduino PET Eletrica
porta COM esta relacionada com o Arduino, deve-se selecionar a porta no menu
Ferramentas Porta Serial na IDE do Arduino.
Finalmente, basta apenas verificar se a IDE esta configurada para o seu tipo
de placa. No menu de Ferramentas, na IDE Arduino, selecione Board e clique
em Arduino Uno (ou outro nome do tipo de placa a trabalhar).
16
Introducao a Plataforma Arduino
1.1. A plataforma Arduino PET Eletrica
17
Introducao a Plataforma Arduino
1.1. A plataforma Arduino PET Eletrica
18
Captulo 2
Iniciando
2.2 A IDE
A IDE fornece tudo o que voce precisa para escrever e carregar sketches
(programas) no Arduino.
Quando a IDE e carregada pela primeira vez, ela abre um sketch em branco;
para esse, e dado automaticamente um nome temporario com uma data de
referencia. O nome pode ser alterado pelo programador ao salvar o sketch. A
Figura 2.2 mostra a IDE que contem um sketch.
A barra de tarefas ao longo do topo do editor principal tem as seguintes
funcoes:
19
Introducao a Plataforma Arduino
2.2. A IDE PET Eletrica
20
Introducao a Plataforma Arduino
2.2. A IDE PET Eletrica
Por fim, o que o IDE realmente faz com o seu codigo? Quando voce pressiona
o botao carregar, ele verifica o codigo procurando erros e executa algumas
traducoes mnimas para converter o sketch para um C++ valido. O codigo e
entao compilado, o que significa que e convertido numa forma de linguagem que
pode ser entendida pelo Arduino. O arquivo resultante e combinado com as
bibliotecas padroes do Arduino antes de ser carregado no seu hardware.
21
Introducao a Plataforma Arduino
2.3. Anatomia de um sketch PET Eletrica
2.3.1 Setup
Tarefas basicas que voce deve fazer no setup incluem a inicializacao dos pi-
nos digitais definindo-os como INPUT ou OUTPUT e definicao da taxa
de transmissao para a comunicacao serial.
void setup(){
pinMode(13,OUTPUT);
Serial.begin(9600);
}
O codigo de setup no Sketch 1.1 configura o pino 13 como uma sada e a co-
municacao serial a uma taxa de transmissao de 9.600 bps (bits por segundo). O
void antes do setup apenas significa que a funcao nao retorna um valor. Mesmo
que voce nao tenha algo a configurar, a rotina e ainda requerida ou um erro sera
gerado ao verificar ou carregar um sketch. Apenas digite uma funcao vazia com
um comentario no codigo:
void setup(){
//nada para configurar
}
22
Introducao a Plataforma Arduino
2.3. Anatomia de um sketch PET Eletrica
void loop(){
digitalWrite(13,LOW);
23
Introducao a Plataforma Arduino
2.3. Anatomia de um sketch PET Eletrica
/*
Data de criac~
ao: 1 de Setembro de 2009
Vers~
ao 1.0 */
Comentarios de linha unica espalhados por todo o sketch permitirao que voce
veja rapidamente o que as partes individuais do codigo fazem. Voce nao precisa
comentar cada parte do codigo, somente lugares onde acha que ajudaria alguem
a entender o codigo no futuro. Provavelmente e melhor ter muitos comentarios
do que poucos. O Sketch seguinte mostra alguns comentarios de codigos tpicos.
void setup() {
Serial.begin(9600);
/* voc^
e pode tambem escrever caracteres ASCII em aspas simples.
24
Introducao a Plataforma Arduino
2.4. Diferencas entre Analogico e Digital PET Eletrica
Vref
R= 2n ,
25
Introducao a Plataforma Arduino
2.5. Funcoes basicas PET Eletrica
Serial.begin(9600);
Aqui a variavel inteira total vai guardar o numero de caracteres que estao
disponveis para leitura na porta serial.
A funcao Serial.read( ) le o primeiro byte que esta no buffer da porta
serial. O valor (-1) e retornado quando nao ha nenhuma informacao para ser
resgatada na porta serial. Exemplo:
Aqui a variavel inteira valor vai guardar o primeiro byte (caracter) que
esta disponvel para leitura na porta serial.
Tem-se tambem a funcao Serial.print(valor, formato), que envia para
a porta serial um caracter ASCII, que pode ser capturado por um terminal de
comunicacao. O segundo parametro e opcional e especifica com quantas casas
decimais ou com que base numerica vai ser o numero transmitido. Exemplo:
26
Introducao a Plataforma Arduino
2.5. Funcoes basicas PET Eletrica
Programa Teste 1
void setup( ){
Serial.begin(9600); //inicia a porta serial em 9600 bps
}
void loop( ){
Serial.print(\Retorno de available( ): \); //envia frase
//ao terminal
Serial.println(Serial.available()); //transmite total de
//bytes disponveis
delay(1000); //pausa 1s
Serial.print(\Retorno de read( ): \); //envia frase
Serial.println(Serial.read()); //transmite o primeiro byte
//disponvel na porta
delay(1000);
}
pinMode(2, OUTPUT);
27
Introducao a Plataforma Arduino
2.5. Funcoes basicas PET Eletrica
Uma vez configurado um certo pino como entrada com a funcao pinMode(),
a informacao presente nesse pino pode ser lida com a funcao digitalRead() e
armazenada em uma variavel qualquer. Exemplo:
digitalWrite(2, HIGH);
28
Introducao a Plataforma Arduino
2.5. Funcoes basicas PET Eletrica
void setup() {
pinMode(13, OUTPUT);
}
void loop() {
digitalWrite(13, HIGH);
delay(1000);
digitalWrite(13, LOW);
delay(1000);
}
Voce esta atribuindo o pino digital 13 como uma sada e, em seguida, voce
entra em um loop no qual algum codigo muda o pino 13 para HIGH ou LOW
durante um segundo. O valor do atraso e dado em milissegundos, entao mil
milissegundos lhe da um atraso de tempo de um segundo.
O codigo:
29
Introducao a Plataforma Arduino
2.5. Funcoes basicas PET Eletrica
/*LED piscante
void setup(){
pinMode(ledPin, OUTPUT); // configura pino digital como sada
}
void loop()
{
digitalWrite(ledPin, HIGH); // liga o LED
delay(1000); // temporiza 1 segundo
digitalWrite(ledPin, LOW); // desliga o LED
delay(1000); // aguarda mais um segundo
}
Programa Teste 3
void setup() {
pinMode(2,OUTPUT); //LED no pino 2 como sada
30
Introducao a Plataforma Arduino
2.5. Funcoes basicas PET Eletrica
void loop() {
digitalWrite(2, digitalRead(3)); //led (pino2) acende se a
// chave (pino3) for pressionada.
}
31
Introducao a Plataforma Arduino
2.5. Funcoes basicas PET Eletrica
Exemplo:
Veja o circuito abaixo. Conectamos tres fios a placa Arduino. O primeiro vai
do terra a partir do terminal esquerdo do potenciometro (ele possui geralmente
tres terminais). O segundo fio vai dos 5 volts ao terminal direito. O terceiro e
ultimo fio vai da entrada analogica A5 ao terminal central do potenciometro de
acordo com o circuito da figura 5.3.
Se girarmos o cursor do potenciometro, alteramos a resistencia em cada
lado do contato eletrico que vai conectado ao terminal central do botao. Isso
provoca a mudanca na proximidade do terminal central aos 5 volts ou ao terra,
o que implica numa mudanca no valor analogico de entrada. Quando o cursor
for levado ate o final da escala, teremos por exemplo zero volts a ser fornecido
ao pino de entrada do Arduino e, assim, ao le-lo obteremos 0. Quando giramos
o cursor ate o outro extremo da escala, havera 5 volts a ser fornecido ao pino
do Arduino e, ao le-lo, teremos 1023. Em qualquer posicao intermediaria do
cursor, teremos um valor entre 0 e 1023, que sera proporcional a tensao eletrica
sendo aplicada ao pino do Arduino.
32
Introducao a Plataforma Arduino
2.5. Funcoes basicas PET Eletrica
Materiais:
Arduino UNO;
Potenciometro de 10k .
Circuito:
Codigo:
33
Introducao a Plataforma Arduino
2.5. Funcoes basicas PET Eletrica
Materiais:
1 LED Vermelho;
1 Resistor de 220;
I potenciometro 10k;
1 Arduino Uno.
Circuito:
34
Introducao a Plataforma Arduino
2.5. Funcoes basicas PET Eletrica
Codigo:
void setup(){
void loop() {
val = analogRead(potPin); // ler o valor do potenci^
ometro
digitalWrite(ledPin, HIGH); // ligar o ledPin
delay(val); // pausar o programa por algum tempo
digitalWrite(ledPin, LOW); // desligar o ledPin
delay(val); // pausar o programa por algum tempo
}
35
Introducao a Plataforma Arduino
2.5. Funcoes basicas PET Eletrica
Materiais:
1 Resistor de 1M;
1 Transdutor piezoeletrico;
1 Arduino Uno.
Circuito:
36
Introducao a Plataforma Arduino
2.5. Funcoes basicas PET Eletrica
Esquema:
Codigo:
/*Toc-toc
* por DojoDave <http://www.0j0.org>
*
* Programa que usa um elemento piezoeletrico como se
* fosse um sensor de batidas a porta.
*
* Basicamente temos que escutar a um pino analogico e
* detectar se o sinal ultrapassa um certo limiar. Escreve-se
* "Toc-toc" a porta serial nesse caso e altera-se o estado
* do LED no pino 13.
*
* http://www.arduino.cc/en/Tutorial/Knock
*/
37
Introducao a Plataforma Arduino
2.5. Funcoes basicas PET Eletrica
//LED
int THRESHOLD = 100; //valor limiar que decide quando o som
//detectado e uma batida
void setup() {
pinMode(ledPin, OUTPUT); //declarar o ledPin como sada
Serial.begin(9600); //usar a porta serial
}
void loop() {
val = analogRead(knockSensor); //ler o sensor e
//guarda-lo em "val"
if (val >= THRESHOLD) {
statePin = !statePin; //mudar o estado de ledPin
digitalWrite(ledPin, statePin); //liga ou desliga o LED
Serial.println("Toc-toc"); //envia a frase
//"Toc-toc" ao computador
delay(10); //pequena espera para evitar
//sobrecarga na sada serial
}
}
Materiais:
1 Resistor de 1M;
1 Resistor de 1k;
1 Transdutor piezoeletrico;
1 Alto-Falante de 0.8;
1 Arduino Uno.
Circuito:
38
Introducao a Plataforma Arduino
2.5. Funcoes basicas PET Eletrica
Esquema:
39
Introducao a Plataforma Arduino
2.5. Funcoes basicas PET Eletrica
int sensorPin = 0;
int sensorValue = 0;
int threshold = 200;
int toneDuration = 40;//Denota por quanto tempo um tom e
//emitido em milissegundos
int toneFrequency = 262; //Ajusta a frequ^
encia do tom sendo
//emitido em Hertz
int speakerPin = 8; //Define o pino ao qual o alto-falante e
//conectado
void setup() {
}
void loop(){
sensorValue = analogRead(sensorPin);
if(sensorValue > threshold){
tone(speakerPin, toneFrequency, toneDuration);
}
}
Obs.: Neste sketch esta sendo uma das bibliotecas embutidas do Arduino:
tone. A qual pode receber tres argumento: tone(pin, frequency, duration). Se
o parametro duration nao for definido, o tom sera emitido ate que um comando
noTone seja enviado a ele: noTone(pin).
analogWrite(10, 128);
Com esses parametros, uma tensao analogica de 2,5V vai aparecer no pino
10. E valido dizer tambem que nao e necessario configurar um pino PWM
como sada com a funcao pinMode() quando se chama a funcao analogWrite().
40
Introducao a Plataforma Arduino
2.5. Funcoes basicas PET Eletrica
lation), e uma tecnica usada para gerar tensoes analogicas a partir de uma
sequencia de pulsos digitais e sera melhor abordada na secao Inputs e Outputs
avancados.
Programa Teste 8
41
Introducao a Plataforma Arduino
2.5. Funcoes basicas PET Eletrica
42
Captulo 3
Bibliotecas
43
Introducao a Plataforma Arduino
3.2. Biblioteca Padrao PET Eletrica
gital, voce precisa apenas usar o digitalRead. Outras funcoes comuns incluem
digitalWrite e analogRead.
Biblioteca ArduinoTestSuite;
Biblioteca EEPROM;
Biblioteca SD;
Biblioteca Ethernet;
Biblioteca Firmata;
Biblioteca LiquidCrystal;
Biblioteca Stepper;
Biblioteca Servo;
Biblioteca SPI;
Biblioteca Wire;
Biblioteca SoftwareSerial.
44
Introducao a Plataforma Arduino
3.4. Instalando uma nova biblioteca PET Eletrica
45
Introducao a Plataforma Arduino
3.5. Shields PET Eletrica
3.5 Shields
Um dos fatores determinantes para a enorme versatilidade e popularidade da
plataforma Arduino sao os shields (escudos, em portugues). Shields sao placas
de hardware plugaveis que se conectam em um Arduino. Essas placas podem
conter displays de LCD, sensores, modulos de comunicacao ou reles, por exem-
plo. Muitos deles possuem seus proprios conectores, podendo ser empilhados
uns sobre os outros. Para extrair o maximo que um shield pode oferecer, na
maioria dos casos e necessario o uso de bibliotecas adicionais, sendo essas dis-
ponibilizadas pelo desenvolvedor ou fabricante do shield. E possvel adquirir
shields ja montados no mercado, ou desenvolver um do zero, para um projeto
especfico.
Alguns dos Shields mais comuns disponveis sao:
Shields de motor;
Shields de prototipagem .
46
Introducao a Plataforma Arduino
3.5. Shields PET Eletrica
47
Introducao a Plataforma Arduino
3.5. Shields PET Eletrica
(a) (b)
Figura 3.3: (a) Arduino Ethernet Shield sendo encaixado no Arduino Uno; (b)
Modulo Ethernet Shield.
48
Introducao a Plataforma Arduino
3.5. Shields PET Eletrica
(a) (b)
Figura 3.4: (a) Arduino Proto Shield; (b) Adafruit Proto Shield para o Arduino
Kit.
Por fim, antes de trabalhar com shields, e interessante tomar cuidado com
os seguintes fatores:
Quais pinos sao usados por shields individuais afim de verificar a compa-
tibilidade entre os shields que se deseja utilizar no projeto;
A compatibilidade do shield com o seu Arduino, por exemplo: alguns nao
trabalham com o Arduino Mega ou requerem modificacoes para trabalhar
com ele.
49
Introducao a Plataforma Arduino
3.5. Shields PET Eletrica
50
Captulo 4
4.1 Sensores
4.1.1 Detectando Objetos com ultrasom
Primeiramente, entenderemos como um sensor ultrassonico funciona. O seu
princpio e o mesmo de um sonar, em que sera emitido um som e depois cap-
tado o seu eco. Com o tempo da resposta desse eco, podemos obter o quao
longe o objeto esta e se existe um objeto em uma determinada regiao a frente
do sensor.
O sensor e composto por componentes separados: um que ira a onda e outro
que ira captar o eco, e mais alguns outros componentes, incluindo um microcon-
trolador, que e responsavel por determinar o tempo que o dispositivo ira levar
entre o envio e recebimento da onda. Esse tempo e proporcional a uma tensao
que e aplicada. Cada sensor ira possuir uma caracterstica diferente depedendo
do fabricante.
51
Introducao a Plataforma Arduino
4.1. Sensores PET Eletrica
#include <Ultrasonic.h>
void setup()
{
//Inicializa a serial
Serial.begin(9600);
}
void loop()
{
//Variaveis para guardar os valores em
//cm (cmSec) e polegadas (inMsec)
float cmMsec, inMsec;
52
Introducao a Plataforma Arduino
4.1. Sensores PET Eletrica
Um arduino;
53
Introducao a Plataforma Arduino
4.1. Sensores PET Eletrica
void setup() {
pinMode(LED, OUTPUT); // Define o LED como sada
pinMode(SensorIR, INPUT); // Define o SensorIR como entrada
Serial.begin(9600);
void loop() {
Deteccao = digitalRead(SensorIR);
if (Deteccao == LOW)
{
Serial.println("OBSTACULO!!, OBSTACULO!!");
digitalWrite(LED, HIGH);
}
else
{
Serial.println("Tudo Limpo");
digitalWrite(LED, LOW);
}
delay(200);
}
54
Introducao a Plataforma Arduino
4.2. Controlando um LED com PWM PET Eletrica
55
Introducao a Plataforma Arduino
4.3. Monitor serial PET Eletrica
void setup()
{
pinMode ( LED, OUTPUT); //Pino 9 ajustado como sada
analogWrite (LED, 0); //saida inicia com o nivel em zero
}
void loop()
{
if (brilho < 255) //Se o valor de brilho for menor que 255
{
brilho++; //aumenta o valor de brilho em 1; ou 0,4% do
//Dutycicle
analogWrite (LED, brilho); //ajusta a sada do Pino 9 para o
//novo PWM
delay (30); //agurda 30 milisegundos
}
else //se o valor de brilho for maior ou igual a 255
{
brilho = 0; //o valor de brilho vai a zero
analogWrite (LED, brilho); //apaga o LED
delay(30); //Aguarda 30 milisegundos
}
}
56
Introducao a Plataforma Arduino
4.3. Monitor serial PET Eletrica
Funcao Descricao
available() Verifica a existencia de dados disponveis para leitura na porta serial
begin() Configura o baud rate da transmissao de dados
end() Encerra a comunicacao serial
println() Semelhante ao print(), porem, pula uma linha apos o envio dos dados
read() Le um caracter recebido pela porta serial
parseInt() Le o primeiro numero do tipo inteiro no buffer da porta serial
parseFloat() Le o primeiro numero do tipo float no buffer da porta serial
Exemplo 1:
int cont = 0;
void setup(){
Serial.begin(9600); //Iniciando a comunicac~
ao numa taxa de
//9600 baud
Serial.println("Contagem de loops executados desde o inicio
do codigo");
}
void loop() {
Serial.print("Valor: ");
Serial.println(cont);
delay(500);
cont++;
}
57
Introducao a Plataforma Arduino
4.3. Monitor serial PET Eletrica
Exemplo 2:
int recebido = 0;
void setup(){
Serial.begin(9600); //Iniciando a comunicac~
ao numa taxa de
//9600 baud
Serial.println("Leitura e impress~
ao de valores inteiros
enviados na porta serial");
}
void loop() {
if (Serial.available() > 0)
{
recebido = Serial.parseInt();
Serial.print("Valor recebido: ");
Serial.println(recebido);
}
Exemplo 3:
float recebido = 0;
void setup(){
Serial.begin(9600); //Iniciando a comunicac~
ao numa taxa de
//9600 baud
Serial.println("Leitura e impress~
ao de valores decimais
enviados na porta serial");
}
void loop() {
if (Serial.available() > 0)
{
recebido = Serial.parseFloat();
Serial.print("Valor recebido: ");
58
Introducao a Plataforma Arduino
4.3. Monitor serial PET Eletrica
Serial.println(recebido);
}
Exemplo 4:
char recebido;
void setup(){
Serial.begin(9600); //Iniciando a comunicac~
ao numa taxa de
//9600 baud
Serial.println("Leitura e impress~
ao de caracteres individuais
enviados na porta serial");
}
void loop() {
if (Serial.available() > 0)
{
recebido = Serial.read();
Serial.print("Valor recebido: ");
Serial.println(recebido);
}
Exemplo 5:
char recebido[50];
int cont = 0;
void setup(){
Serial.begin(9600); //Iniciando a comunicac~
ao numa taxa de
//9600 baud
Serial.println("Leitura e impress~
ao de caracteres individuais
enviados na porta serial");
}
59
Introducao a Plataforma Arduino
4.4. Motores PET Eletrica
void loop() {
if (Serial.available() > 0)
{
while (Serial.available() > 0)
{
recebido[cont] = Serial.read();
cont++;
delay(2);
}
Serial.print("Valor recebido: ");
Serial.println(recebido);
}
}
4.4 Motores
Cada um dos pinos da placa Arduino pode apenas ser usado para alimentar dis-
positivos que usam um valor muito baixo de corrente, como um LED. Caso voce
tente conectar algo maior, como um motor ou uma lampada incandescente, o
pino pode parar de funcionar e pode danificar permanentemente o microcontro-
lador, que e a base do Arduino. Para evitar essas situacoes, a corrente atraves
de um pino I/O de um Arduino deve ser limitada a 20 miliamperes.
Esse e um dos conhecimentos basicos necessarios para o sucesso desta secao,
que busca promover mobilidade para seus projetos por meio da apresentacao de
diversas maneiras de controlar os mais utilizados tipos de motores.
4.4.1 Motores DC
60
Introducao a Plataforma Arduino
4.4. Motores PET Eletrica
1 Transistor PN 2222;
1 Diodo N4001;
1 Protoboard;
1 Arduino UNO;
Fios.
Nota: Caso voce nao tenha certeza do quanto de corrente e requerida pelo
seu motor, que pode facilmente requerer 1000mA, mais que uma porta USB
consegue lidar, e aconselhavel alimentar o arduino por uma fonte externa alem
do USB.
61
Introducao a Plataforma Arduino
4.4. Motores PET Eletrica
62
Introducao a Plataforma Arduino
4.4. Motores PET Eletrica
63
Introducao a Plataforma Arduino
4.4. Motores PET Eletrica
pino e um dos identificados como de PWM (3, 5, 6, 9,10 ou 11, em uma placa
Uno tradicional).
Codigo:
1. /*
2. Montagem : Controlando um motor DC
3. */
4.
5.
6. int motorPin = 3;
7.
8. void setup()
9. {
10. pinMode(motorPin, OUTPUT);
11. Serial.begin(9600);
12. while (! Serial);
13. Serial.println("Velocidade de 0 a 255");
14. }
15.
16.
17. void loop()
18. {
19. if (Serial.available())
20. {
21. int speed = Serial.parseInt();
22. if (velocidade >= 0 && velocidade <= 255)
23. {
24. analogWrite(motorPin, velocidade);
25. }
26. }
27. }
64
Introducao a Plataforma Arduino
4.4. Motores PET Eletrica
Lendo o codigo, vemos que o transistor age como uma chave, controlando a
potencia do motor, e o pino 3 do Arduino, chamado no sketch de motorPin,
e utilizado para ligar e desligar o transistor.
Quando o sketch inicia, ele lembra o usuario que, para controlar o motor, e
preciso digitar um valor entre 0 e 255 no Monitor Serial.
Na funcao loop, o comando Serial.parseInte utilizado para ler o valor
colocado no Monitor Serial e converte-lo em uma variavel inteira (int).
A rotacao dos motores tem varias relacoes diretas a estes pulsos de entrada
aplicados. A sequencia dos impulsos aplicados esta diretamente relacionada
com a direcao de rotacao do eixo do motor, a velocidade de rotacao do motor
com a frequencia dos impulsos de entrada e o comprimento de rotacao com
o numero de impulsos de entrada. Ou seja, Para controlar o motor de passo
precisa-se aplicar tensao a cada um a das bobinas em uma sequencia especfica.
65
Introducao a Plataforma Arduino
4.4. Motores PET Eletrica
Para utilizar o motor com o programa que sera mostrado a seguir, conecte-o
ao Arduino na seguinte sequencia:
66
Introducao a Plataforma Arduino
4.4. Motores PET Eletrica
Codigo:
#include <Stepper.h>
void setup()
{
//Determina a velocidade inicial do motor
myStepper.setSpeed(60);
}
void loop()
{
//Gira o motor no sentido horario a 90 graus
for (int i = 0; i<=3; i++)
{
myStepper.step(-512);
delay(500);
}
67
Introducao a Plataforma Arduino
4.4. Motores PET Eletrica
68
Introducao a Plataforma Arduino
4.4. Motores PET Eletrica
Codigo 1:
#include <Servo.h>
void setup ()
{
s.attach(SERVO);
Serial.begin(9600);
s.write(0); // Inicia motor na posic~
ao zero
}
void loop()
{
for(pos = 0; pos < 90; pos++)
{
s.write(pos);
delay(15);
}
delay(1000);
for(pos = 90; pos >= 0; pos--)
{
s.write(pos);
69
Introducao a Plataforma Arduino
4.4. Motores PET Eletrica
delay(15);
}
}
Codigo 2:
#include <Servo.h>
Servo motor; // Cria um objeto para controle do servo
void setup()
void loop()
70
Introducao a Plataforma Arduino
4.4. Motores PET Eletrica
71
Introducao a Plataforma Arduino
4.4. Motores PET Eletrica
72
Captulo 5
Anexos
73
Introducao a Plataforma Arduino
5.2. Comunicacao PET Eletrica
Segue um exemplo de sketch bem simples que envia para o arduino numeros
randomicos.
void setup(){
Serial.begin(115200);// setando a frequ^
encia de comunicac~
ao
}
void loop(){
74
Referencias Bibliograficas
[2] MONKI, Simon. Programacao com Arduino: comecando com sketchs. Serie
Tekne, 2013.
[3] OLIVEIRA, Claudio Lus Vieira, ZANETTI, Humberto Augusto Prove-
sana. Arduino Descomplicado.1. ed., 2015.
75