Você está na página 1de 39

Curso de Introduo a:

Nome:

Realizao: IFPE - Ipojuca


O que o Arduino?
Voc j ouviu falar no Arduino? O nome suas placas no mercado, como o Freeduino,
meio diferente, mas a plataforma extremamente Seeduino, Roboduino, Pinguino e os brasileiros
poderosa e deu incio a um movimento que est Severino e Brasuino.
democratizando o desenvolvimento de
dispositivos eletrnicos em todo o mundo. Criado
por estudantes italianos em 2005, o Arduino
flexvel, relativamente barato e fcil de usar, alm Esta apostila foi baseada em diversos
de ser disponibilizado em cdigo aberto.. projetos disponveis na internet.
O Arduino pode perceber o ambiente por
receber informao de uma grande variedade de
sensores, e pode estimular o ambiente
controlando luzes, motores, e outros atuadores. So referncias importantes:
A parte de hardware do projeto, uma placa
que cabe na palma da mo, um computador
como qualquer outro: possui microprocessador, www.arduino.cc
memria RAM, memria flash (para guardar o
software), temporizadores, contadores, dentre Site do projeto Arduino. Permite o
outras funcionalidades. Atualmente, o projeto download do ambiente de programao e
est na verso Uno, porm muitos Arduinos contm referncias e tutoriais para iniciantes,
encontrados hoje so da verso Duemilanove alm de manter um frum e um blog
(2009, em italiano), que possui um clock de 16
MHz, 2 Kb de memria RAM, 32 Kb de memria
flash, 14 portas digitais e 6 entradas analgicas. www.viaspositronicas.blogspot.com

O microcontrolador em que se baseia Blog mantido por diversas pessoas ligadas


(ATMEL) programvel usando a linguagem robtica educacional, de vrias localidades
Arduino (baseada em C/C++), e tambm aceita do pas. Contm informaes sobre diversas
cdigo diretamente em C/C++, bem como o plataformas e campeonatos.
ambiente do Arduino que baseado em
Processing.
Normalmente, necessrio construir os www.earthshineEelectronics.com
circuitos para as entradas e sadas do Arduino, o
que permite flexibilidade e uma grande variedade Disponibiliza para download o The
de solues para um mesmo problema. Muitos complete beginners guide to the Arduino, uma
projetos para Arduino esto disponveis na das principais referncias para iniciantes (em
internet (o prprio site do Arduino mantm um ingls).
frum e um blog para os usurios do sistema),
facilitando o aprendizado e a troca de
informaes entre os construtores. www.labdegaragem.com
Os projetos em Arduino podem ser nicos
ou podem comunicar com outros circuitos, ou at Site do projeto Arduino. Permite o
mesmo com outros softwares em um computador download do ambiente de programao e
(por exemplo, Java, Flash,Processing, MaxMSP). contm referncias e tutoriais para iniciantes,
alm de manter um frum e um blog
As placas podem ser montadas mo ou
serem compradas montadas, e o software pode
ser obtido gratuitamente.
Como o Arduino um projeto aberto,
diversas empresas fabricam e disponibilizam

1
Arduino UNO

Energia
Viso geral
O Arduino UNO pode receber energia via
O Arduino UNO uma placa conexo USB ou de uma fonte externa. A fonte
microcontroladora baseada em ATmega 328 selecionada automaticamente.
(http://www.atmel.com/dyn/resources/prod_docu
ments/doc2549.pdf). Possui 14 pinos digitais de Energia de uma fonte externa (no-USB) pode
entrada/sada (dos quais 6 podem ser utilizados ser proveniente de um adaptador AC/DC ou
como sadas PWM), 6 entradas analgicas, uma bateria. O adaptador deve ser conectado a um
conexo USB, uma entrada para fonte externa, plug de 2.1 mm, sendo carregado positivamente
um ICSP header, e um boto de reincio. Contm no centro. Cabos de uma bateria devem ser
todos os elementos necessrios para suportar o inseridos nos pinos Gnd e Vin do conector de
microcontrolador; bastando conectar a placa a energia.
um computador atravs de um cabo USB ou a
uma fonte externa com um adaptador AC/DC ou
A placa pode operar com uma tenso de 6 a 20
bateria para iniciar. O UNO compatvel com
Volts. Se receber menos que 7 V, entretanto, o
muitos shields desenvolvidos para Arduino.
pino de 5 V poder fornecer menos que cinco
Volts e a placa pode ficar instvel. Se utilizar mais
que 12 V, o regulador de tenso pode
superaquecer e danificar a placa. A faixa
recomendada entre 7 e 12 volts.

2
Os pinos de energia so os seguintes:
Entradas e Sadas
VIN. Equivale tenso de entrada da
placa Arduino quando utiliza uma fonte Cada um dos 54 pinos digitais do Mega pode ser
externa (diferentemente dos 5 volts da usado como uma entrada ou sada, usando as
conexo USB ou outras fontes funes pinMode (), digitalWrite (), e digitalRead
reguladas). Voc pode fornecer energia (). Eles operam com 5 volts. Cada pino pode
atravs deste pino, ou, se fornecer uma fornecer ou receber um mximo de 40 mA e tem
tenso atravs do plug, obter a mesma um resistor pull-up interno (desconectado por
tenso atravs deste pino. padro) de 20-50 kOhms. Alm disso, alguns
5V. Fornece a tenso regulada para o pinos tm funes especializadas:
microcontrolador e outros componentes
da placa. um segundo depois de abrir a conexo e antes
3V3. Fornece uma tenso de 3.3 Volts de enviar esses dados.
gerada pelo chip FTDI (on-board). A
corrente mxima de 50 mA. A Mega tem uma trilha que pode ser cortada
GND. Pinos-terra. para desabilitar o auto-reset. As almofadas de
cada lado do trao pode ser soldada em
Memria conjunto para reativ-lo. Est identificada como
"RESET-PT". Voc tambm pode ser capaz de
O ATmega 328 possui 32 KB de desativar o auto-reset conectando um resistor
memria flash para armazenar cdigos (dos 110 ohm de 5 V para a linha de reset, veja este
quais 0,5 KB so utilizados para bootloader), 2 tpico do frum para mais detalhes.
KB de SRAM e 1 KB de EEPROM (os quais
podem ser acessados utilizando a EEPROM
library).

4
Outros tipos de Arduino

Arduino UNO Arduino ADK

Arduino Mega 2560 Arduino BT400

Arduino Nano Arduino Pro Arduino Mini

Arduino Fio ArduinoLilyPad

5
Instalando o Arduino IDE
Colocando seu Arduino para funcionar:

As placas contm um microcontrolador auxiliar que faz a comunicao via porta serial USB com um computador, e que os
microcontroladores j possuem o bootloader que permite a programao fcil da aplicao em si.

1 Passo - Baixe no seu computador o Software Arduino IDE no seguinte


site:http://arduino.cc/en/Main/Software

2 Passo - Agora extraia os arquivos. Caso esteja ultilizando windows faa


a instalao normalmente.

3 Passo - Conecte seu Arduino no seu computador com o cabo USB. Na


primeira vez que isso for feito, os drives de comunicao sero
automaticamente instalados.
OBS: Uma vez (automaticamente) estabelecida a comunicao, o led verde
(indicativo de energia indicado por PWR) deve acender.

4 Passo - Navegue at a pasta onde voc salvou o software Arduino e d um


duplo clique no arquivo ARDUINO.EXE para abrir a plataforma IDE de
programao do Arduino.
5 Passo - No IDE v em Tools > Board e selecione a verso de sua placa.
Neste Kit estamos ultilizando o Arduino Uno. Ento v em Tools > Serial
port e selecione a porta que o arduino est ultilizando.
Executando um exemplo

Antes de abordarmos as instrues e comearmos a desenvolver nossos


prprios projetos, importante analisar os projetos exemplos que esto
disponveis na plataforma IDE.

Abra a plataforma IDE, na aba File e depois Examples. Voc ver que existem dezenas
de exemplos, inicialmente separados em grupos de 1 a 10. A Figura acima ilustra o
caminho entre barra de ferramentas e abas para chegar nos exemplos.

O primeiro e mais visvel exemplo o Pisca-Pisca que utiliza o led (conectado ao


pino 13) conectado na maioria das placas Arduino.
Abra a aba File>Examples>01.Basics>Blink.
Uma vez aberto o sketch Blink no IDE, clique no boto upload (Figura avaixo) para fazer
a transferncia do sketch para o Arduino.

No Arduino as luzes RX e TX comearo a piscar como sinal de que os dados esto sendo
transmitidos do seu computador para a placa.
Se no tiver nenhum problema no seu sketch aparecero as palavras Done uploading
na barra de status do seu IDE, as luzes RX e TX iro parar de piscar e seu upload estar
completo.
Se o led laranja na placa comeou a piscar com intervalos de 1 segundo, voc obteve xito na
execuo do seu primeiro exemplo.
Protoboard

Para facilitar o desenvolvimento de projetos, costuma-se utilizar placas com furos e conexes
condutoras para montagem de circuitos eltricos experimentais, chamadas protoboards. A
grande vantagem da placa de ensaio na montagem de circuitos eletrnicos a facilidade de
insero de componentes, uma vez que ela no necessita de soldagem.
Uma protoboard comum possui dois tipos de conexo: verticais, presentes nos furos laterais, e
horizontais, presentes nos restantes. A corrente percorre todos os furos da mesma linha,
alimentando todos os fios ou componentes que ali estiverem conectados, conforme pode-se
verificar na Figura abaixo:

Sistemas digitais utilizam o conceito binrio atrelado ao nvel lgico e nvel de tenso. Assim, pode-se
correlacionar:
Linguagem C para Arduino

01. LED Piscante


Neste projeto, voc aprender a criar um circuito simples usando um LED e um resistor e o far piscar.

O que voc vai precisar:


01 placa Arduino Uno ou Mega
02 cabos jumpers
01 resistor 220
01 LED

Montagem sugerida
Programao sugerida

int ledPin = 10; // define a porta em que o LED est conectado

void setup()
{
pinMode (ledPin, OUTPUT); // define o LED como atuador
}

//essa parte da programao faz com que ela se repi


ta void loop()
{
digitalWrite (ledPin, HIGH); // liga o LED
delay (1000); // espera por 1000 milisegundos
digitalWrite (ledPin, LOW); // desliga o LED
delay (1000); // espera por 1000 milisegundos
}

6
Detalhando um pouco mais

Resistor
Um resistor um dispositivo eletrnico capaz de imitarl a passagem de uma corrente eltrica por
um circuito eltrico. Os resistores so identificados atravs de um cdigo de linhas coloridas.

LED (Light Emitting Diode)


LEDs so dispositivos eletrnicos que emitem luz pela passagem
de uma pequena corrente eltrica. Por isso, necessrio conectar um
resistor ao LED para evitar sobrecorrente. Um LED s permite passagem
de luz em um sentido. Portanto, necessrio identificar os plos para
conectar o LED corretamente dentro do circuito eletrnico.

Alterando o cdigo
1 Altere o intervalo de ligar e desligar o LED para um valor definido por voc.
2 Altere o valor do delay para 50 milisegundos. O LED estar desligando e acendendo?

Link que calcula o resistor: http://www.dannyg.com/examples/res2/resistor.htm

7
9
03. Leitura de um sinal digital no computador
Neste projeto, voc deve construir um circuito que possibilite a leitura do estado de um interruptor
(ligado ou desligado), enviando-o atravs de uma comunicao serial ao computador.
A comunicao serial no computador vista em uma tela parte, que pode ser acessada pelo
atalho Ctrl+Shift+M (Serial monitor).

O que voc vai precisar:


01 placa Arduino Uno ou Mega
03 cabos jumpers
01 interruptor
01 resistor 220

Montagem sugerida

Programao sugerida

void setup()
{
Serial.begin (9600); // inicia a comunicao serial
pinMode (2, INPUT); // define o pino 2 como entrada de dados
}

void loop()
{
int sensorValue = digitalRead(2); // define varivel e armazena a leitura do sensor
Serial.println (sensorValue, DEC); // envia valor para o serial monitor
delay (1000);
}

10
Explorando a programao
A linha Serial.begin (9600); inicia a leitura serial, a 9600 bauds.
A linha Serial.println (sensorValue, DEC); envia o valor da leitura do sensor para o monitor serial e
salta linha ao final. Para que as entradas fossem publicadas em uma mesma linha, deve-se utilizar o
comando Serial.print em vez de Serial.println.

Neste projeto, o monitor serial dever exibir 0 quando o sensor estiver solto e 1, quando estiver
pressionado.

Baud deriva do sobrenome de J.M.E. Baudot, francs inventor do cdigo telegrfico Baudot. Um Baud
uma medida de velocidade de sinalizao e representa o nmero de mudanas na linha de transmisso
(seja em frequncia, amplitude, fase etc...) ou eventos por segundo. Para se determinar a taxa de
transmisso de um canal em bits por segundo - bps, deve ser levado em considerao o tipo de codificao
utilizada, alm da velocidade de sinalizao do canal de comunicao.
Fonte: http://pt.wikipedia.org/wiki/Baud

Alterando o cdigo

1 Adicione um LED porta 2 do Arduino Uno ou Mega e altere o cdigo para que o LED acenda quando
o boto do interruptor for pressionado.

2 Observe o seguinte cdigo:

char nome[] = "ARDUINO";

void setup()
{
Serial.begin (9600);
}

void loop()
{
for (int x=0; x < 8; x++)
{
Serial.print (nome[x]);
delay (500);
}
}

observe a diferena entre os comandos Serial.print e Serial.println

11
04. Leitura de um sinal analgico no computador
Neste projeto, voc deve construir um circuito que possibilite a leitura de um valor analgico (0 a
1023) fornecido por um potencimetro, enviando-o atravs de uma comunicao serial ao computador.
A comunicao serial no computador vista em uma tela parte, que pode ser acessada pelo
atalho Ctrl+Shift+M (Serial monitor).

O que voc vai precisar:


01 placa Arduino Uno ou Mega
03 cabos jumpers
01 potencimetro

Montagem sugerida

Programao sugerida

void setup()
{
Serial.begin (9600);
}
void loop()
{
int sensorValue = analogRead (A0);
Serial.println (sensorValue, DEC);
delay (1000);
}

12
05. Controlando um servo com potencimetro
Este um exemplo bsico que demonstra como controlar um Servo motor com o uso de um
potencimetro e o Arduino. As variaes no eixo do potencimetro sero proporcionais ao ngulo com o qual
o servo se move. Isto possvel devido a utilizao da funo map().

O que voc vai precisar:


01 placa Arduino Uno ou Mega
cabos jumpers
01 potencimetro
01 servo motor pequeno

Montagem Sugerida

#define pino_pot 0

#include <Servo.h>

Servo servoldg; // cria o objeto para controlar o servo

void setup()
{
servoldg.attach(9); // conecta o servo ao pino 9
}

void loop()
{
servoldg.write(map(analogRead(pino_pot), 0, 1023, 0, 179));
// analogRead (): Faz a leitura analgica no pino do potencimetro (retorna com um valor de 0 a
1023
// map (): Muda a escala da leitura de 0~1023 para 0~179 (converte em angulo para o servo)
//servoldg.write(): L o valor do angulo dado pelo map() e gera o pulso para movimentar o
servo.

delay(20); // espera para o servo ter tempo de se movimentar

}
Explorando a programao
A linha intsensorValue = analogRead(A0); define a varivel sensorValue e armazena o valor
da porta analgica 0 na varivel sensorValue
Ao girar o potencimetro, o novo valor do sinal analgico ser exibido em tela.

Alterando o cdigo
Altere o cdigo para que alm do valor analgico, seja exibido o valor da resistncia, em ohms. No
final, ajuste o potencimetro para que ele exera resistncia de 220 . (dica: determine a relao entre a
resistncia e uma unidade analgica lembre- se de que o Arduino utiliza 1024 unidades analgica s).

Alterando a montagem
Substitua o potencimetro por um LDR (Light Dependent Resistor) e efetue medidas da
luminosidade ambiente.

A montagem deve ficar com o seguinte aspecto:

Detalhando um pouco mais

LDR (Light Dependent Resistence)


Dispositivo eletrnico que apresenta como uma resistncia varivel, cujo valor depende da
luz incidente. necessrio conect-lo a um resistor para que possa atuar como sensor analgico

13
06. Automao de LED com LDR
Com este exemplo voc aprender como utilizar a Mini Fotoclula (LDR) para fazer uma leitura de
luminosidade do seu ambiente.

O que voc vai precisar:


01 Placa Arduino Uno ou Mega
01 Protoboard
01 LED Vermelho
01 Resistor 330
01 Resistor 10
01 LDR

Montagem Sugerida

#define LDR A0 //Define LDR como A0


#define led 8 //Define led como 8

float luminosidade; //Varivel para armazenar o valor da luminosidade


float amostra; //Varivel para armazenar o amostratria

void setup()
{

Serial.begin(9600); //Inicia a Serial do Arduino


pinMode(led, OUTPUT); //Configura pino 8 como sada
digitalWrite(led, LOW); //Desliga o LED

void loop()
{

amostra = 0; //Zera a varivel amostra

//Pega 1000 amostras


for(int i=0; i < 100 ; i++)
{
luminosidade = analogRead(LDR); //Armazena o valor lido pelo LDR
luminosidade = (luminosidade / 1024) * 100; //Transforma o valor lido em porcentagem
amostra = amostra + luminosidade; //Armazena na varivel amostra
}

amostra = amostra/100; //Tira a mdia das amostras


Serial.print("Luminosidade = "); //Imprime na serial "Luminosidade = "
Serial.print(amostra, 0); //Imprime a amostra sem casas decimais
Serial.println("%"); //Imprime o smbolo de porcentagem

if(amostra < 30) //Se a luminosidade estiver abaixo de 30%


{
digitalWrite(led,HIGH); //Liga o LED
}

else //Seno
{
digitalWrite(led,LOW); //Desliga o LED
}
delay(250); //Delay de 250 milissegundos

}
07. Semforo
Agora ns iremos criar um circuito para simular um semforo de trnsito. O semforo
ser constitudo por trs LEDs: um vermelho, um amarelo e um verde.

O que voc vai precisar:


01 Placa Arduino Uno ou Mega
01 Protoboard
01 LED Vermelho
01 LED Amarelo
01 LED Verde
03 Resistores 220

Montagem Sugerida

Programao Sugerida

int ledDelay = 10000; // espera entre as trocas de cores


int vermelho = 10;
int amarelo = 9;
int verde = 8;
void setup()
{
pinMode (vermelho, OUTPUT);
pinMode (amarelo, OUTPUT);
pinMode (verde, OUTPUT);
}

4
void loop()
{
digitalWrite (vermelho, HIGH); // liga o led vermelho
delay (ledDelay); // espera o tempo determinado na varivel ledDelay
digitalWrite (amarelo, HIGH); // liga o led amarelo
delay (2000); // espera 2 segundos
digitalWrite (verde, HIGH); // liga o led verde
digitalWrite (vermelho, LOW); // desliga o led vermelho
digitalWrite (amarelo, LOW); // desliga o led amarelo
delay (ledDelay); // espera o tempo determinado na varivel ledDelay
digitalWrite (amarelo, HIGH); // liga o led amarelo
digitalWrite (verde, LOW); // desliga o led
verde delay (2000); // espera 2 segundos
digitalWrite (amarelo, LOW); // desliga o led amarelo
}

Alterando o cdigo

1 Voc deve ter percebido que o cdigo do semforo ligeiramente diferente do cdigo utilizado nos
semforos brasileiros. Adapte o cdigo para torn-lo semelhante programao de nossos semforos.

15
08. Semforo Interativo
Com este exemplo, conseguir simular o funcionamento de um semforo, utilizando LEDs e um boto
para ativar o semforo de pedestre.

O que voc vai precisar:


02 LEDs vermelhos
01 LED amarelo
02 LEDs verdes
05 Resistores de 330
01 Resistor de 10 k
01 Interruptor

Montagem sugerida

Programao sugerida

#define carroVERDE 2 //Define carroVERDE como 2


#define carroAMARELO 3 //Define carroAMARELO como 3
#define carroVERMELHO 4 //Define carroVERMELHO como 4
#define pedestreVERDE 11 //Define pedestreVERDE como 11
#define pedestreVERMELHO 12 //Define pedestreVERMELHO como 12
#define botao 8 //Define botao como 8

void setup()
{

//Configura os pinos como sada


pinMode(carroVERDE, OUTPUT); //Configura pino 2 como sada
pinMode(carroAMARELO, OUTPUT); //Configura pino 3 como sada
pinMode(carroVERMELHO, OUTPUT); //Configura pino 4 como sada
pinMode(pedestreVERDE, OUTPUT); //Configura pino 11 como sada
pinMode(pedestreVERMELHO, OUTPUT); //Configura pino 12 como
sada//=============================

pinMode(botao, INPUT_PULLUP); //Configura o pino 8 como entrada

//Desliga todos os LEDs do sistema


digitalWrite(carroVERDE, LOW); //Desliga o LED Verde dos carro
digitalWrite(carroAMARELO, LOW); //Desliga o LED Amarelo dos carro
digitalWrite(carroVERMELHO, LOW); //Desliga o LED Vermelho dos carro
digitalWrite(pedestreVERDE, LOW); //Desliga o LED Verde dos pedestre
digitalWrite(pedestreVERMELHO, LOW); //Desliga o LED Verde dos
carro //=================================

}
void loop()
{

while((digitalRead(botao)) //Enquanto o botao do pedestre no for pressionado


{
digitalWrite(carroVERDE, HIGH); //Liga o LED Verde do carro
digitalWrite(pedestreVERMELHO, HIGH); //Liga o LED Vermelho do pedestre
}

digitalWrite(carroVERDE, LOW); //Apaga o LED Verde do carro


digitalWrite(carroAMARELO,HIGH); //Liga o LED Amarelo do carro

delay(3000); //Aguarda 3 segundos

digitalWrite(carroAMARELO, LOW); //Apaga o LED Amarelo do carro


digitalWrite(carroVERMELHO,HIGH); //Liga o LED Vermelho do carro

delay(1000); //Aguarda 1 segundo

digitalWrite(pedestreVERMELHO, LOW); //Apaga o LED Vermelho do


pedestredigitalWrite(pedestreVERDE,HIGH); //Liga o LED Verde do pedestre

delay(5000); //Aguarda 5 segundos

digitalWrite(pedestreVERDE,LOW); //Apaga LED Verde do pedestre

//Pisca LED Vermelho do pedestre


for(int i=0 ; i<5 ; i++) //Repete 5 vezes
{
digitalWrite(pedestreVERMELHO, !(digitalRead(pedestreVERMELHO))); //Inverte estado do LED Vermelho
do pedestre
delay(500); //Aguarda 500 milissegundos
}
//==============================

delay(1000); //Aguarda 1 segundo

digitalWrite(pedestreVERDE,LOW); //Apaga LED Verde do pedestre


digitalWrite(carroVERMELHO,LOW); //Apaga LED Vermelho do pedestre

17
09. Usando um termistor para calcular a temperatura
Algumas aplicaes industriais necessitam da leitura da temperatura para manterem seus
processos. O Arduino permite fazer a leitura da temperatura atravs de um termistor conectado a uma porta
analgica.

O que voc vai precisar

01 Arduino Uno ou Mega


01 protoboard
01 termistor NTC 10 K
01 resistor 10 K
03 cabos jumpers

Montagem sugerida:

Programao sugerida

#include <math.h>

double Termistor (int RawADC)


{
double Temp;
Temp = log(((10240000/RawADC) - 10000)); // Considerando resistncia de 10K
Temp = 1 / (0.001129148 + (0.000234125 + (0.0000000876741 * Temp * Temp ))* Temp );
// Equao de Steinhart-Hart para o termistor - te mperatura em Kelvin
Temp = Temp - 273.15; // Converte Kelvin para Celsius
return Temp;
}

void setup()
{
Serial.begin (115200);
}

void loop ()
{
Serial.print(int (Termistor (analogRead (0)))); // Exibe temperatura em Celsius
Serial.println (" graus Celsius");
delay (1000);
}

Explorando o cdigo

Bibliotecas
Bibliotecas so conjuntos de dados pr-formatados que possibilitam funcionalidade extra a um
programa (por exemplo, funes matemticas mais complexas). Para incluir uma biblioteca, deve-se utilizar
a palavra-chave #include.
Exemplo:

#include <math.h>

As bibliotecas para o Arduino podem ser encontradas em http://arduino.cc/en/Reference/Libraries

Double
Funo que dobra a preciso do ponto decimal, quando se trabalha com outras plataformas. No
cdigo do Arduino, possui exatamente a mesma funo que float.

Return
Finaliza a funo, retornando o valor designado.

Detalhando um pouco mais

Termistor
Um termistor um controlador trmico, que consiste numa resistncia sensvel cuja funo principal
exibir uma mudana grande, previsvel e precisa em resistncia eltrica quando um equipamento ou
produto sofrer uma mudana na temperatura de corpo. Um termistor de Coeficiente de Temperatura
Negativo (NTC) (Negative Temperature Coefficient) exibe uma diminuio em resistncia eltrica quando
submetido a um aumento de temperatura do equipamento e um termistor de Coeficiente de Temperatura
Positivo (PTC) (Positive Temperature Coefficient) exibe um aumento em resistncia eltrica existe um
aumento da temperatura do equipamento.

Alterando o cdigo

1 Adicione um LED ao circuito e altere a programao para que o LED acenda quando a leitura da
temperatura indicar 30 C.

21
10. Alarme de temperatura
Com este alarme por temperatura voc poder definir um range dentro do programa e caso a ela
exceda os limites do mesmo, um alarme ser tocado pelo Buzzer.

O que voc vai precisar


01 Arduino Uno ou Mega
01 protoboard
01 termistor NTC 10 K
01 resistor 10 K
01 buzzer
03 cabos jumpers

Montagem e Programao sugerida

#include <Thermistor.h>

#define TEMP_MAX 30
#define TEMP_MIN 24

#define sirene 3
//Instncia o pino A0 como o pino onde o sensor de temperatura estar conectado
Thermistor temp(0);

void setup()
{
Serial.begin(9600);
Serial.println("Alarme de temperatura");
}

void loop()
{
int temperatura = temp.getTemp();
delay(2000); // delay para garantir no minimo 2s entre cada uma das leituras
if (temperatura > TEMP_MIN && temperatura < TEMP_MAX)
{
noTone(sirene);
}
else
{
tone (sirene,440,1000);
Serial.println("PERIGO!!! TEMPERATURA FORA DO ESPERADO");
Serial.print("Temperatura deve estar entre ");
Serial.print(TEMP_MIN);
Serial.print(" e ");
Serial.println(TEMP_MAX);
}
Serial.print("Temperatura: ");
Serial.print(temperatura);
Serial.println(" *C\n");
}
11. Acionando lmpada por comandos via monitor serial
Neste projeto, Vamos mostrar neste tutorial como controlar uma lmpada ligada na rede eltrica via
comandos enviados via serial, utilizando Arduino e o mdulo rel.
ATENO CUIDADO: Evite manusear o mdulo rele enquanto o mesmo estiver conectado na rede
eltrica e remova qualquer tipo de objeto condutivo ou inflamvel de perto. Voc pode causar um acidente e
se machucar, tome cuidado.

O que voc vai precisar


01 Arduino Uno ou Mega
01 placa protoboard
01 mdulo rel
01 lmpada
01 cabo com bocal para lmpada e conector para tomada
cabos jumpers

Montagem sugerida

Programao sugerida

#define rele 8

char leitura;

void setup()
{

//Inicializa comunicao Serial

Serial.begin(9600);

//Seta o pino indicado por rele como sada


pinMode(rele, OUTPUT);

//Mantem rele desligado assim que iniciar o programa


digitalWrite(rele,LOW);

3
void loop()
{

//Verifica se h conexo com a serial


while (Serial.available() > 0)
{
//L o dado vindo da Serial e armazena na varivel leitura
leitura = Serial.read();
//Se a varivel leitura for igual a 'd' ou 'D' ela Desliga rele
if (leitura == 'd' || leitura =='D')
{
// As duas || a operao booleana OU
digitalWrite(rele,LOW);
}
/*Seno verifica se a varivel leitura
igual a 'l' ou 'L' ela Liga rele */
else if (leitura == 'l' || leitura =='L'){
digitalWrite(rele,HIGH);
}
Serial.println(leitura);
}

12. Tacmetro
Com este exemplo voc conseguir saber quantas vezes algo passou em frente a linha de
infravermelho em 1 segundo, conseguindo assim pegar a velocidade em RPM de um motor por exemplo.

O que voc vai precisar


01 Arduino Uno ou Mega
01 placa protoboard
01 emissor infravermelho
01 receptor infravermelho
01 resistor 330
01 resistor 10 k

Montagem sugerida
Programao sugerida

#define sensor 2 //Define sensor como 2

long rpmconta=0; //Cria uma varivel para armazenar as contagem

void setup()
{

Serial.begin(9600); //Inicia a serial com um baud rate de 9600

void loop()
{

rpmconta = 0; //Zera a varivel que armazena a contagem de rotaes

attachInterrupt(0, pegarpm, FALLING); //Habilita o pino 2(INT 0) para atender


a... //interrupo (pegarpm) por borda de descida (FALLING).

delay(1000); //Aguarda 1 segundo

detachInterrupt(0); //Desabilita a interrupo

rpmconta = rpmconta * 60; //Multiplica a contagem por 60 para pegar o RPM

Serial.print(rpmconta); //Imprime o valor de RPM na serial


Serial.println(" RPM"); //Imprime " RPM" na serial, indicando que o valor est em RPM

void pegarpm()
{

rpmconta++; //Increvementa o a contagem de rotaes

}
13. Sensor ptico reflexivo com Arduino
Com este exemplo usa o sensor que timo para identificar obstculos a sua frente e possui vrias
aplicaes na robtica. J vimos ele utilizado para a construo de robs seguidores de linhas e tambm em
robs de batalha sumo para evitar que o mesmo saia do campo de batalha. Em ambos casos o sensor ptico
reflexivo utilizado para detectar linhas de marcao que determinam ou o caminho a ser seguido pelo rob
ou os limites do campo de batalha.

O que voc vai precisar


01 Arduino Uno ou Mega
01 placa protoboard
01 Sensor ptico Reflexivo TCRT5000
02 resistor 330
01 resistor 10 k
01 led

Montagem sugerida

Programao sugerida

//variveis
int ledPin = 13; //LED comum para ser aceso ao detectarmos um objeto
int sensorPin = 8; //pino para receber o sinal do fototransistor
int estado; //varivel utilizada armazenar o estado do sensor

//configurando os pinos (executado apenas uma vez)


void setup(){
pinMode(ledPin, OUTPUT); //definindo o pino do LED como sada
pinMode(sensorPin,INPUT); //definindo o pino do sensor como entrada
}

//lao principal (executado infinitamente)


void loop() {
estado = digitalRead(sensorPin); //l o estado do sensor (alto = inativo, baixo = ativo)

//verificando se o sensor detectou algum objeto ou no


if (estado == HIGH) { //nenhum objeto detectado
digitalWrite(ledPin,LOW); //apaga o LED indicador de presena de objeto
} else { //objeto detectado
digitalWrite(ledPin,HIGH); //acendo o LED indicador de presena de objeto
}

}
14. Sensor de estacionamento / r com Arduino e
sensor ultrasnico HC-SR04
Com este exemplo utiliza o Arduino juntamente com o sensor ultrasnico HC-SR04 para montar um
sensor de estacionamento (ou sensor de r), que emite um "bip" conforme o sensor se aproxima de um
obstculo. Quanto mais prximo o obstculo, maior a frequncia do bip.

O que voc vai precisar


01 Arduino Uno ou Mega
01 placa protoboard
01 Sensor ultrasnico HC-SR04
01 resistor 330
01 buzzer

Montagem sugerida

25

Programao sugerida

// Programa : Sensor de estacionamento com HC-SR04


// Autor : Arduino e Cia

#include <Ultrasonic.h> //Carrega a biblioteca Ultrasonic


#include <NewTone.h> //Carrega a biblioteca Newtone

//Dados do buzzer
#define tempo 500
int frequencia = 2000;
int Pinofalante = 2;

int atraso = 1000;

//Define o pino do Arduino a ser utilizado com o pino Trigger do sensor


#define PINO_TRIGGER 13
//Define o pino do Arduino a ser utilizado com o pino Echo do sensor
#define PINO_ECHO 10

//Inicializa o sensor ultrasonico


Ultrasonic ultrasonic(PINO_TRIGGER, PINO_ECHO);

void setup()
{
pinMode(Pinofalante,OUTPUT); //Pino do buzzer
Serial.begin(9600); //Inicializa a serial
}
void loop()
{
float cmMsec, inMsec;

//Le os dados do sensor, com o tempo de retorno do sinal


long microsec = ultrasonic.timing();

//Calcula a distancia em centimetros


cmMsec = ultrasonic.convert(microsec, Ultrasonic::CM);

//Ajusta o atraso de acordo com a distancia


if (cmMsec > 80)
{
atraso = 2000;
}
else if (cmMsec >50 && cmMsec<80)
{
atraso = 1500;
}
else if (cmMsec >30 && cmMsec<50)
{
atraso = 1200;
}
else if (cmMsec > 10 && cmMsec < 30)
{
atraso = 700;
}
else if (cmMsec < 10)
{
atraso = 300;
}

//Apresenta os dados, em centimetros, na Serial


Serial.print("Cent: ");
Serial.print(cmMsec);
Serial.print(" atraso : ");
Serial.println(atraso);
//Emite o bip
NewTone(Pinofalante, frequencia, tempo);

delay(atraso);
}