Sie sind auf Seite 1von 195

Projetos com Arduino

40 projetos

Willian Scollonoff

Projetos com Arduino


40 projetos

[2]

[3]

[4]

SUMRIO
Projeto 01 Pisca LED ........................................................................................................................................ 7
Projeto 02 Semforo ........................................................................................................................................ 9
Projeto 03 Alarme com sonorizador Piezo ..........................................................................................12
Projeto 04 Tocador de Melodia com sonorizador Piezo ................................................................15
Projeto 05 Sensor de luminosidade com LDR....................................................................................19
Projeto 06 Barra de LEDs e LDR ..............................................................................................................25
Projeto 07 Sensor de temperatura com LM35 ..................................................................................28
Projeto 08 Controle bsico com LCD......................................................................................................32
Projeto 09 Sensor de temperatura com LCD ......................................................................................36
Projeto 10 Controle de temperatura com LCD e cooler ................................................................40
Projeto 11 Controle de velocidade de um motor cc........................................................................45
Projeto 12 Motor de passo controlado por Arduino........................................................................49
Projeto 13 Servo motor controlado por Arduino ..............................................................................53
Projeto 14 Controlando um servo motor com joystick .................................................................56
Projeto 15 Sensor Ultrassnico Bsico .................................................................................................59
Projeto 16 Sensor de r para automvel .............................................................................................62
Projeto 17 Gravando um arquivo .DOC no SD CARD ......................................................................66
Projeto 18 Sensor de umidade e temperatura DHT11 ..................................................................71
Projeto 19 Arduino como osciloscpio ..................................................................................................74
Projeto 20 Arduino como um gerador de frequncia (onda quadrada)................................77
Projeto 21 Configurando o shield ethernet com o arduino .........................................................81
Projeto 22 Ascendendo LED com shield ethernet............................................................................86
Projeto 23 Ascendendo lmpada com shield ethernet e rel ....................................................92
Projeto 24 Escrevendo em um LCD Nokia 5110 ...............................................................................97
Projeto 25 Grfico de leitura de temperatura com um LCD Nokia 5110 ........................... 100
Projeto 26 Teclado matricial 4x4 bsico ........................................................................................... 104
Projeto 27 Acionando rel via teclado matricial 4x4 .................................................................. 108
Projeto 28 Utilizando um carto RFID ............................................................................................... 112
Projeto 29 Configurando o mdulo bluetooth (JY-MCU) .......................................................... 118
Projeto 30 Acionando LED e rel com via bluetooth com arduinocomander .................. 122
Projeto 31 Utilizando o PWM via bluetooth com arduinocomander.................................... 131
Projeto 32 Utilizando o osciloscpio via bluetooth com arduinocomander ..................... 139
Projeto 33 Utilizando sensores do Smartphone via bluetooth com arduinocomander
................................................................................................................................................................................... 150

[5]

Projeto 34 Verificando cdigo de comando de um controle remoto ................................... 158


Projeto 35 Clonando controle remoto de TV ................................................................................... 162
Projeto 36 Acionando LEDs e rel com infravermelho .............................................................. 166
Projeto 37 Jogo ping pong com LCD Nokia 5110.......................................................................... 170
Projeto 38 Jogo dos caminhes com LCD 16x2 ............................................................................. 177
Projeto 39 Interface WEB com Arduino ............................................................................................ 184
Projeto 40 Monitor de temperatura com Arduino ........................................................................ 190

Projeto 01 Pisca LED

COMPONENTES NECESSRIOS
1 Arduino Uno R3
1 Protoboard
1 LED (qualquer cor e tamanho)
1 Resistor de 100 ohms *
Fios jumpers
* Esse valor pode ser diferente, dependendo do LED que voc utilizar.
CONECTANDO OS COMPONENTES
Primeiro, certifique-se de que seu Arduino esteja desligado, desconectando-o do cabo USB.
Agora, pegue sua protoboard, o LED, o resistor e os fios, e conecte tudo como mostra a
figura:

Projetos com Arduino por Willian Scollonoff

No importa se voc utiliza fios de cores diferentes ou furos diferentes na protoboard,


desde que os componentes e os fios estejam conectados na mesma ordem da figura.
Tenha cuidado ao inserir os componentes na protoboard. Caso sua protoboard seja nova, a
superfcie dos furos ainda estar rgida. A no insero cuidadosa dos componentes pode
resultar em danos.
Certifique-se de que seu LED esteja conectado corretamente, com o terminal (ou perna)
mais longo conectado ao pino digital 10. O terminal longo e o anodo do LED, e deve
sempre ir para a alimentao de +5 V (nesse caso, saindo do pino digital 10); o terminal
curto e o ctodo e deve ir para o terra (GND). Quando voc estiver seguro de que tudo foi
conectado corretamente, ligue seu Arduino e conecte o cabo USB.
AGORA VAMOS AO CDIGO
// Projeto 1 - LED piscante
int ledPin = 10; // Declaramos uma varivel inteira com valor igual a...
//10 (conectada no pino 10 do Arduino)
void setup() { // Esta funo executada somente uma vez no incio...
//do programa
pinMode(ledPin, OUTPUT); // Define ledPin como pino de sada
}
void loop() { // Esta a funo principal do programa, ser executada...
//continuamente enquanto o Arduino estiver ligado
digitalWrite(ledPin, HIGH); // Esta enviado 5 volts para o pino 10 do Arduino
delay(1000); // Diz ao Arduino espera 1000 milisegundo antes de executar...
//a prxima instruo
digitalWrite(ledPin, LOW); // Diz para o Arduino desligar o pino 10...
//deixando-o em 0 volts
delay(1000); // Espera mais 1000 segundos
}

Para verificar se o cdigo est correto pressione o boto Verify/Compile. Se tudo estiver
correto pressione o boto Upload para fazer o upload do cdigo para seu Arduino. Pronto,
no seu primeiro projeto voc estar vendo o LED piscando em um intervalo de um
segundo.

[8]

Projetos com Arduino por Willian Scollonoff

Projeto 02 Semforo

Ol pessoal, agora vamos fazer um pequeno projeto, um semforo que ir do verde ao


vermelho, passando pelo amarelo e, que retornar ao vermelho depois de um intervalo de
tempo. Este projeto poder ser utilizado em uma maquete com carinhos simulando uma
pequena cidade ou mesmo uma estrada de ferro. Os cdigos sero todos comentados
para melhor entendimento, podendo ser retirados aps a compreenso de cada linha. Bom
trabalho !!!
COMPONENTES NECESSRIOS
1 Arduino Uno R3
1 Protobord
1 LED Amarelo
1 LED Verde
1 LED Vermelho
3 Resistores de 100 ohms *
Fios jumpers
* Esse valor pode ser diferente, dependendo do LED que voc utilizar.
CONECTANDO OS COMPONENTES
Primeiro, certifique-se de que seu Arduino esteja desligado, desconectando-o do cabo USB.
Agora, pegue sua protoboard, os LED, os resistores e os fios, e conecte tudo como mostra
a figura.

[9]

Projetos com Arduino por Willian Scollonoff

No importa se voc utiliza fios de cores diferentes ou furos diferentes na protoboard,


desde que os componentes e os fios estejam conectados na mesma ordem da figura.
Tenha cuidado ao inserir os componentes na protoboard. Caso sua protoboard seja nova,
a superfcie dos furos ainda estar rgida. A no inverso cuidadosa dos componentes
pode resultar em danos. Certifique-se de que seus LEDs estejam conectados
corretamente, com o terminal (ou perna) mais longo conectado aos pinos digital 8, 9 e 10
do arduino. Quando voc estiver seguro de que tudo foi conectado corretamente, ligue seu
Arduino e conecte o cabo USB.
AGORA VAMOS AO CDIGO
// Projeto 2 Semforo
int ledDelay = 10000; // Espera entre as alteraes
int vermelhoPin = 10; // Declaramos uma varivel inteira com valor igual...
//a 10 (conectada no pino 10 do Arduino)
int amareloPin = 9; // Declaramos uma varivel inteira com valor igual...
//a 9 (conectada no pino 9 do Arduino)
int verdePin = 8; // Declaramos uma varivel inteira com valor igual...
//a 8(conectada no pino 8 do Arduino)
void setup() {
pinMode(vermelhoPin, OUTPUT); // Define vermelhoPin como pino de sada
pinMode(amareloPin, OUTPUT); // Define amareloPin como pino de sada
pinMode(verdePin, OUTPUT); // Define verdePin como pino de sada
}
void loop() {
digitalWrite(vermelhoPin, HIGH); // Acende a luz vermelha
delay(ledDelay); // Espera 5 segundos

[ 10 ]

Projetos com Arduino por Willian Scollonoff

digitalWrite(amareloPin, HIGH); // Acende a luz amarela


delay(2000); // Espera 2 segundos
digitalWrite(verdePin, HIGH); // Acende a luz verde
digitalWrite(vermelhoPin, LOW); // Apaga a luz vermelha
digitalWrite(amareloPin, LOW); // Apaga a luz amarela
delay(ledDelay); // Espera ledDelay milissegundos
digitalWrite(vermelhoPin, HIGH); // Acende a luz vermelha
digitalWrite(verdePin, LOW); // Apaga a luz verde
delay(2000); // Espera 2 segundos
digitalWrite(amareloPin, LOW); // Apaga a luz amarela
// Agora nosso loop se repete
}
Para certificar se o cdigo est correto pressione o boto Verify/Compile. Se tudo estiver
correto pressione o boto Upload para fazer o upload do cdigo para seu Arduino. Pronto,
no seu segundo projeto voc ver um semforo que ir do verde ao vermelho, passando
pelo amarelo e, que retornar depois de um intervalo de tempo.

[ 11 ]

Projetos com Arduino por Willian Scollonoff

Projeto 03 Alarme com sonorizador Piezo

Ol pessoal, neste projeto ser um pouco barulhento pois, vamos fazer um alarme com
sonorizador piezo conectado a um pino de sada digital, podendo ser criado um som de
sirene. Iremos gerar uma onda senoidal para gerar os pulsos e criando o som. Os cdigos
sero todos comentados para melhor entendimento, podendo ser retirados aps a
compreenso de cada linha. Bom trabalho !!!
COMPONENTES NECESSRIOS
1 Arduino Uno R3
1 Protobord
1 Sonorizador piezo (ou disco piezo)
Fios jumpers
CONECTANDO OS COMPONENTES
Primeiro, certifique-se de que seu Arduino esteja desligado, desconectando-o do cabo USB.
Agora, pegue sua protoboard, o sonorizador piezo e os fios, e conecte tudo como mostra a
figura.
Observao importante: Verifique a polaridade do sonorizador piezo.

[ 12 ]

Projetos com Arduino por Willian Scollonoff

No importa se voc utiliza fios de cores diferentes ou furos diferentes na protoboard,


desde que os componentes e os fios estejam conectados na mesma ordem da figura.
Tenha cuidado ao inserir os componentes na protoboard. Caso sua protoboard seja nova, a
superfcie dos furos ainda estar rgida. A no insero cuidadosa dos componentes pode
resultar em danos. Certifique-se de que todos os componentes estejam conectados
corretamente. Quando voc estiver seguro de que tudo foi conectado corretamente, ligue
seu Arduino e conecte o cabo USB.
AGORA VAMOS AO CDIGO
// Projeto 3 Alarme com sonorizador piezo
// Armazena o valor de seno que fazer o valor se elevar e diminuir
float sinVal;
// Pega o valor armazenado em sinVal e converte-o para frequncia...
//solicitada
int toneVal;
void setup() {
pinMode(8, OUTPUT); // Declara o pino 8 como sada
}
void loop() {
// Converte graus para radianos, e depois obtm o valor do seno
for (int x=0; x<180; x++) {
// Gera uma frequncia a partir do valor do seno
sinVal = (sin(x*(3.1416/180)));

[ 13 ]

Projetos com Arduino por Willian Scollonoff

// Pega 2000 e adiciona sinVal multiplicando por 1000, gerando um...


//bom intervalo de frequncias para o tom crescente e decrescente da...
//onda senoidal
toneVal = 2000+(int(sinVal*1000));
// O comando ton( ) definido como ton(pin, frequency), o pin...
//corresponde o pino digital de sada e frequency a frequncia do...
//tom em Hertz
tone(8, toneVal);
delay(2); // Espera dois milissegundos entre as alteraes de frequncia
}
}
Para certificar se o cdigo est correto pressione o boto Verify/Compile. Se tudo estiver
correto pressione o boto Upload para fazer o upload do cdigo para seu Arduino. Pronto,
no seu terceiro projeto voc ouvir o som sendo emitido pelo sonorizador piezo.

[ 14 ]

Projetos com Arduino por Willian Scollonoff

Projeto 04 Tocador de Melodia com sonorizador Piezo

Ol pessoal, neste projeto voc aprender como fazer melodias ao invs de fazer apenas
barulhos irritantes. Voc far com seu Arduino o refro da msica Puff, the Magic
Dragon. O esquema ser igual ao Projeto 3, porm com o cdigo modificado. Os cdigos
sero todos comentados para melhor entendimento, podendo ser retirados aps a
compreenso de cada linha. Bom trabalho !!!
COMPONENTES NECESSRIOS
1 Arduino Uno R3
1 Protobord
1 Sonorizador piezo (ou disco piezo)
Fios jumpers
CONECTANDO OS COMPONENTES
Primeiro, certifique-se de que seu Arduino esteja desligado, desconectando-o do cabo USB.
Agora, pegue sua protoboard, o sonorizador piezo e os fios, e conecte tudo como mostra a
figura.
Observao importante: Verifique a polaridade do sonorizador piezo.

[ 15 ]

Projetos com Arduino por Willian Scollonoff

No importa se voc utiliza fios de cores diferentes ou furos diferentes na protoboard,


desde que os componentes e os fios estejam conectados na mesma ordem da figura.
Tenha cuidado ao inserir os componentes na protoboard. Caso sua protoboard seja nova, a
superfcie dos furos ainda estar rgida. A no insero cuidadosa dos componentes pode
resultar em danos. Certifique-se de que todos os componentes estejam conectados
corretamente. Quando voc estiver seguro de que tudo foi conectado corretamente, ligue
seu Arduino e conecte o cabo USB.
AGORA VAMOS AO CDIGO
// Projeto 4 Tocador de melodia com sonorizador piezo
/* A diretiva #define muito simples e til, esta diretiva simplesmente
um valor e seu token correspondente, por exemplo, #define PI 3.141592653
589793238462643. No decorrer do seu programa voc no precisa digitar
todo o valor de PI, apenas #define PI.*/
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define

NOTE_C3 131
NOTE_CS3 139
NOTE_D3 147
NOTE_DS3 156
NOTE_E3 165
NOTE_F3 175
NOTE_FS3 185
NOTE_G3 196
NOTE_GS3 208
NOTE_A3 220
NOTE_AS3 233
NOTE_B3 247

[ 16 ]

Projetos com Arduino por Willian Scollonoff

#define NOTE_C4 262


#define NOTE_CS4 277
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define

NOTE_D4 294
NOTE_DS4 311
NOTE_E4 330
NOTE_F4 349
NOTE_FS4 370
NOTE_G4 392
NOTE_GS4 415
NOTE_A4 440
NOTE_AS4 466
NOTE_B4 494

#define
#define
#define
#define
#define

WHOLE 1
HALF 0.5
QUARTER 0.25
EIGHTH 0.125
SIXTEENTH 0.0625

// Definimos um array de valores inteiro tune[], preenchendo as notas da...


//melodia "Puff, o Drago Mgico"
int tune[] = { NOTE_C4, NOTE_C4, NOTE_C4, NOTE_C4, NOTE_C4, NOTE_B3,
NOTE_G3, NOTE_A3, NOTE_C4, NOTE_C4, NOTE_G3, NOTE_G3, NOTE_F3,
NOTE_F3, NOTE_G3, NOTE_F3, NOTE_E3, NOTE_G3, NOTE_C4, NOTE_C4,
NOTE_C4, NOTE_C4, NOTE_A3, NOTE_B3, NOTE_C4, NOTE_D4};
// Criamos um array de floats que armazena a durao de cada nota,
//conforme melodia tocada
float duration[] = { EIGHTH, QUARTER+EIGHTH, SIXTEENTH, QUARTER,
QUARTER, HALF, HALF, HALF, QUARTER, QUARTER, HALF+QUARTER,
QUARTER, QUARTER, QUARTER, QUARTER+EIGHTH, EIGHTH, QUARTER,
QUARTER, QUARTER, EIGHTH, EIGHTH, QUARTER, QUARTER, QUARTER,
QUARTER, HALF+QUARTER};
int length;// Este inteiro ser utilizado para calcular e armazenar o...
//comprimento do array (nmero de notas na melodia)
void setup() {
pinMode(8, OUTPUT); // Definimos o pino digital 8 como sada
// A funo sizeof retorna o nmero de bytes
length = sizeof(tune) / sizeof(tune[0]);
}
void loop() {
// Definimos um loop que itera o nmero de vezes correspondente as...
//notas da melodia
for (int x = 0; x < length; x ++) {
// Ento a prxima nota do array tune[] reproduzida no pino digita 8
[ 17 ]

Projetos com Arduino por Willian Scollonoff

tone(8, tune[x]);
// Aqui esperamos o tempo necessario para que a melodia seja reproduzida
delay(1500 * duration[x]);
// Antes que a nota seguinte seja tocada voc cessa o tom gerado no pino 8
noTone(8);
}
delay(5000); // Espera 5 segundos antes de tocar a melodia novamente
}
Os pases anglfonos mantiveram a utilizao de letras para a nomenclatura das notas
musicais. As letras A, B, C, D, E, F e G so utilizadas para as notas l, si, do, r, mi, f e
sol, respectivamente (fonte: Wikipedia).
Para certificar se o cdigo est correto pressione o boto Verify/Compile. Se tudo estiver
correto pressione o boto Upload para fazer o upload do cdigo para seu Arduino. Pronto,
no seu terceiro projeto voc ouvir o som sendo emitido pelo sonorizador piezo.

[ 18 ]

Projetos com Arduino por Willian Scollonoff

Projeto 05 Sensor de luminosidade com LDR

Ol pessoal, neste projeto voc aprender como fazer um sensor de luminosidade bsico, e
uma pequena aplicao, onde voc ver trs LEDs acendo conforme variao da
luminosidade. Os cdigos sero todos comentados para melhor entendimento, podendo ser
retirados aps a compreenso de cada linha. Bom trabalho !!!
Para voc visualizar o monitor serial selecione a opo Tools, Serial Monitor (ou
Ctrl+Shift+M) e pronto.
COMPONENTES NECESSRIOS
1 Arduino Uno R3
1 Protobord
1 LDR (Light Dependent Resistor (Resistor dependente de luz))
1 LED Vermelho
1 LED Amarelo

[ 19 ]

Projetos com Arduino por Willian Scollonoff

1 LED Verde
3 Resistores de 330 ohms *
1 Resistor de 10K ohms
Fios jumpers
* Esse valor pode ser diferente, dependendo do LED que voc utilizar.

CONECTANDO OS COMPONENTES
Primeiro, certifique-se de que seu Arduino esteja desligado, desconectando-o do cabo USB.
Agora, pegue o LDR, o resistor de 10 K ohms e os fios e conecte-os como mostra a figura.
Observao importante: Verifique a polaridade dos LEDs.

No importa se voc utiliza fios de cores diferentes ou furos diferentes na protoboard,


desde que os componentes e os fios estejam conectados na mesma ordem da figura.
Tenha cuidado ao inserir os componentes na protoboard. Caso sua protoboard seja nova, a
superfcie dos furos ainda estar rgida. A no insero cuidadosa dos componentes pode

[ 20 ]

Projetos com Arduino por Willian Scollonoff

resultar em danos. Certifique-se de que todos os componentes estejam conectados


corretamente. Quando voc estiver seguro de que tudo foi conectado corretamente, ligue
seu Arduino e conecte o cabo USB.
AGORA VAMOS AO CDIGO
// Projeto 5 - Sensor de luminosidade
// Define o pino analgico A0, onde ser lido o valor do sensor
int sensorAlogPin = 0;
// Define uma varivel qualquer para armazenar o valor lido do pino A0
int armazenaValor = 0;
void setup(){
// Inicializa a funo Serial, configurando sua velocidade
Serial.begin(9600);
}
void loop(){
// Faz a leitura da porta analogica A0 e armazena na varivel armazenaValor
armazenaValor = analogRead(sensorAlogPin);
Serial.print("Lendo valor... "); // Imprime no monitor serial
Serial.print(armazenaValor); // Mostra o valor lido pela porta serial
}

delay(1000); // Aguarda 1 segundo

Para certificar se o cdigo est correto pressione o boto Verify/Compile. Se tudo estiver
correto pressione o boto Upload para fazer o upload do cdigo para seu Arduino. Pronto,
agora inicialize o monitor serial e visualize o que acontece quando voc muda a
luminosidade no LDR.

[ 21 ]

Projetos com Arduino por Willian Scollonoff

IMAGEM DA PORTA SERIAL DO IDE DO ARDUINO

APLICAO DO SENSOR DE LUMINOSIDADE


Complemente o projeto anterior conforme mostra a figura

COMPLEMENTE O CDIGO DA SEGUINTE MANEIRA


// Projeto 5.1 - Sensor de luminosidade com LEDs
// Define o pino analgico A0, onde ser lido o valor do sensor
int sensorAnalogPin = 0;
// Define uma varivel qualquer para armazenar o valor lido do pino A0
int armazenaValor = 0;

[ 22 ]

Projetos com Arduino por Willian Scollonoff

// Definindo pinos onde esto conectados os LEDs


const int ledVerde = 11;
const int ledAmarelo = 12;
const int ledVermelho = 13;
void setup(){
// Ativando o serial monitor que exibir os valores lidos no sensor
Serial.begin(9600);
// Definindo pinos digitais dos LEDs como de sada
pinMode(ledVerde,OUTPUT);
pinMode(ledAmarelo,OUTPUT);
pinMode(ledVermelho,OUTPUT);
}
void loop(){
// Faz a leitura da porta analogica A0 e armazena na varivel armazenaValor
int armazenaValor = analogRead(sensorAnalogPin);
//Os valores da luminosidade podem ser alterados conforme a necessidade
//Luminosidade baixa
if (armazenaValor < 600) {
apagaLeds();
digitalWrite(ledVermelho,HIGH);
}
// Luminosidade mdia
if (armazenaValor >= 600 && valorSensor <= 850) {
apagaLeds();
digitalWrite(ledAmarelo,HIGH);
}
// Luminosidade alta
if (armazenaValor > 850) {
apagaLeds();
digitalWrite(ledVerde,HIGH);
}
// Exibindo o valor do sensor no serial monitor.
Serial.print("Lendo valor... "); // Imprime no monitor serial
Serial.println(valorSensor); // Mostra o valor lido pela porta serial
delay(1000);
}
// Est funo criada para apagar todos os leds de uma vez
void apagaLeds() {
digitalWrite(ledVerde,LOW);
[ 23 ]

Projetos com Arduino por Willian Scollonoff

digitalWrite(ledAmarelo,LOW);
digitalWrite(ledVermelho,LOW);
}
Para certificar se o cdigo est correto pressione o boto Verify/Compile. Se tudo estiver
correto pressione o boto Upload para fazer o upload do cdigo para seu Arduino. Pronto,
agora voc ver os LEDs trocando de cor conforme variao de luminosidade.

[ 24 ]

Projetos com Arduino por Willian Scollonoff

Projeto 06 Barra de LEDs e LDR

Ol pessoal, neste projeto voc aprender como fazer uma barra de LEDs e LDR como
sensor de luminosidade. Voc perceber que conforme a variao da luminosidade e
consequentemente variao de resistncia, a sequncia de LEDs iro acender ou apagar.
Os cdigos sero todos comentados para melhor entendimento, podendo ser retirados aps
a compreenso de cada linha. Bom trabalho !!!
COMPONENTES NECESSRIOS
1 Arduino Uno R3
1 Protobord
1 LDR (Light Dependent Resistor (Resistor dependente de luz))
8 LEDs de qualquer cor
8 Resistores de 330 ohms *
1 Resistor de 10K ohms
Fios jumpers

[ 25 ]

Projetos com Arduino por Willian Scollonoff

* Esse valor pode ser diferente, dependendo do LED que voc utilizar.
CONECTANDO OS COMPONENTES
Primeiro, certifique-se de que seu Arduino esteja desligado, desconectando-o do cabo USB.
Agora, pegue todos os componentes acima e conecte-os como mostra a figura.
Observao importante: Verifique a polaridade dos LEDs.

No importa se voc utiliza fios de cores diferentes ou furos diferentes na protoboard,


desde que os componentes e os fios estejam conectados na mesma ordem da figura.
Tenha cuidado ao inserir os componentes na protoboard. Caso sua protoboard seja nova, a
superfcie dos furos ainda estar rgida. A no insero cuidadosa dos componentes pode
resultar em danos. Certifique-se de que todos os componentes estejam conectados
corretamente. Quando voc estiver seguro de que tudo foi conectado corretamente, ligue
seu Arduino e conecte o cabo USB.
AGORA VAMOS AO CDIGO
// Projeto 6 Barra de LEDs e LDR
/* A funo Map do Arduino, mapeia uma faixa de valores em outra.

[ 26 ]

Projetos com Arduino por Willian Scollonoff

Segundo o site do Arduino temos o seguinte prototipo:


map(value, fromLow, fromHigh, toLow, toHigh)
onde,
value: Informa o valor lido da porta analgica.
fromLow: Incio da escala de origem.
fromHigh: Fim da escala de origem.
toLow: Incio da escala de destino.
toHigh: Fim da escala de destino.
Esta funo converte os parmetros PWM de 0, 1023 para a escala de 0, 255
*/
int ldrMap = 0; // Varivel iniciando com valor igual a 0.
int analogPin = 1; // Varivel utilizando o pino analgico A1.
void setup()
{
for(int a = 0; a<=10; a++) // Iniciando os pino digitais do Arduino...
pinMode(a, OUTPUT); // como sada
}
void loop()
{
// Verifica a funo Map, o 22 pode ser mudado
ldrMap = map(analogRead(analogPin), 0, 1023, 22, 0);
for(int a = ldrMap; a>=0; a--) // Quando a resistncia do LDR diminui...
digitalWrite(a, HIGH); // acende todos os LED's

for(int a = ldrMap; a<=10; a++) // Quando a resistncia do LDR aumenta...


digitalWrite(a, LOW); // apaga todos os LED's

Para certificar se o cdigo est correto pressione o boto Verify/Compile. Se tudo estiver
correto pressione o boto Upload para fazer o upload do cdigo para seu Arduino. Pronto,
agora verifique o que acontece quando voc muda a luminosidade(resistncia) no LDR.

[ 27 ]

Projetos com Arduino por Willian Scollonoff

Projeto 07 Sensor de temperatura com LM35

Ol pessoal, agora iremos ver um sensor muito interessante e til. O LM35 um sensor de
temperatura de preciso. Este sensor pode ler temperaturas entre -55C a 150C. Podendo
ser utilizador em diversos projetos tais como controle de refrigerao de uma cmara fria,
controle de aquecimento de um forno, entre outras. Ento vamos ao trabalho. Os cdigos
sero todos comentados para melhor entendimento, podendo ser retirados aps a
compreenso de cada linha. Bom trabalho !!!
Para voc visualizar o monitor serial selecione a opo Tools, Serial Monitor (ou
Ctrl+Shift+M) e pronto.
COMPONENTES NECESSRIOS
1 Arduino Uno R3
1 Protoboard
1 LM35 Sensor de temperatura
Fios jumpers

[ 28 ]

Projetos com Arduino por Willian Scollonoff

CONECTANDO OS COMPONENTES
Primeiro, certifique-se de que seu Arduino esteja desligado, desconectando-o do cabo USB.
Agora, pegue o LM35 e os fios e conecte-os como mostra a figura. Observao importante:
Vcc (Pino +), Output (Pino de retorno) e Ground (Pino -), com viso frontal do mesmo da
esquerda para direita.

No importa se voc utiliza fios de cores diferentes ou furos diferentes na protoboard,


desde que os componentes e os fios estejam conectados na mesma ordem da figura.
Tenha cuidado ao inserir os componentes na protoboard. Caso sua protoboard seja nova, a
superfcie dos furos ainda estar rgida. A no insero cuidadosa dos componentes pode
resultar em danos. Certifique-se de que todos os componentes estejam conectados
corretamente. Quando voc estiver seguro de que tudo foi conectado corretamente, ligue
seu Arduino e conecte o cabo USB.
AGORA VAMOS AO CDIGO
// Projeto 7 Sensor de temperatura com LM35
float tempC; // Cria varivel para armazenar temperatura

[ 29 ]

Projetos com Arduino por Willian Scollonoff

int tempPin = 0; // Declara o pin analgico 0


void setup()
{
Serial.begin(9600); // Abre porta serial, inicializa dados a 9600 bps
}
void loop() // O cdigo continuar a ficar em loop
{
tempC = analogRead(tempPin); // Le o valor analgico do sensor LM35
// Converte a entrada de temperatura em graus centigrados
tempC = (5.0 * tempC * 100.0)/1024.0;
// Imprime no monitor serial - Lendo temperatura...
Serial.println("Lendo temperatura ... ");
Serial.print((byte)tempC); // Envia dados para o computador
Serial.println(" C"); // Imprime o C de Celsius no monitor serial
}

delay(1000); // Espera 1 segundos

Para certificar se o cdigo est correto pressione o boto Verify/Compile. Se tudo estiver
correto pressione o boto Upload para fazer o upload do cdigo para seu Arduino. Pronto,
agora inicialize o monitor serial e visualize o que acontece quando voc muda a
temperatura do LM35.

IMAGEM DA PORTA SERIAL DO IDE DO ARDUINO

[ 30 ]

Projetos com Arduino por Willian Scollonoff

FOTO DO PROJETO PRONTO

[ 31 ]

Projetos com Arduino por Willian Scollonoff

Projeto 08 Controle bsico com LCD

Ol pessoal, agora vamos deixar nossos projetos visualmente mais interessantes. Iremos
aprender como utilizar o LCD (Liquid Crystal Display), ns utilizaremos o modelo JHD 162A,
deixando nossos projetos mais amigveis. Para isso teremos que utilizar a biblioteca
LiquidCrystal.h, que j inclui todas as funes sem precisarmos declarar linha por linha.
Bom trabalho !!! Os cdigos sero todos comentados para melhor entendimento, podendo
ser retirados aps a compreenso de cada linha. Bom trabalho !!!

[ 32 ]

Projetos com Arduino por Willian Scollonoff

COMPONENTES NECESSRIOS
1 Arduino Uno R3
1 Protobord
1 LCD (JHD 162A de 16 colunas e 2 linhas) ou outro modelo com back light
2 Potencimetros de 10K ohms (Um para o contraste e o outro para a luz de fundo) *
Fios jumpers
* Este modelo que utilizei no possui o back light, porm o projeto foi montado com se
tivesse essa funo.

CONECTANDO OS COMPONENTES
Primeiro, certifique-se de que seu Arduino esteja desligado, desconectando-o do cabo USB.
Agora, pegue o LCD, os potnciometros e os fios e conecte-os como mostra a figura.

[ 33 ]

Projetos com Arduino por Willian Scollonoff

No importa se voc utiliza fios de cores diferentes ou furos diferentes na protoboard,


desde que os componentes e os fios estejam conectados na mesma ordem da figura.
Tenha cuidado ao inserir os componentes na protoboard. Caso sua protoboard seja nova, a
superfcie dos furos ainda estar rgida. A no insero cuidadosa dos componentes pode
resultar em danos. Certifique-se de que todos os componentes estejam conectados
corretamente. Quando voc estiver seguro de que tudo foi conectado corretamente, ligue
seu Arduino e conecte o cabo USB.
SEGUE O ESQUEMA ABAIXO PARA MELHOR ENTENDIMENTO
- Pino 1 do LCD ligado ao GND do Arduino;
- Pino 2 do LCD ligado ao 5V do Arduino;
- Pino 3 do LCD ligado ao pino central do primeiro
potencimetro (controle de contraste);
- Pino 4 do LCD ligado ao pino digital 9 do Arduino;
- Pino 5 do LCD ligado ao GND do Arduino;
- Pino 6 do LCD ligado ao pino digital 8 do Arduino;
- Pino 11 do LCD ligado ao pino digital 5 do Arduino;
- Pino 12 do LCD ligado ao pino digital 4 do Arduino;
- Pino 13 do LCD ligado ao pino digital 3 do Arduino;
- Pino 14 do LCD ligado ao pino digital 2 do Arduino;
- Pino 15 do LCD ligado ao pino central do segundo
potencimetro (controle do brilho);
- Pino 16 do LCD ligado ao GND do Arduino.
Obs.: Os demais pinos no sero utilizados neste projeto.
AGORA VAMOS AO CDIGO
// Projeto 8 - Controle bsico com LCD
// Define a utilizao da biblioteca para controle de telas LCDs
#include <LiquidCrystal.h>

[ 34 ]

Projetos com Arduino por Willian Scollonoff

LiquidCrystal lcd(9, 8, 5, 4, 3, 2); // Cria um objeto LCD e atribui os pinos


void setup() {
}

lcd.begin(16, 2); // Define o display com 16 colunas e 2 linhas

void loop() {
lcd.clear(); // Limpa o display do LCD
lcd.print("Ola pessoal !!"); // Imprime a string no display do LCD
// Espera 2 segundos antes de imprimir a proxima string no LCD
delay(2000);
lcd.clear();
lcd.print("Este e um");
lcd.setCursor(0,1); // Posiciona o cursor na coluna 0 linha 1 do LCD
lcd.print("controle basico");
delay(2000);
lcd.clear();
lcd.print("de LCD !!");
delay(2000);
lcd.clear();
lcd.print("www.facacomarduino.info");
delay(1000);
for (int i = 0; i < 16; i++) { // Rolando o display para a esquerda 16 vezes
lcd.scrollDisplayLeft();
delay(600);
}
}

delay(3000);

Para certificar se o cdigo est correto pressione o boto Verify/Compile. Se tudo estiver
correto pressione o boto Upload para fazer o upload do cdigo para seu Arduino. Pronto,
agora voc poder ajustar o contraste e luz de fundo para melhor visualizao.

[ 35 ]

Projetos com Arduino por Willian Scollonoff

Projeto 09 Sensor de temperatura com LCD

Ol pessoal, j vimos basicamente como utilizar um LCD com o Arduino, agora vamos
utilizar o mesmo esquema anterior acrescentando um sensor temperatura LM35 - que
tambm j vimos. Este projeto tem pouca complexidade, desde que montado com calma
para no se perderem nas conexes dos jumpers. Os cdigos sero todos comentados para
melhor entendimento, podendo ser retirados aps a compreenso de cada linha. Bom
trabalho !!!

[ 36 ]

Projetos com Arduino por Willian Scollonoff

COMPONENTES NECESSRIOS
1 Arduino Uno R3
1 Protobord
1 LCD (JHD 162A de 16 colunas e 2 linhas) ou outro modelo com back light
2 Potencimetros de 10K ohms (Um para o contraste e o outro para a luz de fundo) *
1 Sensor LM35
Fios jumpers
* Este modelo que utilizei no possui o back light, porm o projeto foi montado com se
tivesse essa funo.
CONECTANDO OS COMPONENTES
Primeiro, certifique-se de que seu Arduino esteja desligado, desconectando-o do cabo USB.
Agora, pegue o LCD, os potencimetros, o sensor LM35 e os fios e conecte-os como mostra
a figura.

[ 37 ]

Projetos com Arduino por Willian Scollonoff

No importa se voc utiliza fios de cores diferentes ou furos diferentes na protoboard,


desde que os componentes e os fios estejam conectados na mesma ordem da figura.
Tenha cuidado ao inserir os componentes na protoboard. Caso sua protoboard seja nova, a
superfcie dos furos ainda estar rgida. A no insero cuidadosa dos componentes pode
resultar em danos. Certifique-se de que todos os componentes estejam conectados
corretamente. Quando voc estiver seguro de que tudo foi conectado corretamente, ligue
seu Arduino e conecte o cabo USB.

SEGUE O ESQUEMA ABAIXO PARA MELHOR


ENTENDIMENTO
- Pino 1 do LCD ligado ao GND do Arduino;
- Pino 2 do LCD ligado ao 5V do Arduino;
- Pino 3 do LCD ligado ao pino central do primeiro
Potencimetro (controle de contraste);
- Pino 4 do LCD ligado ao pino digital 9 do Arduino;
- Pino 5 do LCD ligado ao GND do Arduino;
- Pino 6 do LCD ligado ao pino digital 8 do Arduino;
- Pino 11 do LCD ligado ao pino digital 5 do Arduino;
- Pino 12 do LCD ligado ao pino digital 4 do Arduino;
- Pino 13 do LCD ligado ao pino digital 3 do Arduino;
- Pino 14 do LCD ligado ao pino digital 2 do Arduino;
- Pino 15 do LCD ligado ao pino central do segundo
Potencimetro (controle do brilho);
- Pino 16 do LCD ligado ao GND do Arduino.
Obs.: Os demais pinos no sero utilizados neste projeto.
AGORA VAMOS AO CDIGO

[ 38 ]

Projetos com Arduino por Willian Scollonoff

// Projeto 9 - Sensor de temperatura com LCD


#include <LiquidCrystal.h>
#include <Limits.h>
// Pino analgico em que o sensor de temperatura est conectado
const int sensorTemp = 0;
// Declara o pino analgico 0 para ler o valor do sensor de temperatura
int tempPin = 0;
// Varivel usada para ler o valor de temperatura
int valorSensorTemp = 0;
// Varivel usada para armazenar o menor valor de temperatura
int valorTemp = INT_MAX;
LiquidCrystal lcd(9, 8, 5, 4, 3, 2); // Cria um objeto LCD e atribui os pinos
void setup() {
}

lcd.begin(16, 2); // Define o display com 16 colunas e 2 linhas

void loop() {
/*Para evitar as grandes variaes de leitura do componente
LM35 so feitas 6 leitura o menor valor lido prevalece*/
// Inicializando a varivel com o maior valor int possvel
valorTemp = INT_MAX;
for (int i = 1; i <= 6; i++) { // Lendo o valor do sensor de temperatura
valorSensorTemp = analogRead(sensorTemp);
// Transforma o valor lido do sensor de temperatura em graus celsius...
//aproximados
valorSensorTemp *= 0.54 ;
// Mantendo sempre a menor temperatura lida
if (valorSensorTemp < valorTemp) {
valorTemp = valorSensorTemp;
}
delay(100);
}
// Exibindo valor da leitura do sensor de temperatura no display LCD
lcd.clear(); // Limpa o display do LCD
lcd.print("Temperatura:"); // Imprime a string no display do LCD
[ 39 ]

Projetos com Arduino por Willian Scollonoff

lcd.print(valorTemp);
lcd.write(B11011111); // Smbolo de graus Celsius
lcd.print("C");
delay(2000); // Aguarda 2 segundos
}
Para certificar se o cdigo est correto pressione o boto Verify/Compile. Se tudo estiver
correto pressione o boto Upload para fazer o upload do cdigo para seu Arduino. Pronto,
agora voc ir visualizar no visor do LCD a temperatura que est no ambiente em que voc
se encontra. Caso seja necessrio, ajuste o contraste e luz de fundo para melhor
visualizao.

Projeto 10 Controle de temperatura com LCD e cooler

Ol pessoal, j vimos basicamente como utilizar um LCD com o Arduino, agora vamos fazer
um pequena aplicao utilizando o mesmo esquema do projeto anterior acrescentando um
cooler. Este projeto tem pouca complexidade, desde que montado com calma para no se
perderem nas inseres dos jumpers. Os cdigos sero todos comentados para melhor
entendimento, podendo ser retirados aps a compreenso de cada linha. Bom trabalho !!!
COMPONENTES NECESSRIOS
1 Arduino Uno R3
1 Protobord
1 LCD (JHD 162A de 16 colunas e 2 linhas) ou outro modelo com back light
2 Potencimetros de 10K ohms (Um para o contraste e o outro para a luz de fundo) *
1 Sensor LM35
1 Cooler **

[ 40 ]

Projetos com Arduino por Willian Scollonoff

Fios jumpers
* Este modelo que utilizei no possui o back light, porm o projeto foi montado com se
tivesse essa funo.
** Dependendo do cooler que voc utilizar ser necessria uma fonte externa para
aliment-lo. Uma vez que a sada do Arduino possui apenas 5V.
CONECTANDO OS COMPONENTES
Primeiro, certifique-se de que seu Arduino esteja desligado, desconectando-o do cabo USB.
Agora, pegue o LCD, os potencimetros, o sensor LM35, o cooler e os fios e conecte-os

como mostra a figura.

[ 41 ]

Projetos com Arduino por Willian Scollonoff

No importa se voc utiliza fios de cores diferentes ou furos diferentes na protoboard,


desde que os componentes e os fios estejam conectados na mesma ordem da figura.
Tenha cuidado ao inserir os componentes na protoboard. Caso sua protoboard seja nova, a
superfcie dos furos ainda estar rgida. A no insero cuidadosa dos componentes pode
resultar em danos. Certifique-se de que todos os componentes estejam conectados
corretamente. Quando voc estiver seguro de que tudo foi conectado corretamente, ligue
seu Arduino e conecte o cabo USB.
SEGUE O ESQUEMA ABAIXO PARA MELHOR ENTENDIMENTO
- Pino 1 do LCD ligado ao GND do Arduino;
- Pino 2 do LCD ligado ao 5V do Arduino;
- Pino 3 do LCD ligado ao pino central do primeiro
Potencimetro (controle de contraste);
- Pino 4 do LCD ligado ao pino digital 9 do Arduino;
- Pino 5 do LCD ligado ao GND do Arduino;
- Pino 6 do LCD ligado ao pino digital 8 do Arduino;
- Pino 11 do LCD ligado ao pino digital 5 do Arduino;
- Pino 12 do LCD ligado ao pino digital 4 do Arduino;
- Pino 13 do LCD ligado ao pino digital 3 do Arduino;
- Pino 14 do LCD ligado ao pino digital 2 do Arduino;
- Pino 15 do LCD ligado ao pino central do segundo
Potencimetro (controle do brilho);
- Pino 16 do LCD ligado ao GND do Arduino.

[ 42 ]

Projetos com Arduino por Willian Scollonoff

Obs.: Os demais pinos no sero utilizados neste projeto


AGORA VAMOS AO CDIGO
// Projeto 10 - Controle de temperatura com LCD e Cooler
#include <LiquidCrystal.h>
#include <Limits.h>
// Pino analgico em que o sensor de temperatura est conectado
const int sensorTemp = 0;
int fan = 13; // Declara o pino digital 13 para acionar o cooler
// Declara o pino analgico 0 para ler o valor do sensor de temperatura
int tempPin = 0;
int valorSensorTemp = 0; // Varivel usada para ler o valor de temperatura
// Varivel usada para armazenar o menor valor de temperatura
int valorTemp = INT_MAX;
// Cria um objeto LCD e atribui os pinos
LiquidCrystal lcd(9, 8, 5, 4, 3, 2);
void setup() {

pinMode (fan, OUTPUT); // Define o pino 13 como sada


lcd.begin(16, 2); // Define o display com 16 colunas e 2 linhas

void loop() {
/*Para evitar as grandes variaes de leitura do componente
LM35 so feitas 6 leitura o menor valor lido prevalece*/
// Inicializando a varivel com o maior valor int possvel
valorTemp = INT_MAX;
for (int i = 1; i <= 6; i++) { // Lendo o valor do sensor de temperatura
valorSensorTemp = analogRead(sensorTemp);
// Transforma o valor lido do sensor de temperatura em graus...
//Celsius aproximados
valorSensorTemp *= 0.54 ;
// Mantendo sempre a menor temperatura lida
if (valorSensorTemp < valorTemp) {
valorTemp = valorSensorTemp;

[ 43 ]

Projetos com Arduino por Willian Scollonoff

}
delay(100);
}
if(valorTemp > 35) // Indica condio para acionamento do cooler
{
// Define a coluna 0 e linha 1 do LCD onde ser impresso a string
lcd.setCursor(0,1);
lcd.write("Fan ligado !"); // Imprime no LCD
digitalWrite(fan, HIGH); // Quando condio verdadeira, liga o cooler
}
else
{
lcd.setCursor(0,1);
lcd.write("Fan desligado !");
// Desliga cooler quando este estiver a baixo da valorTemp, indicando...
//no LCD que esta desligado
digitalWrite(fan, LOW);
}
delay(1000);
// Exibindo valor da leitura do sensor de temperatura no display LCD
lcd.clear(); // Limpa o display do LCD
lcd.print("Temperatura:"); // Imprime a string no display do LCD
lcd.print(valorTemp);
lcd.write(B11011111); // Smbolo de graus Celsius
lcd.print("C");
}

delay(2000); // Aguarda 2 segundos

Para certificar se o cdigo est correto pressione o boto Verify/Compile. Se tudo estiver
correto pressione o boto Upload para fazer o upload do cdigo para seu Arduino. Pronto,
agora voc ir visualizar no visor do LCD a temperatura que est no ambiente e se o cooler
est desligado ou ligado - dependendo da temperatura que voc estipulou para acion-lo.
Caso seja necessrio, ajuste o contraste e luz de fundo para melhor visualizao.

[ 44 ]

Projetos com Arduino por Willian Scollonoff

Projeto 11 Controle de velocidade de um motor cc

[ 45 ]

Projetos com Arduino por Willian Scollonoff

Ol pessoal, a partir de agora vamos comear a utilizar motores com Arduino. Iniciaremos
com um motor de corrente contnua e posteriormente iremos ver outros tipos de motores
tais como: motores de passo e servo motores. Este cdigo muito simples de ser
entendido, portanto vamos l. Os cdigos sero todos comentados para melhor
entendimento, podendo ser retirados aps a compreenso de cada linha. Bom trabalho !!!
COMPONENTES NECESSRIOS
1 Arduino Uno R3
1 Protobord
1 Potencimetro de 10K ohms
1 Motor CC de 5 Volts
1 Transistor de potncia TIP120
1 Diodo Zener
Fios jumpers
CONECTANDO OS COMPONENTES

[ 46 ]

Projetos com Arduino por Willian Scollonoff

Primeiro, certifique-se de que seu Arduino esteja desligado, desconectando-o do cabo USB.
Agora, pegue o potencimetro, o motor, o transistor e os fios e conecte-os como mostra a
figura.

No

importa se voc utiliza fios de cores diferentes ou furos diferentes na protoboard, desde
que os componentes e os fios estejam conectados na mesma ordem da figura. Tenha
cuidado ao inserir os componentes na protoboard. Caso sua protoboard seja nova, a
superfcie dos furos ainda estar rgida. A no insero cuidadosa dos componentes pode
resultar em danos. Certifique-se de que todos os componentes estejam conectados

[ 47 ]

Projetos com Arduino por Willian Scollonoff

corretamente. Quando voc estiver seguro de que tudo foi conectado corretamente, ligue
seu Arduino e conecte o cabo USB.
AGORA VAMOS AO CDIGO
// Projeto 11 - Controle de velocidade de um motor CC
// Pino analgico onde o potencimetro est conectado
int const potenciometro = 1;
int const transTIP120 = 10; // Pino digital onde o TIP120 est conectado
int valPotenciometro = 0; // Armazena o valor lido no potencimetro
void setup() { // Funo executada sempre quando o Arduino ligado
}

pinMode(transTIP120, OUTPUT); // Define o pino digital 10 como sada

// Esta funo executada repetidamente enquanto o Arduino estiver ligado


void loop() {
/* Lendo o valor do potencimetro (0 at 1023) e dividindo por 4 para obter
um valor entre 0 e 255 que so valores adequados para a base do TIP120 */
valPotenciometro = analogRead(potenciometro) / 4;
// Atribui o valor lido no potencimetro a base do TIP120
analogWrite(transTIP120, valPotenciometro);
}
Para certificar se o cdigo est correto pressione o boto Verify/Compile. Se tudo estiver
correto pressione o boto Upload para fazer o upload do cdigo para seu Arduino. Pronto,
agora para aumentar ou diminuir a velocidade do motor basta girar o potencimetro.

[ 48 ]

Projetos com Arduino por Willian Scollonoff

Projeto 12 Motor de passo controlado por Arduino

Ol pessoal, j vimos como controlar um motor CC. Agora vamos ver como funciona um
motor de passo com Arduino. Neste projeto foi utilizado um Shield para controle de motor
com ULN2003. Projeto simples de ser implementado. Os cdigos sero todos comentados
para melhor entendimento, podendo ser retirados aps a compreenso de cada linha. Bom
trabalho !!!
COMPONENTES NECESSRIOS
1 Arduino Uno R3
1 Protobord
1 Modulo para motor ULN2003
1 Motor de passo modelo 28BYJ-48
Fios jumpers

[ 49 ]

Projetos com Arduino por Willian Scollonoff

CONECTANDO OS COMPONENTES
Primeiro, certifique-se de que seu Arduino esteja desligado, desconectando-o do cabo USB.
Agora, o driver, o motor de passo e os fios e conecte-os como mostra a imagem abaixo.

SEGUE O ESQUEMA ABAIXO PARA MELHOR ENTENDIMENTO


Pinos do mdulo para motor ULN2003 Pinos do Arduino
IN1
4
IN2
5
IN3
6
IN4
7
No importa se voc utiliza fios de cores diferentes ou furos diferentes na protoboard,
desde que os componentes e os fios estejam conectados na mesma ordem da figura.
Tenha cuidado ao inserir os componentes na protoboard. Caso sua protoboard seja nova, a
superfcie dos furos ainda estar rgida. A no insero cuidadosa dos componentes pode
resultar em danos. Certifique-se de que todos os componentes estejam conectados
corretamente. Quando voc estiver seguro de que tudo foi conectado corretamente, ligue
seu Arduino e conecte o cabo USB.
AGORA VAMOS AO CDIGO
// Projeto 12 - Motor de passo controlado por Arduino
// Declarando variveis para os pinos do motor

[ 50 ]

Projetos com Arduino por Willian Scollonoff

int motorPin1 = 4; // Azul - Pino 1 do motor 28BYJ-48


int motorPin2 = 5; // Rosa - Pino 2 do motor 28BYJ-48
int motorPin3 = 6; // Amarelo - Pino 3 do motor 28BYJ-48
// Laranja - Pino 4 do motor 28BYJ-48 o pino 5 (Vermelho) o pino de...
//alimentao do motor de passo (VCC)
int motorPin4 = 7;
int velocMotor = 1200; // Variveis para configurar a velocidade do motor
int contagem = 0; // Varivel usada como contador de passos
int passosPorRotacao = 512; // Nmero de passos por rontao completa
int vetorLigDesl[8] = {B01000, B01100, B00100, B00110, B00010, B00011,
B00001, B01001};
// Vetor que manipula os pinos do motor entre 0 e 1 (Desliga/Liga)
void setup() {
// Declara os pinos do motor como pinos de sada

pinMode(motorPin1,
pinMode(motorPin2,
pinMode(motorPin3,
pinMode(motorPin4,

OUTPUT);
OUTPUT);
OUTPUT);
OUTPUT);

void loop(){
if(contagem < passosPorRotacao )
sentidoHorario(); // Funo para rotacionar em sentido horrio
else if (contagem == passosPorRotacao * 2)
contagem = 0;
else
sentidoAntiHorario(); // Funo para rotacionar em sentido anti horrio
contagem++;
}
/*Configurando os pinos para ULN2003.
o delay "motorSpeed" determina o tempo para a velocidade do motor*/
void sentidoAntiHorario()
{
for(int i = 0; i < 18; i++)
{
setOutput(i);
delayMicroseconds(velocMotor);
}
}
void sentidoHorario()
{
[ 51 ]

Projetos com Arduino por Willian Scollonoff

for(int i = 17; i >= 0; i--)


{
setOutput(i);
delayMicroseconds(velocMotor);
}
}
void setOutput(int out) // Faz a manipulao de 0 e 1
{
digitalWrite(motorPin1, bitRead(vetorLigDesl[out], 0));
digitalWrite(motorPin2, bitRead(vetorLigDesl[out], 1));
digitalWrite(motorPin3, bitRead(vetorLigDesl[out], 2));
digitalWrite(motorPin4, bitRead(vetorLigDesl[out], 3));
}
Para certificar se o cdigo est correto pressione o boto Verify/Compile. Se tudo estiver
correto pressione o boto Upload para fazer o upload do cdigo para seu Arduino. Pronto,
o motor ir rotacionar para o sentido horrio e depois para o sentido anti horrio.

[ 52 ]

Projetos com Arduino por Willian Scollonoff

Projeto 13 Servo motor controlado por Arduino

Ol pessoal, j vimos como controlar um motor CC e motor de passo. Agora vamos ver
como funciona um servo motor conectado ao Arduino. Os cdigos sero todos comentados
para melhor entendimento, podendo ser retirados aps a compreenso de cada linha. Bom
trabalho !!!
COMPONENTES NECESSRIOS
1 Arduino Uno R3
1 Protobord
1 Servo motor TG9 (ou equivalente)
Fios jumpers
CONECTANDO OS COMPONENTES
Primeiro, certifique-se de que seu Arduino esteja desligado, desconectando-o do cabo USB.
Agora, pegue o servo motor e os fios e conecte-os como mostra a figura.

[ 53 ]

Projetos com Arduino por Willian Scollonoff

No importa se voc utiliza fios de cores diferentes ou furos diferentes na protoboard,


desde que os componentes e os fios estejam conectados na mesma ordem da figura.
Tenha cuidado ao inserir os componentes na protoboard. Caso sua protoboard seja nova, a
superfcie dos furos ainda estar rgida. A no insero cuidadosa dos componentes pode
resultar em danos. Certifique-se de que todos os componentes estejam conectados
corretamente. Quando voc estiver seguro de que tudo foi conectado corretamente, ligue
seu Arduino e conecte o cabo USB.
AGORA VAMOS AO CDIGO
// Projeto 13 - Servo motor controlado por Arduino
#include <Servo.h>
Servo servo1; // Cria um objeto servo
// Varivel para armazenar a posio do servo1
int pos = 0;
void setup()
{
// Agrega o objeto servo1 ao pino digital 11
servo1.attach(11);
}
void loop()
{

[ 54 ]

Projetos com Arduino por Willian Scollonoff

for(pos = 0; pos < 180; pos += 1) // Vai de 0 grau a 180 em passo de 1 grau
{
// Chama o servo1 para ir para a posio da variavel "pos"
servo1.write(pos);
delay(50); // Agurade 50ms para para o servo1 atingir a posio
}
for(pos = 180; pos>=1; pos-=1) // Vai de 180 graus ate 0
{
// Chama o servo1 para ir para a posio da variavel "pos"
servo1.write(pos);
delay(10); // Aguarda 10ms para o servo1 atingir a posio
}
}
Para certificar se o cdigo est correto pressione o boto Verify/Compile. Se tudo estiver
correto pressione o boto Upload para fazer o upload do cdigo para seu Arduino. Pronto,
agora voc poder movimentar o Joystick na horizontal e o servo tambm se movimentar
para direita e esquerda conforme seu comando.

[ 55 ]

Projetos com Arduino por Willian Scollonoff

Projeto 14 Controlando um servo motor com joystick

Ol pessoal, muitos j viram controlar um servo com potencimetro, agora vamos ver
como controlar um servo com joystick. Com este projeto voc pode facilmente controlar a
rotao de uma cmera, de uma cabea de um rob ou qualquer outro controle que
envolva movimento, no difcil de ser implementado, por tanto vamos l. Os cdigos
sero todos comentados para melhor entendimento, podendo ser retirados aps a
compreenso de cada linha. Bons projetos a todos !!
COMPONENTES NECESSRIOS
1 Arduino Uno R3
1 Protobord
1 Mdulo de Joystick PS2
1 Servo motor TG9
Fios jumpers

[ 56 ]

Projetos com Arduino por Willian Scollonoff

CONECTANDO OS COMPONENTES
Primeiro, certifique-se de que seu Arduino esteja desligado, desconectando-o do cabo USB.
Agora, pegue o mdulo, o servo e os fios e conecte-os como mostra a figura.

No importa se voc utiliza fios de cores diferentes ou furos diferentes na protoboard,


desde que os componentes e os fios estejam conectados na mesma ordem da figura.
Tenha cuidado ao inserir os componentes na protoboard. Caso sua protoboard seja nova, a
superfcie dos furos ainda estar rgida. A no insero cuidadosa dos componentes pode
resultar em danos. Certifique-se de que todos os componentes estejam conectados
corretamente. Quando voc estiver seguro de que tudo foi conectado corretamente, ligue
seu Arduino e conecte o cabo USB.
AGORA VAMOS AO CDIGO
// Projeto 14 - Controlando um servo motor com Joystick
#include <Servo.h>
Servo servo1; // Cria um objeto servo
int portCom; // Cria uma varivel para armazenar dados do Joystick
int servoPin = 11; // Pino digital 11 conectado no servo1
void setup(){
servo1.attach(servoPin);
servo1.write(90); // Inicia o servo1 em 90 graus
}
void loop(){
portCom = analogRead(0); // Pino X do Joystick para receber dados
// Faz um mapeamento dos dados recebidos
portCom = map(portCom, 0, 1023, 0, 180);
// O servo se movimenta de acordo com a posio do Joystick
servo1.write(portCom);
delay(15); // Tempo leitura do pino analogico A0

[ 57 ]

Projetos com Arduino por Willian Scollonoff

}
Para certificar se o cdigo est correto pressione o boto Verify/Compile. Se tudo estiver
correto pressione o boto Upload para fazer o upload do cdigo para seu Arduino. Pronto,
agora voc poder movimentar o Joystick na horizontal e o servo tambm se movimentar
para direita e esquerda conforme seu comando.

[ 58 ]

Projetos com Arduino por Willian Scollonoff

Projeto 15 Sensor Ultrassnico Bsico

Ol pessoal, vamos aprender como utilizar o sensor ultrassnico em nossos projetos. O


modelo utilizado ser o HC-SRO4 encontrado em qualquer loja que contenha componentes
para Arduino. Os cdigos sero todos comentados para melhor entendimento, podendo ser
retirados aps a compreenso de cada linha. Bom trabalho !!!
COMPONENTES NECESSRIOS
1 Arduino Uno R3
1 Protoboard
1 Mdulo ultrassnico HC-SRO4
Fios jumpers
CONECTANDO OS COMPONENTES
Primeiro, certifique-se de que seu Arduino esteja desligado, desconectando-o do cabo USB.
Agora, pegue o sensor

ultrassnico e os fios e

conecte-os

mostra a figura.

como

[ 59 ]

Projetos com Arduino por Willian Scollonoff

No importa se voc utiliza fios de cores diferentes ou furos diferentes na protoboard,


desde que os componentes e os fios estejam conectados na mesma ordem da figura.
Tenha cuidado ao inserir os componentes na protoboard. Caso sua protoboard seja nova, a
superfcie dos furos ainda estar rgida. A no insero cuidadosa dos componentes pode
resultar em danos. Certifique-se de que todos os componentes estejam conectados
corretamente. Quando voc estiver seguro de que tudo foi conectado corretamente, ligue
seu Arduino e conecte o cabo USB.
AGORA VAMOS AO CDIGO
// Projeto 15 - Sensor ultrasnico bsico
#define trigPin 12
#define echoPin 13
void setup() {
Serial.begin (9600);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
}
void loop() {
long duration, distance;
// Configura o pino 12 com um pulso baixo "LOW" ou desligado ou ainda 0
digitalWrite(trigPin, LOW);
delayMicroseconds(2); // Aguarda 2 microssegundos
// Configura o pino 12 com pulso alto "HIGH" ou ligado ou ainda 1
digitalWrite(trigPin, HIGH);
delayMicroseconds(10); // Aguarda 10 microssegundos
// Configura o pino 12 com pulso baixo novamente
digitalWrite(trigPin, LOW);
// PulseIn l o tempo entre a chamada e o pino entrar em High
duration = pulseIn(echoPin, HIGH);
/*Esse calculo baseado em s = v . t, lembrando que o tempo vem dobrado
porque o tempo de ida e volta do ultrassom */

[ 60 ]

Projetos com Arduino por Willian Scollonoff

distance = ((duration/2) / 29.1);


Serial.print(distance);
Serial.println(" Cm");
}

delay(500);

Para certificar se o cdigo est correto pressione o boto Verify/Compile. Se tudo estiver
correto pressione o boto Upload para fazer o upload do cdigo para seu Arduino. Pronto,
abra o Serial Monitor e coloque um objeto na frente no sensor ultrassnico e voc ver a
distncia que o objeto est em relao ao sensor.
IMAGEM DO SERIAL MONITOR

IMAGEM DO PROJETO PRONTO

[ 61 ]

Projetos com Arduino por Willian Scollonoff

Projeto 16 Sensor de r para automvel

Ol pessoal, vamos fazer agora um sensor de r que emite um alerta sonoro quando um
objeto chega a uma certa distncia. Para ficar mais visvel iremos utilizar um LCD que nos
informar a distncia do objeto prximo ao sensor. Os cdigos sero todos comentados
para melhor entendimento, podendo ser retirados aps a compreenso de cada linha. Bom
trabalho !!!
COMPONENTES NECESSRIOS
1 Arduino Uno R3
1 Protobord
1 Mdulo ultrassnico HC-SRO4
1 LCD (JHD 162A de 16 colunas e 2 linhas) ou outro modelo com back light
2 Potencimetros de 10 K ohms (Um para o contraste e o outro para a luz de fundo) *

[ 62 ]

Projetos com Arduino por Willian Scollonoff

1 Sonorizador piezo
Fios jumpers
* Este modelo que utilizei no possui o back light, porm o projeto foi montado com se
tivesse essa funo.
Obs.: Verifique a polaridade do sonorizador piezo.
CONECTANDO OS COMPONENTES
Primeiro, certifique-se de que seu Arduino esteja desligado, desconectando-o do cabo USB.
Agora, pegue o sensor ultrassnico, o LCD, o piezo, os potencimetros e os fios e conectemostra a figura.

os como

No importa se voc utiliza fios de cores diferentes ou furos diferentes na protoboard,


desde que os componentes e os fios estejam conectados na mesma ordem da figura.
Tenha cuidado ao inserir os componentes na protoboard. Caso sua protoboard seja nova, a
superfcie dos furos ainda estar rgida. A no insero cuidadosa dos componentes pode
resultar em danos. Certifique-se de que todos os componentes estejam conectados
corretamente. Quando voc estiver seguro de que tudo foi conectado corretamente, ligue
seu Arduino e conecte o cabo USB.
AGORA VAMOS AO CDIGO
// Projeto 16 - Sensor de r para automvel

[ 63 ]

Projetos com Arduino por Willian Scollonoff

#include <LiquidCrystal.h> // Biblioteca necessria para iniciar o LCD


#define buzina 6 // Define um varivel chamada buzina no pino digital 6
#define trigPin 12
#define echoPin 13
LiquidCrystal lcd(9, 8, 5, 4, 3, 2); // Cria um objeto LCD e atribui os pinos
void setup() {
lcd.begin(12, 6); // Inicializa o LCD
pinMode(buzina, OUTPUT); // Declara o pino 6 como sada
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
}
void loop() {
long duration, distance;
// Configura o pino 12 com um pulso baixo "LOW" ou desligado ou ainda 0
digitalWrite(trigPin, LOW);
delayMicroseconds(2); // Aguarda 2 microssegundos
// Configura o pino 12 com pulso alto "HIGH" ou ligado ou ainda 1
digitalWrite(trigPin, HIGH);
delayMicroseconds(10); // Aguarda 10 microssegundos
// Configura o pino 12 com pulso baixo novamente
digitalWrite(trigPin, LOW);
// PulseIn l o tempo entre a chamada e o pino entrar em High
duration = pulseIn(echoPin, HIGH);
/*Esse calculo baseado em s = v . t, lembrando que o tempo vem dobrado
porque o tempo de ida e volta do ultrassom */
distance = ((duration/2) / 29.1);
lcd.clear();
lcd.print("Distancia:");
lcd.print(distance);
lcd.print(" CM");
{
delay(500);
}
[ 64 ]

Projetos com Arduino por Willian Scollonoff

// Condio para ativar a buzina quando atingir a distncia necessria


if(distance < 30){
digitalWrite(buzina, HIGH); // Pino lgico 6 habilitado (5 Volts)
lcd.setCursor(0,1);
lcd.println("Muito proximo ! ");
}
else
{
digitalWrite(buzina, LOW); // Pino lgico 6 desabilitado (0 Volts)
lcd.setCursor(0,1);
lcd.println("Ainda seguro ! ");
}
delay(500);
}
Para certificar se o cdigo est correto pressione o boto Verify/Compile. Se tudo estiver
correto pressione o boto Upload para fazer o upload do cdigo para seu Arduino. Pronto,
agora gire os potencimetros para regular o contraste e o brilho. Coloque algum objeto
prximo ao ultrassnico e quando o objeto chegar ao uma distncia inferior a 30 cm o
piezo emitir um som de alerta. Isso tudo voc tambm poder visualizar no LCD.

[ 65 ]

Projetos com Arduino por Willian Scollonoff

Projeto 17 Gravando um arquivo .DOC no SD CARD

Ol pessoal, agora vamos ver como gravar e visualizar um arquivo .doc no carto SD,
gravando com o Arduino e visualizando o arquivo no notebook, desktop, tablet, ou at
mesmo no seu smartphone. Neste projeto foi utilizado um adaptador de microSD da
Samsung, no tive problemas com este carto, portanto se houver problemas com o que
voc utilizar deixe um comentrio. Os cdigos sero todos comentados para melhor
entendimento, podendo ser retirados aps a compreenso de cada linha. Bom trabalho !!!
Obs. importante: Antes de compilar, coloque o carto SD.
COMPONENTES NECESSRIOS
1 Arduino Uno R3
1 Protobord
1 Modulo SD

[ 66 ]

Projetos com Arduino por Willian Scollonoff

Fios jumpers

CONECTANDO OS COMPONENTES
Primeiro, certifique-se de que seu Arduino esteja desligado, desconectando-o do cabo USB.
Agora, pegue o mdulo e os fios e conecte-os como mostra a figura.

Pinos do mdulo SDPinos do Arduino


MOSI
11
MISO
12
CLK ou SCK
13
CS
6

Obs.: Neste modulo tem que conectar tambm o 2 GND, 1 Vcc de 3V e 1 Vcc 5V todos no
Arduino.
No importa se voc utiliza fios de cores diferentes ou furos diferentes na protoboard,
desde que os componentes e os fios estejam conectados na mesma ordem da figura.
Tenha cuidado ao inserir os componentes na protoboard. Caso sua protoboard seja nova, a
superfcie dos furos ainda estar rgida. A no insero cuidadosa dos componentes pode
resultar em danos. Certifique-se de que todos os componentes estejam conectados
corretamente. Quando voc estiver seguro de que tudo foi conectado corretamente, ligue
seu Arduino e conecte o cabo USB.

[ 67 ]

Projetos com Arduino por Willian Scollonoff

AGORA VAMOS AO CDIGO


//Projeto 17 - Gravando um arquivo .doc no SD Card
#include <SD.h> // Biblioteca para manipular os dados no Carto
// Criao de uma varivel para guardar os dados inseridos
File meuArquivo;
void setup()
{
// Abre a comunicao serial liberando a porta
Serial.begin(9600);
while (!Serial) {
}

; // Aguarda a porta serial conectar.

Serial.print("Inicializando SD card..."); // Inicializa o carto SD


// Esta condio analisa se o carto est inserido corretamente no shield
if (!SD.begin(6)) {
Serial.println("A inicializacao falhou! ");
return;
}
// Imprime no Serial Monitor que foi bem sucedida a insero do SD card
Serial.println("Inicializacao concluida! ");
// Abre o arquivo test.doc
meuArquivo = SD.open("test.doc", FILE_WRITE);
// Se o arquivo esta ok, ento ser escrito isso
if (meuArquivo) {
Serial.print("Escrevendo test.doc...");
meuArquivo.println("Parabens voce conseguiu! www.facacomarduino.info");
// Fecha o arquivo:
meuArquivo.close();
Serial.println("Concluido! ");
} else {
// Se o arquivo no abriu, um menssagem de erro ser mostrada
Serial.println("Erro ao abrir arquivo test.doc");
}
// Abre novamente o arquivo para l-lo
meuArquivo = SD.open("test.doc");

[ 68 ]

Projetos com Arduino por Willian Scollonoff

if (meuArquivo) {
Serial.println("test.doc:");
// Le o arquivo at que no h mais nada nele
while (meuArquivo.available()) {
Serial.write(meuArquivo.read());
}
// Fecha o arquivo
meuArquivo.close();
} else {
// Se o arquivo no abriu, ser mostrado uma menssagem de erro

Serial.println("Erro ao abrir arquivo test.doc");

void loop()
{
// Nada acontece aqui
}
Para certificar se o cdigo est correto pressione o boto Verify/Compile. Se tudo estiver
correto pressione o boto Upload para fazer o upload do cdigo para seu Arduino. Pronto,
abra o Serial Monitor e logo voc ver os passos para gravao do arquivo, assim que
gravar retire o carto e insira-o no computador l ter um arquivo chamado TEST, clique
nele e ele ser aberto.

[ 69 ]

Projetos com Arduino por Willian Scollonoff

CAPTURA DO SERIAL MONITOR

CAPTURA DENTRO DA RAIZ DO SD CARD

[ 70 ]

Projetos com Arduino por Willian Scollonoff

Projeto 18 Sensor de umidade e temperatura DHT11

Ol pessoal, sabemos que a umidade relativa do ar influencia na nossa sensao de


conforto, sendo uma umidade de 45% uma umidade ideal. A umidade baixa pode provocar
alguns efeitos no ser humano, tais como: ressecamento da pele, aumento na eletricidade
esttica, entre outras. Por isso vamos aprender como utilizar o sensor DHT11. Este sensor
um pequeno mdulo comprado em sites da China ou no Brasil. Voc pode utilizar este
projeto para monitora a temperatura e a umidade em algum lugar de sua residncia, ento
vamos l. Os cdigos sero todos comentados para melhor entendimento, podendo ser
retirados aps a compreenso de cada linha. Bom trabalho !!!
COMPONENTES NECESSRIOS
1 Arduino Uno R3
1 Protoboard
1 Display LCD 16X2
1 Mdulo DHT11

[ 71 ]

Projetos com Arduino por Willian Scollonoff

1 Potencimetros de 10K (Para controle de contraste) *


Fios jumpers
*Voc pode utilizar mais um potencimetro para controle de brilho (Verifique o Projeto 10
- Controle de temperatura com LCD e cooler);
Observao importante: Antes de compilar o cdigo voc deve antes adicionar a biblioteca
do sensor antes, por isso siga os passos para faz-lo.
FAZENDO O DOWNLOAD E IMPORTANDO A BIBLIOTECA DO DHT11
1) Acesse o
link https://onedrive.live.com/?cid=F877FDED1DE63FAA&id=F877FDED1DE63FAA%21122;
2) Faa o download do arquivo DHT11;
3) Descompacte o arquivo;
4) Agora entre no diretrio (C:) e na pasta Arquivos de Programas, Arduino, libraries, copie
o arquivo descompactado nesta pasta;
5) Pronto para utilizar;
CONECTANDO OS COMPONENTES
Primeiro, certifique-se de que seu Arduino esteja desligado, desconectando-o do cabo USB.
Agora, pegue o mdulo DHT11, o potencimetro, o LCD e os fios e conecte-os como
mostra a figura.

[ 72 ]

Projetos com Arduino por Willian Scollonoff

No importa se voc utiliza fios de cores diferentes ou furos diferentes na protoboard,


desde que os componentes e os fios estejam conectados na mesma ordem da figura.
Tenha cuidado ao inserir os componentes na protoboard. Caso sua protoboard seja nova, a
superfcie dos furos ainda estar rgida. A no insero cuidadosa dos componentes pode
resultar em danos. Certifique-se de que todos os componentes estejam conectados
corretamente. Quando voc estiver seguro de que tudo foi conectado corretamente, ligue
seu Arduino e conecte o cabo USB.
AGORA VAMOS AO CDIGO
// Projeto 18 - Sensor de temperatura com LCD
#include <LiquidCrystal.h> // Biblioteca utilizada para controle do LCD
#include <dht11.h> // Biblioteca utilizada para controle de sensor DHT11
dht11 DHT; // Cria um objeto que o sensor DHT11
// Pino analgico em que o sensor DHT11 est conectado
const int dhtpin = A0;
LiquidCrystal lcd(9, 8, 5, 4, 3, 2); // Cria um objeto LCD e atribui os pinos
void setup() {
lcd.begin(16, 2); // Define o display com 16 colunas e 2 linhas
}
void loop() {
DHT.read(dhtpin); //L as informaes do sensor

// Exibindo valor da leitura do sensor de temperatura no display LCD


lcd.clear(); // Limpa o display do LCD
lcd.print("Temperatura:"); // Imprime a string no display do LCD
lcd.print(DHT.temperature);
lcd.write(B11011111); // Smbolo de graus Celsius
lcd.print("C");
lcd.setCursor(0,1); // Coloca o cursor na linha 0 e coluna 1
lcd.print("Umidade:");
lcd.print(DHT.humidity);
lcd.print("%");
delay(2000); // Aguarda 2 segundos

Para certificar se o cdigo est correto pressione o boto Verify/Compile. Se tudo estiver
correto pressione o boto Upload para fazer o upload do cdigo para seu Arduino. Pronto,

[ 73 ]

Projetos com Arduino por Willian Scollonoff

voc agora pode ajustar o contraste girando o potencimetro, e verificar a umidade e a


temperatura do ambiente.

Projeto 19 Arduino como osciloscpio

Ol pessoal, ns que gostamos de mexer com eletrnica sempre ficamos na curiosidade de


sabermos qual o tipo de onda que est sendo gerada em um circuito qualquer, pois
ento vamos aprender como fazer um osciloscpio com o Arduino, o programa muito til
e fcil de utilizar, com ele podemos tirar nossa curiosidade em relao as ondas em
circuitos eletrnicos. Vamos saciar nossa curiosidade? Os cdigos sero todos comentados
para melhor entendimento, podendo ser retirados aps a compreenso de cada linha. Bom
trabalho !!!
COMPONENTES NECESSRIOS
1 Arduino Uno R3
1 Protoboard
1 Potencimetro de 10K (Ou outro equivalente)

[ 74 ]

Projetos com Arduino por Willian Scollonoff

Fios jumpers

FAA O DOWNLOAD DO ARQUIVO SEGUINDO OS PASSOS ABAIXO:


1)

Faa

download

do

arquivo

Arquivos

Osciloscpio

emhttps://onedrive.live.com/?cid=F877FDED1DE63FAA&id=F877FDED1DE63FAA%21122;
2) Aps feito o download, descompacte o arquivo;
3) Coloque o potencimetro na protoboard e conecte um fio jumper no pino analgico A0
do Arduino e no pino central do potencimetro (como mostra a figura abaixo);
4) Com o Arduino conectado ao computador abra o arquivo XOscillo, abrir a IDE com o
cdigo, logo aps isto voc dever grava-lo em seu Arduino;
5) Depois de gravar o cdigo, abra o programa executvel XOscillo;
6) Com o programa aberto clique na abra File, New Analog Arduino e pronto;
7) Gire o potencimetro e voc ir ver a oscilao no respectivo programa;
CONECTANDO OS COMPONENTES

[ 75 ]

Projetos com Arduino por Willian Scollonoff

IMAGEM DETALHADA DO PROGRAMA XOSCILLO

Obs.: A imagem acima mostra alguns recursos disponveis que o programa oferece,
explore-o e ter mais conhecimento cada vez mais.
Para certificar se o cdigo est correto pressione o boto Verify/Compile. Se tudo estiver
correto pressione o boto Upload para fazer o upload do cdigo para seu Arduino.

[ 76 ]

Projetos com Arduino por Willian Scollonoff

Projeto 20 Arduino como um gerador de frequncia (onda


quadrada)

Ol pessoal, neste projeto vou ensinar como fazer do Arduino um gerador de frequncias
em ondas quadras variando de 0Hz a 980Hz mostrando no Serial Monitor a passagem das
frequncias geradas a cada 2 segundos. Os pinos 5 e 6 tem uma frequncia de
aproximadamente 980Hz enquanto os demais pinos possuem apenas 490Hz. Utilizei o a
funo tone para gerar as frequncias no pino 6 do Arduino. Com este projeto voc pode
controlar leds, motores, sonorizador piezo ou at mesmo inserir este sinal em filtros. O
cdigo bem simples e de fcil compreenso. Os cdigos sero todos comentados para
melhor entendimento, podendo ser retirados aps a compreenso de cada linha. Bom
trabalho !!!

[ 77 ]

Projetos com Arduino por Willian Scollonoff

Para voc visualizar o monitor serial selecione a opo Tools, Serial Monitor (ou
Ctrl+Shift+M) e pronto.

COMPONENTES NECESSRIOS
1 Arduino Uno R3
1 Sonozidor piezo
Fios jumpers
CONECTANDO OS COMPONENTES
Primeiro, certifique-se de que seu Arduino esteja desligado, desconectando-o do cabo USB.
Agora, pegue o sonorizador e conecte o como mostra a figura. Observao importante:
Verificar a polaridade do sonozidaror.

No importa se voc utiliza fios de cores diferentes ou furos diferentes na protoboard,


desde que os componentes e os fios estejam conectados na mesma ordem da figura.
Tenha cuidado ao inserir os componentes na protoboard. Caso sua protoboard seja nova, a
superfcie dos furos ainda estar rgida. A no insero cuidadosa dos componentes pode
resultar em danos.

[ 78 ]

Projetos com Arduino por Willian Scollonoff

Certifique-se de que todos os componentes estejam conectados corretamente. Quando


voc estiver seguro de que tudo foi conectado corretamente, ligue seu Arduino e conecte o
cabo USB.

AGORA VAMOS AO CDIGO


// Projeto 20 Arduino como um gerador de frequncia (Onda quadrada)
void setup() {
Serial.begin(9600); // Inicia o Serial Monitor
}
void loop() {
// Imprime na tela a frequncia gerada
Serial.println("A frequencia eh de: 0 Hz");
{
tone(6, 0); // Defini o pino em OUTPUT, e a frequencia gerada no pino
delay(2000); // Gera a frequncia por 2 segundos
}
Serial.println("A frequencia eh de: 100 Hz");
{
tone(6, 100); delay(2000);
}
Serial.println("A frequencia eh de: 200 Hz");
{
tone(6, 200); delay(2000);
}
Serial.println("A frequencia eh de: 300 Hz");
{
tone(6,300); delay(2000);
}
Serial.println("A frequencia eh de: 400 Hz");
{
tone(6,400); delay(2000);
}
Serial.println("A frequencia eh de: 500 Hz");
{
tone(6,500); delay(2000);
}
Serial.println("A frequencia eh de: 600 Hz");
{
tone(6,600); delay(2000);
}

[ 79 ]

Projetos com Arduino por Willian Scollonoff

Serial.println("A frequencia eh
{
tone(6,700); delay(2000);
}
Serial.println("A frequencia eh
{
tone(6,800); delay(2000);
}
Serial.println("A frequencia eh
{
tone(6,900); delay(2000);
}
Serial.println("A frequencia eh
{
tone(6,980); delay(2000);
}

de: 700 Hz");

de: 800 Hz");

de: 900 Hz");

de: 980 Hz");

Para certificar se o cdigo est correto pressione o boto Verify/Compile. Se tudo estiver
correto pressione o boto Upload para fazer o upload do cdigo para seu Arduino.

[ 80 ]

Projetos com Arduino por Willian Scollonoff

Projeto 21 Configurando o shield ethernet com o arduino

Ol pessoal, hoje iremos aprender como utilizar a placa ethernet junto com o Arduino, a
partir da podemos fazer vrias coisas tais como: controlar luzes em um ambiente de nossa
casa, ligar ou desligar aparelhos eletrnicos entre outras coisas, ou seja podemos fazer um
ambiente automatizado. Mas vamos partir do bsico primeiro. O shield utilizado o
Ethernet shield Wiznet W5100, onde se pode encontrar facilmente pela internet em lojas
especializadas. Ento vamos l galera! Os cdigos sero todos comentados para melhor
entendimento, podendo ser retirados aps a compreenso de cada linha. Bom trabalho !!
COMPONENTES NECESSRIOS
1 Arduino Uno R3
1 Ethernet shield Wiznet W5100
CONECTANDO OS COMPONENTES

[ 81 ]

Projetos com Arduino por Willian Scollonoff

Primeiro, certifique-se de que seu Arduino esteja desligado, desconectando-o do cabo USB.
Agora, conecte o shield ethernet como mostra a figura abaixo:

CONECTANDO O CABO DE REDE


Com o shield devidamente encaixado no Arduino, agora devemos lig-lo ao cabo de rede e
a energia com o cabo USB. Na parte superior temos os leds de indicao que mostram o
funcionamento do mdulo e o status de conexo da rede como as figuras abaixo:

[ 82 ]

Projetos com Arduino por Willian Scollonoff

AGORA VAMOS AO CDIGO


// Projeto 21 Configurando o shield ethernet com o Arduino
// Protocolo utilizado para fazer a comunicao com o Arduino e...
//Shield Ethernet
#include <SPI.h>
#include <Ethernet.h> // Biblioteca utilizada para funes internas do shield
// A linha abaixo permite definir o endereo fsico (MAC ADDRESS) da placa...
//de rede.
byte mac[] = { 0xAB, 0xCD, 0x12, 0x34, 0xFF, 0xCA };
//Os valores abaixo definem o endereo IP, gateway e mscara.
IPAddress ip(192,168,2,104); // Define o endereo IP.
IPAddress gateway(192,168,2,254); // Define o gateway.
IPAddress subnet(255, 255, 255, 0); // Define a mscara de rede.
void setup()
{
Ethernet.begin(mac, ip); // Inicializa a placa com os dados fornecidos
}

[ 83 ]

Projetos com Arduino por Willian Scollonoff

void loop() { // Nada a declarar na funo de loop.


}
Para certificar se o cdigo est correto pressione o boto Verify/Compile. Se tudo estiver
correto pressione o boto Upload para fazer o upload do cdigo para seu Arduino.
OBS.: PARA VISUALIZAR AS DEFINIES DE SUA REDE PARA PREENCHER OS
DADOS DE IP, GATEWAY E SUBNET, SIGA OS PASSOS ABAIXO:
1) Entre no campo executar de seu Windows;
2) Digite CMD, ir abrir a tela do DOS;
3) Digite ipconfig, e aperte ENTER;
4) Pronto os dados reais de sua rede sero mostrados;
5) Preencha o cdigo acima com os dados, e pronto;
TESTANDO A PLACA
Com o programa j copilado vamos verificar de agora esta funcionando corretamente, siga
os passos abaixo.
1) Entre no campo executar de seu Windows;
2) Digite CMD, ir abrir a tela do DOS;
3) Digite ping 192.168.2.104 (este IP voc deve trocar pelo seu), e aperte ENTER;
4) Aps feito isto voc ver uma tela parecida como a figura abaixo:

[ 84 ]

Projetos com Arduino por Willian Scollonoff

Se voc fizer corretamente todos os passos acima, ento sua placa estar configurada
corretamente! Aguardem, pois iremos acionar leds utilizando a internet como se fosse um
controle remoto.

[ 85 ]

Projetos com Arduino por Willian Scollonoff

Projeto 22 Ascendendo LED com shield ethernet

Ol pessoal, hoje iremos aprender como ligar e desligar um LED utilizando o Ethernet
shield Wiznet W5100, este Shield voc pode encontrar facilmente pela internet em lojas
especializadas, comeando pelo bsico voc pode acionar motores, reles para acionar
diversos equipamentos dentro ou fora de sua casa como monitoramento de alarme, porto
eletrnico, enfim muito pode ser feito com este pequeno Shield, mas primeiro vamos
ascender um LED. Ento vamos l galera! Os cdigos sero todos comentados para melhor
entendimento, podendo ser retirados aps a compreenso de cada linha. Bom trabalho !!!
COMPONENTES NECESSRIOS
1 Arduino Uno R3
1 Ethernet shield Wiznet W5100
1 LED (qualquer cor)
1 Resistor de 300

[ 86 ]

Projetos com Arduino por Willian Scollonoff

Fios jumpers
CONECTANDO OS COMPONENTES
Primeiro, certifique-se de que seu Arduino esteja desligado, desconectando-o do cabo USB.
Agora, conecte o shield ethernet como mostra a figura abaixo:

Agora pegue o LED, o resistor e os jumpers e monte o circuito abaixo:

[ 87 ]

Projetos com Arduino por Willian Scollonoff

CONECTANDO O CABO DE REDE


Com o shield devidamente encaixado no Arduino, agora devemos lig-lo ao cabo de rede e
a energia com o cabo USB. Na parte superior temos os leds de indicao que mostram o
funcionamento do mdulo e o status de conexo da rede como as figuras abaixo:

[ 88 ]

Projetos com Arduino por Willian Scollonoff

AGORA VAMOS AO CDIGO


// Projeto 22 Ascendo LED com o Shield Ethernet
#include <SPI.h>
// Biblioteca utilizada para comunicao com o Arduino
#include <Ethernet.h>
// A linha abaixo permite definir o endereo fsico (MAC ADDRESS) da placa...
//de rede.
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte ip[] = { 192, 168, 2, 103 }; // Define o endereo IP.
// Porta onde estar aberta para comunicao Internet e Arduino.
EthernetServer server(80);
String readString;
int Pin = 9; // Pino digital onde ser ligado e desligado o LED.
void setup(){
pinMode(Pin, OUTPUT); // Define o Pino 9 como sada.
Ethernet.begin(mac, ip); // Chama o MAC e o endereo IP da placa Ethernet.

[ 89 ]

Projetos com Arduino por Willian Scollonoff

// Inicia o servidor que esta inserido junto a placa Ethernet.


server.begin();
}
void loop(){
EthernetClient client = server.available();
if (client) {
while (client.connected()) {
if (client.available()) {
char c = client.read();
if (readString.length() < 100) {
readString += c;
}
if (c == '\n') {
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println();
// A partir daqui comea os cdigos html.
client.println("<HTML>");
client.println("<BODY>");
client.println("<H1>Acende LED</H1>");
client.println("<H1>Projeto basico para demonstracao com Shield
Ethernet</H1>");
client.println("<hr />");
client.println("<br />");
client.println("<a href=\"/facacomarduino/LedOn\"\">Ascender
led</a>");
client.println("<a href=\"/facacomarduino/LedOff\"\">Apagar
led</a><br />");
client.println("</BODY>");
client.println("</HTML>");
delay(1);
client.stop();
if(readString.indexOf("facacomarduino/LedOn") > 0)
{
digitalWrite(Pin, HIGH); // Liga LED.
}
else {
if(readString.indexOf("facacomarduino/LedOff") > 0)
{
[ 90 ]

Projetos com Arduino por Willian Scollonoff

}
}
}
}

digitalWrite(Pin, LOW); // Desliga LED.

}
readString="";

Para certificar se o cdigo est correto pressione o boto Verify/Compile. Se tudo estiver
correto pressione o boto Upload para fazer o upload do cdigo para seu Arduino.
PARA VISUALIZAR AS DEFINIES DE SUA REDE SIGA OS PASSOS ABAIXO:
1) Entre no campo executar de seu Windows;
2) Digite CMD, ir abrir a tela do DOS;
3) Digite ipconfig, e aperte ENTER;
4) Pronto os dados reais de sua rede sero mostrados;
5) Se o seu IP for 192.168.2.189, voc dever mudar o ultimo digito por 4 por exemplo e
preencher no cdigo acima para no haver conflito com seu MAC / IP reais;
ASCENDENDO O LED
Com o programa j copilado vamos verificar se agora est funcionando corretamente, siga
os passos abaixo:
1) Entre em seu navegador (Eu usei o Chrome e Firefox: funcionou perfeitamente);
2) Digite na barra de endereo o IP com o ultimo digito diferente do seu, por exemplo
192.168.2.184 e ENTER;
3) Pronto voc ir ver uma pgina HTML contendo um pequena descrio e dois links
Ascender led e Apagar led, clique neles e ver o LED ascender ou apagar;
OBS.: Voc tambm pode digitar o endereo IP em seu tablet ou smarthone, ligando ou
desligando o LED.

[ 91 ]

Projetos com Arduino por Willian Scollonoff

Projeto 23 Ascendendo lmpada com shield ethernet e


rel

Ol galera, j vimos com testar nossa placa ethernet, com ascender led, e agora vamos
aprender como ascender lmpada com o Shield Ethernet. Com este projeto voc tambm
poder acionar outros eletrodomsticos, como ventiladores, ar condicionados, entre outros.
O shield utilizado o Ethernet shield Wiznet W5100, onde se pode encontrar facilmente
pela internet em lojas especializadas. Ento vamos l galera! Os cdigos sero todos
comentados para melhor entendimento, podendo ser retirados aps a compreenso de
cada linha. Bom trabalho !!!
COMPONENTES NECESSRIOS
1 Arduino Uno R3
1 Ethernet shield Wiznet W5100
1 Lampada com soquete
1 Plug macho
Fios jumpers

[ 92 ]

Projetos com Arduino por Willian Scollonoff

Fio para conexo


CONECTANDO OS COMPONENTES
Primeiro, certifique-se de que seu Arduino esteja desligado, desconectando-o do cabo USB.
Agora, conecte o shield ethernet e os demais componentes assim como mostra a figura
abaixo.

CONECTANDO O CABO DE REDE


Com o shield devidamente encaixado no Arduino, agora devemos lig-lo ao cabo de rede e
a energia com o cabo USB. Na parte superior temos os leds de indicao que mostram o
funcionamento do mdulo e o status de conexo da rede como as figuras abaixo:

[ 93 ]

Projetos com Arduino por Willian Scollonoff

AGORA VAMOS AO CDIGO


// Projeto 23 Ascendendo lmpada com Shield Ethernet e rele
#include <SPI.h>
// Biblioteca utilizada para comunicao com o Arduino
#include <Ethernet.h>
// A linha abaixo permite definir o endereo fsico (MAC ADDRESS) da...
//placa de rede.
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte ip[] = { 192, 168, 2, 103 }; //Define o endereo IP.
// Porta onde estar aberta para comunicao Internet e Arduino.
EthernetServer server(80);
String readString;
int Pin = 9; // Pino digital onde ser ligado e desligado o LED.
void setup(){

[ 94 ]

Projetos com Arduino por Willian Scollonoff

pinMode(Pin, OUTPUT); // Define o Pino 9 como sada.


Ethernet.begin(mac, ip); // Chama o MAC e o endereo IP da placa Ethernet.
server.begin(); // Inicia o servidor que esta inserido junto a placa Ethernet.
}
void loop(){
EthernetClient client = server.available();
if (client) {
while (client.connected()) {
if (client.available()) {
char c = client.read();
if (readString.length() < 100) {
readString += c;
}
if (c == '\n') {
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println();
// A partir daqui comea os cdigos html.
client.println("<HTML>");
client.println("<BODY>");
client.println("<H1>Acende Lampada</H1>");
client.println("<H1>Ascendendo lampada com Shield Ethernet e
rele</H1>");
client.println("<hr />");
client.println("<br />");
client.println("<a href=\"/facacomarduino/LampadaOn\"\">Ascender
lampada</a>");
client.println("<a href=\"/facacomarduino/LampadaOff\"\">Apagar
lampada</a><br />");
client.println("</BODY>");
client.println("</HTML>");
delay(1);
client.stop();
if(readString.indexOf("facacomarduino/LampadaOn") > 0)
{
digitalWrite(Pin, HIGH); // Liga Lampada.
}
else {
if(readString.indexOf("facacomarduino/LampadaOff") > 0)
[ 95 ]

Projetos com Arduino por Willian Scollonoff

digitalWrite(Pin, LOW); // Desliga Lampada.

}
readString="";
}
}

Para certificar se o cdigo est correto pressione o boto Verify/Compile. Se tudo estiver
correto pressione o boto Upload para fazer o upload do cdigo para seu Arduino.
PARA VISUALIZAR AS DEFINIES DE SUA REDE SIGA OS PASSOS ABAIXO:
1) Entre no campo executar de seu Windows;
2) Digite CMD, ir abrir a tela do DOS;
3) Digite ipconfig, e aperte ENTER;
4) Pronto os dados reais de sua rede sero mostrados;
5) Se o seu IP for 192.168.2.189, voc dever mudar o ultimo digito por 4 por exemplo e
preencher no cdigo acima para no haver conflito com seu MAC / IP reais;
ASCENDENDO A LMPADA
Com o programa j copilado vamos verificar se agora est funcionando corretamente, siga
os passos abaixo:
1) Entre em seu navegador (Eu usei o Chrome e Firefox: funcionou perfeitamente);
2) Digite na barra de endereo o IP com o ultimo digito diferente do seu, por exemplo
192.168.2.184 e ENTER;
3) Pronto voc ir ver uma pgina HTML contendo um pequena descrio e dois links
Ascender lmpada e Apagar lmpada, clique neles e ver a lmpada ascender ou
apagar;

[ 96 ]

Projetos com Arduino por Willian Scollonoff

Projeto 24 Escrevendo em um LCD Nokia 5110

Ol pessoal, hoje iremos aprender como utilizar um LCD Nokia 5110, simples mas que
muda totalmente o projeto, deixando sua interface com visualizao das informaes muito
mais agradveis do que um LCD comum. Os cdigos sero todos comentados para melhor
entendimento, podendo ser retirados aps a compreenso de cada linha. Bom trabalho !!!
COMPONENTES NECESSRIOS
1 Resistor de 220
1 Mdulo Nokia 5110
1 Protoboard
Fios jumpers
CONECTANDO OS COMPONENTES
Primeiro, certifique-se de que seu Arduino esteja desligado, desconectando-o do cabo USB.
Agora, conecte o mdulo Nokia 5110 e o resistor assim como mostra a figura abaixo.

[ 97 ]

Projetos com Arduino por Willian Scollonoff

SEGUE O ESQUEMTICO ABAIXO PARA MELHOR ENTENDIMENTO:


Pinos LCD Nokia 5110 Pinos do Arduino
RST
11
CE
12
DC
10
Din
9
Clk
8
VCC
5V
GND
GND
FAZENDO O DOWNLOAD E IMPORTANDO A BIBLIOTECA DO LCD NOKIA 5110
1) Acesse o
link https://onedrive.live.com/?cid=F877FDED1DE63FAA&id=F877FDED1DE63FAA%21122;
2) Faa o download do arquivo LCD5110_Basic;
3) Descompacte o arquivo;
4) Agora entre no diretrio (C:) e na pasta Arquivos de Programas, Arduino, libraries, copie
o arquivo descompactado nesta pasta;
5) Pronto para utilizar;
AGORA VAMOS AO CDIGO
// Projeto 24 Escrevendo em um LCD Nokia 5110
// Biblioteca utilizada para controle do LCD Nokia 5110.
#include <LCD5110_Graph.h>

[ 98 ]

Projetos com Arduino por Willian Scollonoff

LCD5110 myGLCD(8,9,10,11,12); // Cria um objeto LCD e atribui os pinos.


// Funo que define a fonte a ser exibida como Small - pequena.
extern uint8_t SmallFont[];
int y; // Cria uma varivel para manipular o deslizar na tela.
void setup()
{
myGLCD.InitLCD(); // Inicializa o LCD.
myGLCD.setFont(SmallFont); // Setando a fonte com tamanho e formato.
randomSeed(analogRead(0)); // Joga dos para o LCD imprimindo-o.
}
void loop()
{
y = random(0, 40);
for (int i=80; i>=-(57*6); i--)
{
// Texto definido pelo usurio.
myGLCD.print("FacaComArduino-Seus melhores projetos esto aqui!!",i,y);
myGLCD.update(); // Atualiza o LCD
delay(50); // A cada 5 segundos volta a exibir o texto na tela.
}
}
Para certificar se o cdigo est correto pressione o boto Verify/Compile. Se tudo estiver
correto pressione o boto Upload para fazer o upload do cdigo para seu Arduino.
Se tudo estiver OK voc ver escrito na tela do LCD o texto digitado no cdigo.

[ 99 ]

Projetos com Arduino por Willian Scollonoff

Projeto 25 Grfico de leitura de temperatura com um LCD


Nokia 5110

Ol pessoal, com o Nokia 5110 podemos fazer variarias coisas, como visualizar na tela
imagens, textos e muito mais, irei mostrar como visualizar um grfico de temperatura com
este maravilhoso LCD juntamente com um sensor de temperatura LM35, deixando com
uma visualizao mais compreensvel aos usurios. Os cdigos sero todos comentados
para melhor entendimento, podendo ser retirados aps a compreenso de cada linha. Bom
trabalho !!!
COMPONENTES NECESSRIOS
1 Resistor de 220
1 Mdulo Nokia 5110
1 Protobord
1 Sensor de temperatura LM35
Fios jumpers

[ 100 ]

Projetos com Arduino por Willian Scollonoff

CONECTANDO OS COMPONENTES
Primeiro, certifique-se de que seu Arduino esteja desligado, desconectando-o do cabo USB.
Agora, conecte o mdulo Nokia 5110, o LM35 e o resistor assim como mostra a figura
abaixo:

SEGUE O ESQUEMTICO ABAIXO PARA MELHOR ENTENDIMENTO:


Pinos LCD Nokia 5110 Pinos do Arduino
RST
11
CE
12
DC
10
Din
9
Clk
8
VCC
5V
GND
GND
FAZENDO O DOWNLOAD E IMPORTANDO A BIBLIOTECA DO LCD NOKIA 5110
1) Acesse o
link https://onedrive.live.com/?cid=F877FDED1DE63FAA&id=F877FDED1DE63FAA%21122;
2) Faa o download do arquivo PCD8544;
3) Descompacte o arquivo;
4) Agora entre no diretrio (C:) e na pasta Arquivos de Programas, Arduino, libraries, copie
o arquivo descompactado nesta pasta;
5) Pronto para utilizar;

[ 101 ]

Projetos com Arduino por Willian Scollonoff

AGORA VAMOS AO CDIGO


// Projeto 25 Grfico de leitura de temperatura com um LCD Nokia 5110
// Biblioteca utilizada para controle de grficos e/ou desenhos.
#include <PCD8544.h>
static const byte SensorTemp = 0; // Pino analgico onde est o LM35.
// Definindo as dimenses do LCD (em pixels).
static const byte LCD_WIDTH = 84;
static const byte LCD_HEIGHT = 48;
// Define o nmero de linhas para exibir o caracter de temperatura.
static const byte CHART_HEIGHT = 5;
// Define o smbolo grfico para ser exibido no LCD.
static const byte DEGREES_CHAR = 1;
static const byte degrees_glyph[] = { 0x00, 0x07, 0x05, 0x07, 0x00 };
// Uma imagem bitmap grfica de 10X2 do termmetro.
static const byte THERMO_WIDTH = 10;
static const byte THERMO_HEIGHT = 2;
static const byte thermometer[] =
{ 0x00, 0x00, 0x48, 0xfe, 0x01, 0xfe, 0x00, 0x02, 0x05, 0x02,
0x00, 0x00, 0x62, 0xff, 0xfe, 0xff, 0x60, 0x00, 0x00, 0x00};
static PCD8544 lcd;
void setup() {
lcd.begin(LCD_WIDTH, LCD_HEIGHT);
// Registra o smbolo personalizado do termmetro.
lcd.createChar(DEGREES_CHAR, degrees_glyph);
/* A referncia 1.1V interno prev uma melhor
Resoluo do LM35, e tambm mais estvel
Quando alimentado a partir de uma entrada USB. */
analogReference(INTERNAL);
}
void loop() {
// Define a borda do LCD.
[ 102 ]

Projetos com Arduino por Willian Scollonoff

static byte xChart = LCD_WIDTH;


// L a temperatura em graus Celsius.
float SensorTemp = (1.1 * analogRead(SensorTemp) * 100.0) / 1024.0;
// Imprime a temperatura na tela do LCD.
lcd.setCursor(0, 0);
lcd.print("Temp: ");
lcd.print(SensorTemp, 1);
lcd.print(" \001C ");
// Desenhar o bitmap termmetro no canto inferior esquerdo ...
lcd.setCursor(0, LCD_HEIGHT/8 - THERMO_HEIGHT);
lcd.drawBitmap(thermometer, THERMO_WIDTH, THERMO_HEIGHT);
// Define a posio do grfico.
if (xChart >= LCD_WIDTH) {
xChart = THERMO_WIDTH + 2;
}
// Atualiza o grfico de temperatura.
lcd.setCursor(xChart, 1);
// Define uma faixa entre 0 - 45C
lcd.drawColumn(CHART_HEIGHT, map(SensorTemp, 0, 45, 0,
CHART_HEIGHT*8));
// Define uma posio correta do grfico.
lcd.drawColumn(CHART_HEIGHT, 0);
xChart++;
}

delay(500);

Para certificar se o cdigo est correto pressione o boto Verify/Compile. Se tudo estiver
correto pressione o boto Upload para fazer o upload do cdigo para seu Arduino.
Se tudo estiver OK voc ver na tela a temperatura real, juntamente com um grfico que
ir mudar de acordo com a temperatura.

[ 103 ]

Projetos com Arduino por Willian Scollonoff

Projeto 26 Teclado matricial 4x4 bsico

Ol pessoal, hoje vamos aprender como utilizar o teclado matricial 4x4 (4 colunas por 4
linhas. Com este teclado podemos ligar LED, motores entre outros, basta apenas configurar
as funes para cada boto do teclado, simples e fcil. Ento vamos l galera! Os cdigos
sero todos comentados para melhor entendimento, podendo ser retirados aps a
compreenso de cada linha. Bom trabalho !!!
COMPONENTES NECESSRIOS
1 Arduino Uno R3
1 Protobord
1 Resistor de 220
1 LED (Qualquer cor)
1 Teclado matricial 4X4
Fios jumpers
CONECTANDO OS COMPONENTES
Primeiro, certifique-se de que seu Arduino esteja desligado, desconectando-o do cabo USB.
Agora, siga o modelo como mostra a figura abaixo.

[ 104 ]

Projetos com Arduino por Willian Scollonoff

FAZENDO O DOWNLOAD E IMPORTANDO A BIBLIOTECA DO KEYPAD


1) Acesse o
link https://onedrive.live.com/?cid=F877FDED1DE63FAA&id=F877FDED1DE63FAA%21122;
2) Faa o download do arquivo Keypad;
3) Descompacte o arquivo;
4) Agora entre no diretrio (C:) e na pasta Arquivos de Programas, Arduino, libraries, copie
o arquivo descompactado nesta pasta;
5) Pronto para utilizar;
AGORA VAMOS AO CDIGO
// Projeto 26 - Teclado matricial 4x4 bsico
// Biblioteca para controle do teclado de matrizes.
#include <Keypad.h>
const byte ROWS = 4; // Quatro linhas por...
const byte COLS = 4; // Quatro colunas.
// Define o Keypad (mapa do circuito do teclado).
char keys[ROWS][COLS] = {
{'1','2','3','A'},

[ 105 ]

Projetos com Arduino por Willian Scollonoff

{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}
};
// Conecta o teclado matricial em linha 0, linha 1, linha 2, linha 3 e linha 4...
//dos pinos do arduino.
byte rowPins[ROWS] = { 9, 8, 7, 6 };
// Conecta o teclado matricial em coluna 0, coluna 1, coluna 2, coluna 3 e...
//coluna 4 do arduino.
byte colPins[COLS] = { 12, 11, 10, 5 };
// Cria um objto Keypad.
Keypad kpd = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );
#define ledpin 13 // Led conectado no pino 13 do arduino.
void setup()
{
pinMode(ledpin,OUTPUT); // Define o pino 13 como sendo de sada.
digitalWrite(ledpin, HIGH); // incializa com o led ligado.
Serial.begin(9600); // Inicia o Serial Monitor.
}
void loop()
{
char key = kpd.getKey();
if(key) // Checa se um boto foi pressionado.
{
switch (key)
{
case '*': // Se for pressionado...
digitalWrite(ledpin, LOW); // o led apaga.
break; // Parada, aguardando pressionar outro boto.
case '#': // Se for pressionado...
digitalWrite(ledpin, HIGH); // o led ascende.
break;
case 'A':
digitalWrite(ledpin, HIGH);
break;
case 'B':
digitalWrite(ledpin, LOW);
break;
case 'C':
digitalWrite(ledpin, HIGH);
break;
case 'D':
[ 106 ]

Projetos com Arduino por Willian Scollonoff

}
}

digitalWrite(ledpin, LOW);
break;
default:
Serial.println(key);

Para confirmar se est tudo certo aperto o boto Verify/Upload. Se estiver correto voc
pode abrir o Serial Monitor em Tools, Serial Monitor ou selecionando simultaneamente os
botes Ctrl+Shift+M, aperte os botes numricos do teclado e este ser impresso na tela,
d para utilizar como um controle remoto.
IMAGEM DO SERIAL MONITOR

[ 107 ]

Projetos com Arduino por Willian Scollonoff

Projeto 27 Acionando rel via teclado matricial 4x4

Ol pessoal, j vimos como utilizar o teclado matricial da forma mais simples controlando
um LED, agora vamos utilizar este mesmo teclado para acionar um rele. Para este projeto
ser includo uma nova biblioteca a "Password.h" que tem como funo o controle de
strings, validando-as. Por default a senha deste projeto ser 1234, mas pode ser
modificada (fica a seu critrio). Aqui foi utilizado para acionar um rele, mas pode ser para
acionar um solenoide por exemplo, ou para outros fins. Os cdigos sero todos
comentados para melhor entendimento, podendo ser retirados aps a compreenso de
cada linha. Bom trabalho !!!
COMPONENTES NECESSRIOS
1 Arduino Uno R3
1 Shield rele
1 Teclado matricial 4X4
Fios jumpers
CONECTANDO OS COMPONENTES
Primeiro, certifique-se de que seu Arduino esteja desligado, desconectando-o do cabo USB.
Agora, conecte o shield rele e o teclado matricial como mostra a figura abaixo:

[ 108 ]

Projetos com Arduino por Willian Scollonoff

FAZENDO O DOWNLOAD E IMPORTANDO A BIBLIOTECA DO PASSWORD E


KEYPAD
1) Acesse o
link https://onedrive.live.com/?cid=F877FDED1DE63FAA&id=F877FDED1DE63FAA%21122;
2) Faa o download dos arquivos Password e Keypad;
3) Descompacte os arquivos;
4) Agora entre no diretrio (C:) e na pasta Arquivos de Programas, Arduino, libraries, copie
os arquivos descompactados nesta pasta;
5) Pronto para utilizar;
AGORA VAMOS AO CDIGO
// Projeto 27 Acionando rele via teclado matricial 4X4
#include <Password.h> // Biblioteca utilizada para controle de senha.
#include <Keypad.h> // Biblioteca para controle do teclado de matrizes.
// Senha utilizada para acionamento do rele.
Password password = Password( "1234" );
const byte ROWS = 4; // Quatro linhas por...
const byte COLS = 4; // Quatro colunas.
// Define o Keypad (mapa do circuito do teclado).
char keys[ROWS][COLS] = {
[ 109 ]

Projetos com Arduino por Willian Scollonoff

{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}
};
// Conecta o teclado matricial em linha 0, linha 1, linha 2, linha 3 e linha 4...
//dos pinos do arduino.
byte rowPins[ROWS] = {9,8,7,6};
// Conecta o teclado matricial em coluna 0, coluna 1, coluna 2, coluna 3 e...
//coluna 4 do arduino.
byte colPins[COLS] = {12,11,10,5};
// Cria um objeto Keypad.
Keypad keypad=Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS);
void setup(){
pinMode(4, OUTPUT); // Define pino 4 como sada.
Serial.begin(9600); // Inicializa Serial Monitor.
keypad.addEventListener(keypadEvent);
keypad.setDebounceTime(250);
}
void loop(){
keypad.getKey();
}
void keypadEvent(KeypadEvent eKey){
switch (keypad.getState()){ // Condio switch...
case PRESSED: // Se precionado algum boto...
Serial.print("Digitado: "); // Aparecera no Serial Monitor, Digitado: "X".
Serial.println(eKey); // Armazena numero digitado na varivel eKey.
switch (eKey){
// Pressionando "C" confirma se a senha foi digitado corretamente.
case 'C': guessPassword();
break;
default:
password.append(eKey);
}
}
}
void guessPassword(){
// Informa no Serial Monitor "Verificando, aguarde...".
Serial.print("Verificando, aguarde... ");
if (password.evaluate()){
// Informa no Serial Monitor "Acionando rele...".
[ 110 ]

Projetos com Arduino por Willian Scollonoff

Serial.println("Acionando rele... ");


digitalWrite(4, HIGH); // Ativa o rele.
delay(2000); // Rele fica acionado por 2 segundos e depois...
digitalWrite(4, LOW); // Desativa o rele.
password.reset(); // Apaga a senha.
}else{
digitalWrite(4, LOW);
Serial.println("Senha Invalida !");
password.reset(); // Apaga a senha.

}
Para confirmar se est tudo certo aperto o boto Verify/Upload. Se estiver correto voc
pode abrir o Serial Monitor em Tools, Serial Monitor ou selecionando simultaneamente os
botes Ctrl+Shift+M, digite a senha 1234 e aperte o boto C, pronto seu rele ir acionar
por 2 segundos e depois ser desativado.
IMAGEM DO SERIAL MONITOR

[ 111 ]

Projetos com Arduino por Willian Scollonoff

Projeto 28 Utilizando um carto RFID

Ol pessoal, neste projeto iremos utilizar o mdulo de identificao por rdio frequncia o
RFID-RC522 encontrado em lojas especializadas do ramo de eletrnica. Este projeto
consiste em apenas visualizar os dados contidos no carto. Posteriormente iremos acionar
um rele a partir do cdigo do carto. Ento mos aos componentes !! Os cdigos sero
todos comentados para melhor entendimento, podendo ser retirados aps a compreenso
de cada linha. Bom trabalho !!!
Obs.: Para visualizar o Serial Monitor, basta ir em Tools e Serial Monitor ou pressionar
Crtl+Shift+M e pronto.
COMPONENTES NECESSRIOS
1 Shield RFID-RC522
Fios jumpers do tipo macho/fmea
CONECTANDO-SE AO MODULO RFID
1) Faa o download do arquivo Rfid_master
emhttps://onedrive.live.com/?cid=F877FDED1DE63FAA&id=F877FDED1DE63FAA%21122;
2) Aps feito o download, descompacte o arquivo;

[ 112 ]

Projetos com Arduino por Willian Scollonoff

3) Com o arquivo descompactado, v em (C:) e na pasta Arquivos de Programas, Arduino,


libraries, copie o arquivo descompactado nesta pasta e pronto.
CONECTANDO OS COMPONENTES

SEGUE O ESQUEMTICO ABAIXO PARA MELHOR ENTENDIMENTO:


Pinos do mdulo RFID-RC522 Pinos do Arduino
RST
9
SDA
10
MOSI
11
MISO
12
SCK
13
GND
GND
VCC
3.3V
AGORA VAMOS AO CDIGO
// Biblioteca do Serial Peripheral Interface (Interface Perifrica Serial).
#include <SPI.h>
#include <MFRC522.h> // Biblioteca do mdulo RFID-RC522.
#define SS_PIN 10 // Define o pino 10 como Escravo.
#define RST_PIN 9 // Define o pino 9 como Reset.
MFRC522 mfrc522(SS_PIN, RST_PIN); // Cria um objeto MFRC522.
void setup() {
Serial.begin(9600); // Inicializa a comunicao serial com o PC.
SPI.begin(); // Inicializa o SPI bus.
mfrc522.PCD_Init(); // Inicializa o carto MFRC522.
// Imprime no Serial Monitor a frase entre " ".
Serial.println("Scan a MIFARE Classic PICC to demonstrate Value Blocks.");
}
void loop() {
// Procura por novos cartes.
if ( ! mfrc522.PICC_IsNewCardPresent()) {

[ 113 ]

Projetos com Arduino por Willian Scollonoff

return;
}
// Seleciona um dos cartes.
if ( ! mfrc522.PICC_ReadCardSerial()) {
return;
}
// Agora um carto selecionado. O UID e SAK esto no mfrc522.unis.
// Descarrega UID.
Serial.print("Card UID:");
for (byte i = 0; i < mfrc522.uid.size; i++) {
Serial.print(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " ");
Serial.print(mfrc522.uid.uidByte[i], HEX);
}
Serial.println();
// Descarrega PICC.
byte piccType = mfrc522.PICC_GetType(mfrc522.uid.sak);
Serial.print("PICC type: ");
Serial.println(mfrc522.PICC_GetTypeName(piccType));
if ( piccType != MFRC522::PICC_TYPE_MIFARE_MINI
&& piccType != MFRC522::PICC_TYPE_MIFARE_1K
&& piccType != MFRC522::PICC_TYPE_MIFARE_4K) {
Serial.println("This sample only works with MIFARE Classic cards.");
return;
}
// Orepara a chave - todas as chaves esto configuradas para...
//FFFFFFFFFFFFh (Padro de fbrica).
MFRC522::MIFARE_Key key;
for (byte i = 0; i < 6; i++) {
key.keyByte[i] = 0xFF;
}
// Nesta amostra nos usamos o segundo setor (bloco 4-7).
byte sector = 1;
byte valueBlockA = 5;
byte valueBlockB = 6;
byte trailerBlock = 7;
// Valida usando a chave A.
Serial.println("Authenticating using key A..."); // Imprime no Serial Monitor.
byte status;
status = mfrc522.PCD_Authenticate
(MFRC522::PICC_CMD_MF_AUTH_KEY_A, trailerBlock, &key, &(mfrc522.uid));
if (status != MFRC522::STATUS_OK) {
Serial.print("PCD_Authenticate() failed: ");
Serial.println(mfrc522.GetStatusCodeName(status));
[ 114 ]

Projetos com Arduino por Willian Scollonoff

return;
}
// Precisamos de um setor que define blocos 5 e 6 com valores de blocos...
//e que permita a chave B.
byte trailerBuffer[] = { 255,255,255,255,255,255, 0,0,0,
0, 255,255,255,255,255,255}; // Mantem por teclas padro.
mfrc522.MIFARE_SetAccessBits(&trailerBuffer[6], 0, 6, 6, 3);
// Agora nos lemos o setor e vemos se isto ista como nos queremos...
//que seja.
Serial.println("Reading sector trailer...");
byte buffer[18];
byte size = sizeof(buffer);
status = mfrc522.MIFARE_Read(trailerBlock, buffer, &size);
if (status != MFRC522::STATUS_OK) {
Serial.print("MIFARE_Read() failed: ");
Serial.println(mfrc522.GetStatusCodeName(status));
return;
}
if ( buffer[6] != trailerBuffer[6]
&& buffer[7] != trailerBuffer[7]
&& buffer[8] != trailerBuffer[8]) {
Serial.println("Writing new sector trailer..."); // Imprime no Serial Monitor.
status = mfrc522.MIFARE_Write(trailerBlock, trailerBuffer, 16);
if (status != MFRC522::STATUS_OK) {
Serial.print("MIFARE_Write() failed: ");
Serial.println(mfrc522.GetStatusCodeName(status));
return;
}
}
// Valida usando chave B.
// Imprime no Serial Monitor.
Serial.println("Authenticating again using key B...");
status = mfrc522.PCD_Authenticate
(MFRC522::PICC_CMD_MF_AUTH_KEY_B, trailerBlock, &key, &(mfrc522.uid));
if (status != MFRC522::STATUS_OK) {
// Se haver falha na autenticao uma mensagem ser exibida no...
//Serial Monitor.
Serial.print("PCD_Authenticate() failed: ");
Serial.println(mfrc522.GetStatusCodeName(status));
return;
}
/*OBS.: O valor dos blocos tem um valor com sinal de 32 bit armazenado
trs vezes e um endereo de 8 bits armazenados 4 vezes. Certifique-se
de blocos valueBlockA e valueBlockB tem esse formato: formatBlock
(alueBlockA); */

[ 115 ]

Projetos com Arduino por Willian Scollonoff

// Adciona 1 no valor de valueBlockA e armazena o resultado em...


//valueBlockA.
Serial.print("Adding 1 to value of block "); Serial.println(valueBlockA);
status = mfrc522.MIFARE_Increment(valueBlockA, 1);
if (status != MFRC522::STATUS_OK) {
Serial.print("MIFARE_Increment() failed: ");
Serial.println(mfrc522.GetStatusCodeName(status));
return;
}
status = mfrc522.MIFARE_Transfer(valueBlockA);
if (status != MFRC522::STATUS_OK) {
Serial.print("MIFARE_Transfer() failed: ");
Serial.println(mfrc522.GetStatusCodeName(status));
return;
}
// Descarrega o resultado.
mfrc522.PICC_DumpMifareClassicSectorToSerial(&(mfrc522.uid),
&key, sector);
// Pausa PICC
mfrc522.PICC_HaltA();
// Para a criptografia em PCD.
mfrc522.PCD_StopCrypto1();
}
void formatBlock(byte blockAddr) {
Serial.print("Reading block "); Serial.println(blockAddr);
byte buffer[18];
byte size = sizeof(buffer);
byte status = mfrc522.MIFARE_Read(blockAddr, buffer, &size);
if (status != MFRC522::STATUS_OK) {
Serial.print("MIFARE_Read() failed: ");
Serial.println(mfrc522.GetStatusCodeName(status));
return;
}
if ( (buffer[0] == (byte)~buffer[4])
&& (buffer[1] == (byte)~buffer[5])
&& (buffer[2] == (byte)~buffer[6])
&& (buffer[3] == (byte)~buffer[7])
&& (buffer[0] == buffer[8])
&& (buffer[1] == buffer[9])
&& (buffer[2] == buffer[10])
&& (buffer[3] == buffer[11])
&& (buffer[12] == (byte)~buffer[13])
&& (buffer[12] ==
buffer[14])
[ 116 ]

Projetos com Arduino por Willian Scollonoff

&& (buffer[12] == (byte)~buffer[15])) {


Serial.println("Block has correct Block Value format.");
}
else {
Serial.println("Writing new value block...");
byte valueBlock[] = { 0,0,0,0, 255,255,255,255, 0,0,0,0, blockAddr,~blockAddr,
blockAddr,~blockAddr };
status = mfrc522.MIFARE_Write(blockAddr, valueBlock, 16);
if (status != MFRC522::STATUS_OK) {
Serial.print("MIFARE_Write() failed: ");
Serial.println(mfrc522.GetStatusCodeName(status));
}
}
} // Fim do formatBlock()
Obs.: Para certificar se o cdigo est correto pressione o boto Verify/Compile. Se tudo
estiver correto pressione o boto Upload para fazer o upload do cdigo para seu Arduino.
Pronto, agora voc pode passar o carto sobre o leitor do mdulo e voc ver uma imagem
igual a descrita abaixo:

[ 117 ]

Projetos com Arduino por Willian Scollonoff

Projeto 29 Configurando o mdulo bluetooth (JY-MCU)

Ol pessoal, antes de comearmos a acionar componentes pelo smartphone e/ou tablet via
bluetooth se faz necessrio algumas configuraes do mdulo antes disto, para que tudo
funcione corretamente. Ento... mos aos componentes !! Os cdigos sero todos
comentados para melhor entendimento, podendo ser retirados aps a compreenso de
cada linha. Bom trabalho !!!
COMPONENTES NECESSRIOS
1 Shield JY-MCU (Mdulo Bluetooth)
Fios jumpers do tipo macho/fmea
CONECTANDO OS COMPONENTES

[ 118 ]

Projetos com Arduino por Willian Scollonoff

SEGUE O ESQUEMTICO ABAIXO PARA MELHOR ENTENDIMENTO:


Pinos do mdulo JY-MCUPinos do Arduino
VCC
5V
GND
GND
TXD
10
RXD
11
OBS.: Verifique qual a tenso do seu mdulo, pois poder ser de 3.3V. Se for o caso utilize
o respectivo pino do Arduino.
SIGA OS PASSOS ABAIXO PARA COMUNICAO E CONFIGURAO DE SEU
MDULO:
1) Depois de tudo conectado ao seu Arduino. Conecte-o porta USB de seu computador;
2) Abra o IDE do Arduino e cole o seguinte cdigo:
// Projeto 29 Configurando o modulo de bluetooth (JY-MCU)
// Biblioteca responsvel pela comunicao serial.
#include <SoftwareSerial.h>
SoftwareSerial mySerial(11, 10); // RX, TX
String command = ""; // Responsvel por reconhecer os comandos no AT.
void setup()
{
// Abre a porta de comunicao serial para reconhecer os comandos AT.
Serial.begin(115200);
Serial.println("Type AT commands!");
mySerial.begin(9600); // Taxa de transferncia na "Porta COM X" a 9600bps.
}
void loop()
{
// L o dispositivo de sada disponvel.
if (mySerial.available())
{
while(mySerial.available())
{ // Enquanto haver mais para ser lido, mantenha lendo.
command += (char)mySerial.read();
}
Serial.println(command);
command = "";
}
// L a entrada o usurio se disponvel.
if (Serial.available())

[ 119 ]

Projetos com Arduino por Willian Scollonoff

{
}

delay(10); // Pequeno delay.


mySerial.write(Serial.read());

} // Fim do loop.
3) Aps carregado o cdigo para seu Arduino, abra o Serial Monitor (mantenha apertados
Control+Shift+M);
4) Altere a velocidade de 9600 para 115200 como mostra a imagem abaixo:

5) Quando alterado ir aparecer a tela para inserirmos os comandos AT;

[ 120 ]

Projetos com Arduino por Willian Scollonoff

6) Agora iremos inserir o comando AT+MEUBLUETOOTH para alterarmos o nome do nosso


dispositivo que ser MEUBLUETOOTH ou outro nome caso queira muda-lo;

7) Este comando dever retornar um OKsetname, confirmando a troca do nome do


dispositivo;
8) Pronto !! As configuraes j foram concludas;
OBS.: Segue abaixo outros comandos que podem ser utilizados:
AT - Retorna "OK", o que indica que o mdulo bluetooth est respondendo aos comandos.

[ 121 ]

Projetos com Arduino por Willian Scollonoff

AT+NAME - Altera o nome do mdulo Bluetooth.


AT+VERSION - Retorna a verso do firmware da placa.
AT+PINXXXX - Altera a senha do bluetooth, onde XXXX a nova senha, e voc pode
utilizar qualquer combinao de 4 nmeros. Este comando retorna "OKsetPIN".

Projeto 30 Acionando LED e rel com via bluetooth com


arduinocomander

Ol pessoal, como prometido, irei mostrar como acionar LED e rele via bluetooth. Este
projeto se aplica tanto a smartphones quanto a tablets. Muito mais fcil de usar com este
app do que com outros que voc possa encontrar pela internet. Mos aos componentes!
COMPONENTES NECESSRIOS
1 Shield JY-MCU (Mdulo Bluetooth)
1 Shield rele
[ 122 ]

Projetos com Arduino por Willian Scollonoff

1 resistor de 330
1 LED (qualquer cor)
1 Smartphone com Android
Fios jumper do tipo macho/femea e macho/macho

ESQUEMA PARA MONTAGEM

CDIGO PARA COMUNICAR O ARDUINO AO APP SIGAS OS PASSOS ABAIXO:


1) Abra o IDE do Arduino;
2) Clique em File >> Examples >> Firmata e StandardFirmata;
3) Ir abrir o cdigo StandardFirmata;
4) D um Ctrl+F e busque por 57600;
5) Troque o valor por 9600;

[ 123 ]

Projetos com Arduino por Willian Scollonoff

Pronto agora faa o upload para o Arduino *;


* OBS.: Antes de passar o cdigo para o Arduino retire os jumpers dos pinos RX e TX. Se
no for feito isso no ir carregar o cdigo para o Arduino, dando erro.
CONECTANDO-SE AO ARDUINOCOMMANDER
1) Baixe o app ArduinoCommander no Play Store ou emArduinoCommander - Google play;
2) Aps ter instalado, abra-o. Ficar assim a tela:

3)

Clique

em

Discover

devices

para

encontrar

seu

Shield

Bluetooth.

Se

seu aparelho estiver com o bluetooth desligado, ele ir habilitar o mesmo. Como mostra na
imagem abaixo:

[ 124 ]

Projetos com Arduino por Willian Scollonoff

4) Agora pesquise novamente os dispositivos em Discover devices e ir aparecer os


dispositivos bluetooth ao alcance, como mostra a imagem abaixo:

5) O meu shield est com o nome ELTONSHIELD, visualize o seu e clique clique nele para
seleciona-lo;
6) Aps isto ir se conectar a sua placa Arduino como mostra a imagem abaixo:

[ 125 ]

Projetos com Arduino por Willian Scollonoff

7) Se algo der errado ira aparecer algo assim:

AGORA VAMOS ACIONAR O LED E O RELE NO ARDUINOCOMMADER

[ 126 ]

Projetos com Arduino por Willian Scollonoff

1) Clique em cima do pino 7, ira aparecer as opes para setar o pino como output ou
input. Selecione output assim como mostra a imagem abaixo:

2) Se voc quiser deixar este pino desligado basta apenar clicar em OK. Caso queira liga-lo
clique em cima de OFF e ira ficar ON, clique em OK e pronto o LED ira ascender como
mostra as imagens abaixo:

[ 127 ]

Projetos com Arduino por Willian Scollonoff

3) Para apaga-lo clique em cima do pino 7 novamente e clique em ON para ficar OFF e OK.
Pronto LED desligado.
4) Para acionar o rele segue a mesma linha de raciocnio. Clique em cima do pino 11,
selecione output e clique em cima de OFF para ficar ON e OK acionar o rele.

[ 128 ]

Projetos com Arduino por Willian Scollonoff

5) Para desabilitar o pino clique em cima dele, selecione ON para ficar OFF e OK.

[ 129 ]

Projetos com Arduino por Willian Scollonoff

6) Para desconectar do bluetooth clique na tecla de menu do smartphone e selecione


Disconnect, aguarde alguns segundos e pronto.

[ 130 ]

Projetos com Arduino por Willian Scollonoff

Projeto 31 Utilizando
arduinocomander

[ 131 ]

PWM

via

bluetooth

com

Projetos com Arduino por Willian Scollonoff

Ol pessoal! Continuando com este excelente app, hoje vou mostrar como utilizar o PWM
com o ArduinoCommander. Temos duas maneiras para enviar os comandos por largura de
pulso pelo ArduinoCommander, so eles: manualmente ou automaticamente, por cdigo.
Pode se utilizar este recurso em todos pino simultaneamente sem nenhum problema.
Vamos l? Os cdigos sero todos comentados para melhor entendimento, podendo ser
retirados aps a compreenso de cada linha. Bom trabalho !!!
COMPONENTES NECESSRIOS
1 Shield JY-MCU (Mdulo Bluetooth)
1 resistor de 330
1 LED (qualquer cor)
1 Smartphone com Android
Fios jumper do tipo macho/femea e macho/macho

ESQUEMA PARA MONTAGEM

CDIGO PARA COMUNICAR O ARDUINO AO APP SIGAS OS PASSOS ABAIXO:


1) Abra o IDE do Arduino;
2) Clique em File >> Examples >> Firmata e StandardFirmata;

[ 132 ]

Projetos com Arduino por Willian Scollonoff

3) Ir abrir o cdigo StandardFirmata;


4) D um Ctrl+F e busque por 57600;
5) Troque o valor por 9600;
Pronto agora faa o upload para o Arduino*;
*OBS.: Antes de passar o cdigo para o Arduino retire os jumpers dos pinos RX e TX. Se
no for feito isso no ir carregar o cdigo para o Arduino, dando erro.
CONECTANDO-SE AO ARDUINOCOMMANDER
1) Baixe o app ArduinoCommander no Play Store ou emArduinoCommander - Google play;
2) Aps ter instalado, abra-o. Ficar assim a tela:

3) Clique em Discover devices para encontrar seu Shield Bluetooth. Se o


seu aparelho estiver com o bluetooth desligado, ele ir habilitar o mesmo. Como mostra na
imagem abaixo:

[ 133 ]

Projetos com Arduino por Willian Scollonoff

4) Agora pesquise novamente os dispositivos em Discover devices e ir aparecer os


dispositivos bluetooth ao alcance, como mostra a imagem abaixo:

5) O meu shield est com o nome ELTONSHIELD, visualize o seu e clique clique nele para
seleciona-lo;
6) Aps isto ir se conectar a sua placa Arduino como mostra a imagem abaixo:

[ 134 ]

Projetos com Arduino por Willian Scollonoff

7) Se algo der errado ira aparecer algo assim:

AGORA VAMOS UTILIZAR O PWM PELO ARDUINOCOMMADER

[ 135 ]

Projetos com Arduino por Willian Scollonoff

1) Para mudar o pulso manualmente, clique em cima do pino 10, ira aparecer as opes
para setar o pino como output ou input... Selecione o Analog output (PWM) e em seguida
Manual. Arraste o componente slider para aumentar ou diminuir o pulso PWM, como
mostra as imagens abaixo:

[ 136 ]

Projetos com Arduino por Willian Scollonoff

2) Clique em OK e repare que o LED mudou de intensidade, estando seu brilho mais ou
menos forte de acordo com o que voc selecionou ao arrastar a barra e no pino mostra a
tenso que est sendo enviado ao LED:

3) H uma forma mais incrementada para ser enviar o pulso. Para isso voc dever seguir
estes passos. Clique novamente em cima do pino 10 e selecione a opo Anolog output
(PWM), Use generator e clique no boto Configure.

[ 137 ]

Projetos com Arduino por Willian Scollonoff

4) Ir abrir uma nova janela, onde voc dever digitar o seguinte comando:

Obs.: O pulso PWM vai de 0 a 255 ou de 0V a 5V por apenas 5 segundos. Para aumentar
este tempo basta mudar sin in 5 sec por outro valor e OK.
5) Depois de ter digitado o comando basta clicar em OK e voc ver o seu led de aceso a
totalmente apagado, gradativamente.
6) Para desconectar do bluetooth clique da tecla de menu do smartphone e selecione
Disconnect, aguarde alguns segundos e pronto.

[ 138 ]

Projetos com Arduino por Willian Scollonoff

Projeto 32 Utilizando o osciloscpio via bluetooth com


arduinocomander

[ 139 ]

Projetos com Arduino por Willian Scollonoff

Ol pessoal! Continuando com este excelente app, hoje vou mostrar como utilizar o
osciloscpio com o ArduinoCommander. Iremos utilizar um potencimetro para verificarmos
como o osciloscpio se comporta, experimento simples porm podemos utiliza-lo para
vrias aplicaes. Este osciloscpio nos permite observar a onda por apenas 5 segundos,
porm na verso paga no h limite, sendo bem flexvel permitido at mudar a cor da(s)
onda(s) gerada(s) bem como sua espessura, podemos pausar o osciloscpio e analisarmos
o que for necessrio. Os cdigos sero todos comentados para melhor entendimento,
podendo ser retirados aps a compreenso de cada linha. Bom trabalho !!!
COMPONENTES NECESSRIOS
1 Shield JY-MCU (Mdulo Bluetooth)
1 Potencimetro de 10 K (ou qualquer outro valor)
Fios jumpers

CONECTANDO OS COMPONENTES

[ 140 ]

Projetos com Arduino por Willian Scollonoff

CDIGO PARA COMUNICAR O ARDUINO AO APP SIGAS OS PASSOS ABAIXO:


1) Abra o IDE do Arduino;
2) Clique em File >> Examples >> Firmata e StandardFirmata;
3) Ir abrir o cdigo StandardFirmata;
4) D um Ctrl+F e busque por 57600;
5) Troque o valor por 9600;
Pronto agora faa o upload para o Arduino*;
*OBS.: Antes de passar o cdigo para o Arduino retire os jumpers dos pinos RX e TX. Se
no for feito isso no ir carregar o cdigo para o Arduino, dando erro.
CONECTANDO-SE AO ARDUINOCOMMANDER
1) Baixe o app ArduinoCommander no Play Store ou emArduinoCommander - Google play;
2) Aps ter instalado, abra-o. Ficar assim a tela:

[ 141 ]

Projetos com Arduino por Willian Scollonoff

3) Clique em Discover devices para encontrar seu Shield Bluetooth. Se o


seu aparelho estiver com o bluetooth desligado, ele ir habilitar o mesmo. Como mostra na
imagem abaixo:

4) Agora pesquise novamente os dispositivos em Discover devices e ir aparecer os


dispositivos bluetooth ao alcance, como mostra a imagem abaixo:

[ 142 ]

Projetos com Arduino por Willian Scollonoff

5) O meu shield est com o nome ELTONSHIELD, visualize o seu e clique clique nele para
seleciona-lo;
6) Aps isto ir se conectar a sua placa Arduino como mostra a imagem abaixo:

[ 143 ]

Projetos com Arduino por Willian Scollonoff

7) Se algo der errado ira aparecer algo assim:

AGORA VAMOS UTILIZAR O OSCILOSCPIO


1) Clique no pino analgico 1, em seguida selecione a opo Analog input, Simple
e OK, como mostra as imagens abaixo:

[ 144 ]

Projetos com Arduino por Willian Scollonoff

2) Gire o potencimetro e percebera que o valor da tenso no pino tambm ir mudar:

[ 145 ]

Projetos com Arduino por Willian Scollonoff

3) Para visualizarmos o osciloscpio clique no boto de menu do seu Smartphone e ir


aparecer a seguinte tela:

[ 146 ]

Projetos com Arduino por Willian Scollonoff

4) Clique em Osciloscope *, ir aparecer o osciloscpio:

Obs.: No se faz necessrio deixar a opo Bzier curve. Se estiver utilizando mais de um
pino para gerar as ondas no osciloscpio, basta deslizar o dedo no meio da tela esquerda e
seleciona-lo ou no, para ser gerado.
5) Clique em Start e movimente o potencimetro e ver as ondas geradas:

[ 147 ]

Projetos com Arduino por Willian Scollonoff

Obs.: Para mudar a cor da onda clique em Color e mude-a. Caso queira mudar a
espessura da onda clique em - ou +.

[ 148 ]

Projetos com Arduino por Willian Scollonoff

6) Para desconectar do bluetooth clique da tecla de menu do Smartphone e selecione


Disconnect, aguarde alguns segundos e pronto.

[ 149 ]

Projetos com Arduino por Willian Scollonoff

Projeto 33 Utilizando sensores do Smartphone via


bluetooth com arduinocomander

Ol pessoal! Hoje irei mostrar como utilizar o sensor acelermetro do seu prprio
Smartphone para controlar um LED. Alm deste, o appArduinoCommander possui outros
mais, como sensor de proximidade, sensor de campo magntico, sensor de orientao.
Para utiliza-los basta que seu aparelho possua os respectivos sensores. Os cdigos sero
todos comentados para melhor entendimento, podendo ser retirados aps a compreenso
de cada linha. Bom trabalho !!!
COMPONENTES NECESSRIOS
1 Shield JY-MCU (Mdulo Bluetooth)
1 LED (qualquer cor)
1 Resistor de 330
Fios jumpers

[ 150 ]

Projetos com Arduino por Willian Scollonoff

CONECTANDO OS COMPONENTES

CDIGO PARA COMUNICAR O ARDUINO AO APP SIGAS OS PASSOS ABAIXO:


1) Abra o IDE do Arduino;
2) Clique em File >> Examples >> Firmata e StandardFirmata;
3) Ir abrir o cdigo StandardFirmata;
4) D um Ctrl+F e busque por 57600;
5) Troque o valor por 9600;
Pronto agora faa o upload para o Arduino*;
*OBS.: Antes de passar o cdigo para o Arduino retire os jumpers dos pinos RX e TX. Se
no for feito isso no ir carregar o cdigo para o Arduino, dando erro.
CONECTANDO-SE AO ARDUINOCOMMANDER
1) Baixe o app ArduinoCommander no Play Store ou emArduinoCommander - Google play;
2) Aps ter instalado, abra-o. Ficar assim a tela:

[ 151 ]

Projetos com Arduino por Willian Scollonoff

3) Clique em Discover devices para encontrar seu Shield Bluetooth. Se o seu aparelho
estiver com o bluetooth desligado, ele ir habilitar o mesmo. Como mostra na imagem
abaixo:

4) Agora pesquise novamente os dispositivos em Discover devices e ir aparecer os


dispositivos bluetooth ao alcance, como mostra a imagem abaixo:

[ 152 ]

Projetos com Arduino por Willian Scollonoff

5) O meu shield est com o nome ELTONSHIELD, visualize o seu e clique clique nele para
seleciona-lo;
6) Aps isto ir se conectar a sua placa Arduino como mostra a imagem abaixo:

[ 153 ]

Projetos com Arduino por Willian Scollonoff

7) Se algo der errado ira aparecer algo assim:

UTILIZANDO O SENSOR ACELERMETRO


1) Clique no pino digital PWM 9, em seguida selecione a opo Analog output, Use
device sensor e Configure, como mostra a imagem abaixo:

[ 154 ]

Projetos com Arduino por Willian Scollonoff

2) Ir abrir uma outra tela para selecionarmos o sensor e fazer as configuraes


necessrias:

Obs.: Infelizmente por se tratar de verso free, mesmo mudando o tempo para que se
utilize este recurso, somente poder ser utilizado por um perodo mximo de 10 segundos.
Para se familiarizar com o app, configure como mostrado a cima. Podendo modificar o eixo
posteriormente. Para setar os valores na posio Z voc dever deixar o aparelho na
horizontal em p e clique em Current -> 0 e depois deixo-o na horizontal deitado e clique
em Current -> 1. Clique em OK.
3) Na tela posterior confirme clicando em OK:

[ 155 ]

Projetos com Arduino por Willian Scollonoff

4) Clique em OK novamente e movimente seu aparelho para baixo e para cima (na
horizontal), e ver o LED acender e apagar conforme o movimento exercido. Na tela
do seu aparelho voc ver mudar a tenso no pino conforme o movimento:

[ 156 ]

Projetos com Arduino por Willian Scollonoff

5) Para desconectar do bluetooth clique da tecla de menu do Smartphone e selecione


Disconnect, aguarde alguns segundos e pronto.

[ 157 ]

Projetos com Arduino por Willian Scollonoff

Projeto 34 Verificando cdigo de comando de um controle


remoto

Ol pessoal, vamos descobrir como utilizar uma tecnologia um pouco antiga, porm ainda
muito utilizado: o infravermelho. Ao apertar um boto de um controle remoto de uma TV, o
CI envia um comando binrio ou hexadecimal pelo emissor e o receptor capta estes dados
e realiza a funo programada pelo respectivo comando. Ns sabemos o valor
hexadecimal/binrio de cada boto? No, at agora! Os cdigos sero todos comentados
para melhor entendimento, podendo ser retirados aps a compreenso de cada linha. Bom
trabalho !!!
COMPONENTES NECESSRIOS
1 Infravermelho receptor TL1838 (ou similar)
1 Protoboard
Fios jumpers

[ 158 ]

Projetos com Arduino por Willian Scollonoff

FAZENDO
O
DOWNLOAD
IRREMOTE_MASTER:

IMPORTANDO

BIBLIOTECA

DO

1) Acesse o
link https://onedrive.live.com/?cid=F877FDED1DE63FAA&id=F877FDED1DE63FAA%21122;
2) Faa o download do arquivo IRremote_Master;
3) Descompacte o arquivo;
4) Agora entre no diretrio (C:) e na pasta Arquivos de Programas, Arduino, libraries, copie
o arquivo descompactado nesta pasta;
5) Pronto para utilizar;
CONECTANDO OS COMPONENTES

[ 159 ]

Projetos com Arduino por Willian Scollonoff

CDIGO DO PROJETO
// Projeto 34 Verificando cdigo de comando de um controle remoto
// Biblioteca para conunicao com o Arduino.
#include <IRremote.h>
// Pino utilizado para fazer a leitura dos valores dos botes...
//do controle remoto.
int RECV_PIN = 6;
IRrecv irrecv(RECV_PIN);
decode_results results; // Decodifica os dados do controle remoto.
void setup()
{
Serial.begin(9600); // Inicia o Serial Monitor.
irrecv.enableIRIn(); // Inicia o infrared receptor.
}
void loop() {
if (irrecv.decode(&results)) {
// Imprime na tela do Serial Monitor o valor dos botes do controle...
//remoto em hexatecimal.
Serial.println(results.value, HEX);
// Aguarda para receber o novo valor quando for pressionado um...
//outro boto.
irrecv.resume();
}
delay(100); // D um tempo de 100 ms entre um valor e outro.
}
Para certificar se o cdigo est correto pressione o boto Verify/Compile. Se tudo estiver
correto pressione o boto Upload para fazer o upload do cdigo para seu Arduino.
Abra seu Serial Monitor pressionado as teclas Ctrl + Shift + M simultaneamente.

[ 160 ]

Projetos com Arduino por Willian Scollonoff

Pressione qualquer boto de seu controle remoto e se tudo estiver OK voc ver impresso
na tela do Serial Monitor os dados de seu controle remoto.

[ 161 ]

Projetos com Arduino por Willian Scollonoff

Projeto 35 Clonando controle remoto de TV

Ol pessoal, neste tutorial vamos apreender como enviar comandos em hexadecimais para
controlar sua TV como volume, trocar de canal e ligar/desligar. O projeto em si de fcil
compreenso, desde que seguindo como foi explicado no passo a passo. Ento mos aos
componentes. Os cdigos sero todos comentados para melhor entendimento, podendo ser
retirados aps a compreenso de cada linha. Bom trabalho !!!
COMPONENTES NECESSRIOS
1 LED infravermelho emissor TIL32 (ou similar)
5 Pushes buttons
6 Resistores de 330
1 Protoboard
Fios jumpers

[ 162 ]

Projetos com Arduino por Willian Scollonoff

FAZENDO
O
DOWNLOAD
IRREMOTE_MASTER:

IMPORTANDO

BIBLIOTECA

DO

1) Acesse o
link https://onedrive.live.com/?cid=F877FDED1DE63FAA&id=F877FDED1DE63FAA%21122;
2) Faa o download do arquivo IRremote_Master;
3) Descompacte o arquivo;
4) Agora entre no diretrio (C:) e na pasta Arquivos de Programas, Arduino, libraries, copie
o arquivo descompactado nesta pasta;
5) Pronto para utilizar;
CONECTANDO OS COMPONENTES

[ 163 ]

Projetos com Arduino por Willian Scollonoff

CDIGO DO PROJETO
// Projeto 35 Clonando controle remoto de TV
#include <IRremote.h> // Biblioteca para controlar o led infravermelho
IRsend irsend; // Varivel para poder enviar o cdigo a TV
// Variveis constantes para o controle remoto
// Pino onde estar o boto para aumentar o volume
const int mais_volume = 4;
// Pino responsavl por diminuir o volume
const int menos_volume = 5;
// Pino onde estar o boto para mudar o canal em ordem crescente
const int mais_canal = 6;
// Pino responsavl por mudar o canal em ordem decrescente
const int menos_canal = 7;
// Pino onde estar o boto que iremos ligar/desligar a TV
const int liga_desliga = 8;
// Pino onde iremos conectar o LED emissor de infravermelho
const int ledIR = 3;
// Inicia o boto com o valor do estado em 0
int buttonState = 0;
void setup() {
pinMode(ledIR ,OUTPUT); // Definimos o LED de infra como de sada
Serial.begin(9600); // Iniciamos o Serial Monitor
// Configurando as entradas dos botes como de entrada
pinMode(mais_volume, INPUT);
pinMode(menos_volume, INPUT);
pinMode(mais_canal, INPUT);
pinMode(menos_canal, INPUT);
pinMode(liga_desliga, INPUT);
}
void loop(){
// Se o boto mais_volume for pressionado ele ira enviar o cdigo...
//para aumentar o volume na TV
if (digitalRead(mais_volume) == HIGH) {
// Cdigo que ser enviado a TV para aumentar o volume (Como a...
[ 164 ]

Projetos com Arduino por Willian Scollonoff

//sintaxe manda devemos iniciar com 0x + nmero em hexadecimal, 32)


irsend.sendNEC(0xE0E0E01F, 32);
}
// Se o boto menos_volume for pressionado ele ir enviar o cdigo para...
//diminuir o volume na TV
if (digitalRead(menos_volume) == HIGH) {
// Cdigo que ser enviado a TV para diminuir o volume
irsend.sendNEC(0xE0E0D02F, 32);
}
// Se o boto mais_canal for pressionado ele ir enviar o cdigo para...
//aumentar o canal na TV
if (digitalRead(mais_canal) == HIGH) {
irsend.sendNEC(0xE0E048B7, 32);
}
// Se o boto menos_canal for pressionado ele ir enviar o cdigo para...
//diminuir o canal na TV
if (digitalRead(menos_canal) == HIGH) {
irsend.sendNEC(0xE0E008F7, 32);
}
// Se o boto liga_desliga for pressionado ele ir enviar o cdigo para...
//ligar/desligar a TV
if (digitalRead(liga_desliga) == HIGH) {
irsend.sendNEC(0xE0E040BF, 32);
}
}
Para certificar se o cdigo est correto pressione o boto Verify/Compile. Se tudo estiver
correto pressione o boto Upload para fazer o upload do cdigo para seu Arduino.
Abra seu Serial Monitor pressionado as teclas Ctrl + Shift + M simultaneamente.
Pressione qualquer boto de seu controle remoto e se tudo estiver OK voc ver impresso
na tela do Serial Monitor os dados de seu controle remoto.

[ 165 ]

Projetos com Arduino por Willian Scollonoff

Projeto 36 Acionando LEDs e rel com infravermelho

Ol pessoal, hoje iremos acionar LEDs e rele via controle remoto. Qualquer controle
remoto serve: de TV, rdio...etc. Para voc fazer este projeto, voc precisar saber qual o
valor hexadecimal de cada boto que ser utilizado neste projeto, para saber como
visualizar o cdigo veja o tutorial Projeto 34 Verificando cdigo de comando de um
controle remoto. J obteve os respectivos valores hexadecimais? Ento vamos ao projeto !!
Os cdigos sero todos comentados para melhor entendimento, podendo ser retirados aps
a compreenso de cada linha. Bom trabalho !!!
COMPONENTES NECESSRIOS
1 Infravermelho receptor TL1838 (ou similar)
1 Shield Rele
2 Resistores de 330
2 LEDs
1 Protoboard
Fios jumpers

[ 166 ]

Projetos com Arduino por Willian Scollonoff

FAZENDO
O
DOWNLOAD
IRREMOTE_MASTER:

IMPORTANDO

BIBLIOTECA

DO

1) Acesse o
link https://onedrive.live.com/?cid=F877FDED1DE63FAA&id=F877FDED1DE63FAA%21122;
2) Faa o download do arquivo IRremote_Master;
3) Descompacte o arquivo;
4) Agora entre no diretrio (C:) e na pasta Arquivos de Programas, Arduino, libraries, copie
o arquivo descompactado nesta pasta;
5) Pronto para utilizar;
CONECTANDO OS COMPONENTES

[ 167 ]

Projetos com Arduino por Willian Scollonoff

CDIGO DO PROJETO
// Projeto 36 Acionando LED's e rele com infravermelho
// Biblioteca necessria para controle do infravermelho receptor.
#include <IRremote.h>
int
int
int
int
int
int
int
int

RECV_PIN = 6; // Pino responsvel por receber o cdigo do IR.


armazenavalor = 0; // Iniciando com valor igual a zero.
pino_rele = 7; // Pino onde o rele foi conectado no arduino.
pino_led1 = 8; // Pino onde o primeiro LED esta conectado no arduino.
pino_led2 = 9; // Pino onde o segundo LED esta conectado no arduino.
estado_rele = LOW; // Inicia com o rele desligado.
estado_led1 = LOW; // Inicia com o primeiro LED apagado.
estado_led2 = LOW; // Inicia com o segundo LED tambm apagado.

IRrecv irrecv(RECV_PIN);
decode_results results;
void setup()
{
pinMode(pino_rele, OUTPUT); // Define todos os pino como de sada.
pinMode(pino_led1, OUTPUT);
pinMode(pino_led2, OUTPUT);
digitalWrite(pino_rele, estado_rele); // Coloca os pinos todos os pino em...
digitalWrite(pino_led1, estado_led1); // estado baixo (pinos desligados).
digitalWrite(pino_led2, estado_led2);
Serial.begin(9600); // Inicializa a serial monitor.
irrecv.enableIRIn(); // Inicializa o receptor IR.
}

void loop()
{
// Verifica se o sensor IR recebeu algum sinal.
if (irrecv.decode(&results))
{
// Mostra na serial o valor lido pelo sensor IR.
Serial.print("Valor lido : ");
Serial.println(results.value, HEX);
// Armazena o sinal recebido pelo sensor IR.
armazenavalor = (results.value);
switch (armazenavalor)
{

[ 168 ]

Projetos com Arduino por Willian Scollonoff

// Verifica se o boto nmero 1 do controle remoto foi prescionada.


case 0xE0E020DF:
// Se prescionado aciona o rele.
estado_rele = !estado_rele;
digitalWrite(pino_rele, estado_rele);
break;
// Verifica se o boto nmero 2 do controle remoto foi prescionada.
case 0xE0E0A05F:
// Se prescionado acende o primeiro LED.
estado_led1 = !estado_led1;
digitalWrite(pino_led1, estado_led1);
break;

// Verifica se o boto nmero 3 do controle remoto foi prescionada.


case 0xE0E0609F:
// Se prescionado ascende o segundo LED.
estado_led2 = !estado_led2;
digitalWrite(pino_led2, estado_led2);
break;
}
irrecv.resume(); //Le o prximo valor

}
Para certificar se o cdigo est correto pressione o boto Verify/Compile. Se tudo estiver
correto pressione o boto Upload para fazer o upload do cdigo para seu Arduino.
Abra seu Serial Monitor pressionado as teclas Ctrl + Shift + M simultaneamente.
Pressione qualquer um dos botes: 1, 2, 3 de seu controle uma vez e ver o rele, os LEDs
serem acionados. Para desliga-los basta pressiona-los novamente.

[ 169 ]

Projetos com Arduino por Willian Scollonoff

Projeto 37 Jogo ping pong com LCD Nokia 5110

Ol pessoal, conforme prometido neste projeto iremos utilizar o mdulo LCD Nokia 5110
para fazermos um jogo simples e muito conhecido - o ping pong. Eu utilizei dois joysticks
como controle para controlar as barras, porm se vocs no tiverem este componente em
mos vocs podem utilizar potencimetros que far a mesma funo do joystick. Ento
mos aos componentes !! Os cdigos sero todos comentados para melhor entendimento,
podendo ser retirados aps a compreenso de cada linha. Bom trabalho !!!
COMPONENTES NECESSRIOS
1 Shield LCD Nokia 5110
1 Buzzer
2 Joysticks ou potencimetros
1 Resistor de 220
Fios jumper do tipo macho/fmea e macho/macho
CONECTANDO OS COMPONENTES
Primeiro, certifique-se de que seu Arduino esteja desligado, desconectando-o do cabo USB.
Agora, conecte todos componentes como mostra a figura abaixo:

[ 170 ]

Projetos com Arduino por Willian Scollonoff

SEGUE O ESQUEMA ABAIXO PARA MELHOR ENTENDIMENTO


Pinos do mdulo LCD Nokia 5110 Pinos do Arduino
RST
6
CE
7
DC
5
Din
4
Clk
3
Vcc
5V
Gnd
GND
BL
Resistor

AGORA VAMOS AO CDIGO:


// Projeto 37 Jogo do Ping Pong com LCD Nokia 5110
// Setando os pinos do LCD Nokia 5110 no Arduino Uno
#define PIN_SCE 7
#define PIN_RESET 6
#define PIN_DC 5
#define PIN_SDIN 4
#define PIN_SCLK 3

[ 171 ]

Projetos com Arduino por Willian Scollonoff

#define PIN_BUZZER 8
#define LCD_C
#define LCD_D

LOW
HIGH

// Inicializa o LCD com apenas 504 pixels de resoluo.


#define LCD_X
84
#define LCD_Y
6
int barWidth = 14; // Comprimento das barras.
int barHeight = 4; // Largura das barras.
int ballPerimeter = 5; // Tamanho da bola.
unsigned int bar1X = 0;
unsigned int bar1Y = 0;
unsigned int bar2X = 0;
unsigned int bar2Y = LCD_Y * 8 - barHeight;
int ballX = 0;
int ballY = 0;
boolean isBallUp = false;
boolean isBallRight = true;
byte pixels[LCD_X][LCD_Y];
unsigned long lastRefreshTime;
const int refreshInterval = 150;
byte gameState = 3; // Estgios do game.
byte ballSpeed = 4; // Velocidadeda bola.
byte player1WinCount = 0;
byte player2WinCount = 0;
byte hitCount = 0;
void setup(){
pinMode(PIN_BUZZER, OUTPUT);
// Inicializa as funes abaixo.
LcdInitialise();
restartGame();
}
void loop(){

unsigned long now = millis();


if(now - lastRefreshTime > refreshInterval){
update();
refreshScreen();
lastRefreshTime = now;
}

[ 172 ]

Projetos com Arduino por Willian Scollonoff

// Funo reinciar jogo.


void restartGame(){
ballSpeed = 1;
gameState = 1;
ballX = random(0, 60);
ballY = 20;
isBallUp = false;
isBallRight = true;
hitCount = 0;
}
// Funo atualzar tela do LCD.
void refreshScreen(){
if(gameState == 1){
for(int y = 0; y < LCD_Y; y++){
for(int x = 0; x < LCD_X; x++){
byte pixel = 0x00;
int realY = y * 8;
// Inicia a bola na tela.
if(x >= ballX && x <= ballX + ballPerimeter -1 && ballY + ballPerimeter >
realY && ballY < realY + 8 ){
byte ballMask = 0x00;
for(int i = 0; i < realY + 8 - ballY; i++){
ballMask = ballMask >> 1;
if(i < ballPerimeter)
ballMask = 0x80 | ballMask;
}
pixel = pixel | ballMask;
}
// Inicia a barra na tela.
if(x >= bar1X && x <= bar1X + barWidth -1 && bar1Y + barHeight > realY &&
bar1Y < realY + 8 ){
byte barMask = 0x00;
for(int i = 0; i < realY + 8 - bar1Y; i++){
barMask = barMask >> 1;
if(i < barHeight)
barMask = 0x80 | barMask;
}
pixel = pixel | barMask;
}

[ 173 ]

Projetos com Arduino por Willian Scollonoff

if(x >= bar2X && x <= bar2X + barWidth -1 && bar2Y + barHeight > realY
&& bar2Y < realY + 8 ){
byte barMask = 0x00;
for(int i = 0; i < realY + 8 - bar2Y; i++){
barMask = barMask >> 1;
if(i < barHeight)
barMask = 0x80 | barMask;
}
pixel = pixel | barMask;
}
LcdWrite(LCD_D, pixel);
}
}
} else if(gameState == 2){
// Faz a tratativa dos estgios do jogo.
int pinOut = 8;
int freq = 150;
int duration = 1000;
tone(pinOut, freq, duration);
}
}
void update(){
if(gameState == 1){
int barMargin = LCD_X - barWidth;
// L os joysticks e posiciona as barras no LCD.
int joystick1 = analogRead(A0);
int joystick2 = analogRead(A1);
bar1X = joystick1 / 2 * LCD_X / 512;
bar2X = joystick2 / 2 * LCD_X / 512;
if(bar1X > barMargin) bar1X = barMargin;
if(bar2X > barMargin) bar2X = barMargin;
// Movimento da bola.
if(isBallUp)
ballY -= ballSpeed;
else
ballY += ballSpeed;
if(isBallRight)
ballX += ballSpeed;
else
ballX -= ballSpeed;
// Verifica se ouve colises.
[ 174 ]

Projetos com Arduino por Willian Scollonoff

if(ballX < 1){


isBallRight = true;
ballX = 0;
}
else if(ballX > LCD_X - ballPerimeter - 1){
isBallRight = false;
ballX = LCD_X - ballPerimeter;
}
if(ballY < barHeight){
// Faz com que a bola ping para a barra 1.
if(ballX + ballPerimeter >= bar1X && ballX <= bar1X + barWidth){
isBallUp = false;
if(ballX + ballPerimeter/2 < bar1X + barWidth/2)
isBallRight = false;
else
isBallRight = true;
ballY = barHeight;
if(++hitCount % 10 == 0 && ballSpeed < 5)
ballSpeed++;
}else{
// Jogador 2 o vencedor.
gameState = 2;
player2WinCount++;
}

}
if(ballY + ballPerimeter > LCD_Y * 8 - barHeight){

// Faz com que a bola ping para a barra 2.


if(ballX + ballPerimeter >= bar2X && ballX <= bar2X + barWidth){
isBallUp = true;
if(ballX + ballPerimeter/2 < bar2X + barWidth/2)
isBallRight = false;
else
isBallRight = true;
ballY = LCD_Y * 8 - barHeight - ballPerimeter;
if(++hitCount % 10 == 0 && ballSpeed < 5)
ballSpeed++;
}
else{ // Jogar 1 o vencedor.
gameState = 2;
player1WinCount++;
}
}
}else if(gameState == 2){
for(int i =0; i < 4; i++){
LcdWrite(LCD_C, 0x0D ); // LCD no modo inverso.
delay(300);
[ 175 ]

Projetos com Arduino por Willian Scollonoff

LcdWrite(LCD_C, 0x0C );
delay(300);
}

}
restartGame(); // Chama da funo para resetar o game.

}
// Inicializa o LCD.
void LcdInitialise(void){

pinMode(PIN_SCE, OUTPUT);
pinMode(PIN_RESET, OUTPUT);
pinMode(PIN_DC, OUTPUT);
pinMode(PIN_SDIN, OUTPUT);
pinMode(PIN_SCLK, OUTPUT);
delay(200);
digitalWrite(PIN_RESET, LOW);
delay(500);
digitalWrite(PIN_RESET, HIGH);
LcdWrite(LCD_C, 0x21 ); // Comandos ampliados do LCD.
LcdWrite(LCD_C, 0xB1 ); // Configura o contraste do LCD.
LcdWrite(LCD_C, 0x04 ); // Configura o tempo de coeficiente.
LcdWrite(LCD_C, 0x14 );
LcdWrite(LCD_C, 0x0C ); // LCD em modo normal.
LcdWrite(LCD_C, 0x20 );
LcdWrite(LCD_C, 0x80 );
LcdWrite(LCD_C, 0x40 );
LcdWrite(LCD_C, 0x0C );

void LcdWrite(byte dc, byte data){


digitalWrite(PIN_DC, dc);
digitalWrite(PIN_SCE, LOW);
shiftOut(PIN_SDIN, PIN_SCLK, MSBFIRST, data);
digitalWrite(PIN_SCE, HIGH);
}
Para confirmar se est tudo certo clique no boto Verify/Upload. No havendo nenhum erro
parabns!! Agora divirta-se com este divertido jogo.

[ 176 ]

Projetos com Arduino por Willian Scollonoff

Projeto 38 Jogo dos caminhes com LCD 16x2

Ol pessoal, para quem no tem um LCD nokia 5110 tambm pode fazer jogos muito legais
com um LCD 16X2. Este jogo consiste em desviar dos caminhes, evitando assim as
colises. Parece ser fcil, porm a velocidade vai aumentando e a coliso certeira!! Para
movermos o carrinho para baixo e para cima dispomos de um potencimetro como
controle. Ento vamos ao trabalho. Os cdigos sero todos comentados para melhor
entendimento, podendo ser retirados aps a compreenso de cada linha. Bom trabalho !!!
COMPONENTES NECESSRIOS
1 Protoboard
1 LCD 16X2
1 Buzzer
2 Potencimetros
Fios jumper
Obs.: Voc pode utilizar mais de um potencimetro para controle de brilho (Verifique
o post cooler)

[ 177 ]

Projetos com Arduino por Willian Scollonoff

CONECTANDO OS COMPONENTES
Primeiro, certifique-se de que seu Arduino esteja desligado, desconectando-o do cabo USB.
Agora, pegue a protobord, o LCD, o buzzer, os potencimetros e os fios jumpers e conecteos assim como mostra a figura abaixo:

No importa se voc utiliza fios de cores diferentes ou furos diferentes na protoboard,


desde que os componentes e os fios estejam conectados na mesma ordem da figura.
Tenha cuidado ao inserir os componentes na protoboard. Caso sua protoboard seja nova, a
superfcie dos furos ainda estar rgida. A no insero cuidadosa dos componentes pode
resultar em danos. Certifique-se de que todos os componentes estejam conectados
corretamente. Quando voc estiver seguro de que tudo foi conectado corretamente, ligue
seu Arduino conectando-o ao cabo USB.

[ 178 ]

Projetos com Arduino por Willian Scollonoff

CDIGO DO PROJETO
// Projeto 38 - Jogo dos caminhes com LCD 16X2
// Declarando a biblioteca para comunicao com o LCD.
#include <LiquidCrystal.h>
LiquidCrystal lcd(9, 8, 5, 4, 3, 2); // Declarando os pinos a serem usados.
const int POTPIN = 1; // Potenciometro no pino A1 do Arduino
// Precisamos girar todo o potenciometro para o carrinho subir e...
//descer no visor do LCD.
const int MAXPOT = 1024;
// Declara o pino digital 10 para acionar o Speaker.
const int SPEAKERPIN = 10;
// Um pino analogico que no esta conectado a nada.
const int RANDSEEDPIN = 0;
// Inicia devagar e a cada milisegundos vai aumetando a velocidade...
const int MINSTEPDURATION = 150;
// At chegar ao mximo de sua velocidade.
const int MAXSTEPDURATION = 300;
const int NGLYPHS = 6;
byte glyphs[NGLYPHS][8] = { // Iremos criar os carros e caminhes...
// Imagem carro para cima.
{ B00000,
B01110,
B11111,
B01010,
B00000,
B00000,
B00000,
B00000}
// Imagem carro para baixo.
,{B00000,
B00000,
B00000,
B00000,
B01110,
B11111,
B01010,
B00000}

[ 179 ]

Projetos com Arduino por Willian Scollonoff

// Imagem do caminho para cima.


,{B00000,
B11110,
B11111,
B01010,
B00000,
B00000,
B00000,
B00000}
// Imagem do caminho para baixo.
,{B00000,
B00000,
B00000,
B00000,
B11110,
B11111,
B01010,
B00000}
// Imagem de batida para cima.
,{B10101,
B01110,
B01110,
B10101,
B00000,
B00000,
B00000,
B00000}
// Imagem de batida para baixo.
,{B00000,
B00000,
B00000,
B10101,
B01110,
B01110,
B10101,
B00000}
};
const int NCARPOSITIONS = 4;
const char BLANK=32;
char car2glyphs[NCARPOSITIONS][2] = {

[ 180 ]

Projetos com Arduino por Willian Scollonoff

{1,BLANK},{2,BLANK},{BLANK,1},{BLANK,2}
};
char truck2glyphs[NCARPOSITIONS][2] = {
{3,BLANK},{4,BLANK},{BLANK,3},{BLANK,4}
};
char crash2glyphs[NCARPOSITIONS][2] = {
{5,BLANK},{6,BLANK},{BLANK,5},{BLANK,6}
};
const int ROADLEN = 15; // Largura do LCD (sem contar nosso carro).
int road[ROADLEN]; // Posio dos outros carros.
char line_buff[2+ROADLEN];
int road_index;
int car_pos;
// Off-the-grid posio significa coluna vazia, ento MAXROADPOS
// Determina a probabilidade de um carro numa coluna
// Por exemplo 3 * NCARPOSITIONS d p = 1/3
const int MAXROADPOS = 3*NCARPOSITIONS;
int step_duration;
int crash; // Verdadeiro se haver coliso.
unsigned int crashtime;
const int CRASHSOUNDDURATION = 250;

const char *INTRO1="OlhePARAfrente";


const char *INTRO2="Tenha cuidado";

[ 181 ]

Projetos com Arduino por Willian Scollonoff

const int INTRODELAY = 2000; // Introduo com durao de dois segundos.


void setup()
{
crash = crashtime = road_index = 0;
step_duration = MAXSTEPDURATION;
line_buff[1+ROADLEN] = '\0';
randomSeed(analogRead(RANDSEEDPIN));
for (int i=0; iMINSTEPDURATION) {
step_duration--;
}
}
}
void getSteeringWheel() {
car_pos = map(analogRead(POTPIN),0,1024,0,NCARPOSITIONS);
}void drawRoad() {
for (int i=0; i<2; i++) {
if (crash) {
line_buff[0]=crash2glyphs[car_pos][i];
}
else {
line_buff[0]=car2glyphs[car_pos][i];
}
for (int j=0; j=0 && pos < NCARPOSITIONS ? truck2glyphs[pos][i] : BLANK;
}

[ 182 ]

Projetos com Arduino por Willian Scollonoff

lcd.setCursor(0,i);
lcd.print(line_buff);
}
}
Para certificar se o cdigo est correto pressione o boto Verify/Compile. Se tudo estiver
correto pressione o boto Upload para fazer o upload do cdigo para seu Arduino. Pronto,
agora ajuste o contraste do seu LCD girando o potencimetro correspondente. O jogo ir
comear em breve, quando isso acontecer gire o potencimetro para o carrinho subir e
descer afim de desviar dos caminhes. Boa diverso!!!
Obs.: Quando voc colidir com algum dos caminhes, reset o jogo pressionando o boto de
reset de seu Arduino.

[ 183 ]

Projetos com Arduino por Willian Scollonoff

Projeto 39 Interface WEB com Arduino

Ol pessoal, neste projeto iremos aprender a criar uma interface web simples utilizando o
arduino. Para isso voc ir precisar de um potencimetro e um Shield Ethernet para que
seja possvel realizar a conexo com a rede de internet. O projeto de fcil compreenso
deixando de forma clara e objeta com vrios comentrios nas linhas do cdigo. Ento
vamos ao trabalho !! Os cdigos sero todos comentados para melhor entendimento,
podendo ser retirados aps a compreenso de cada linha. Bom trabalho !!!
COMPONENTES NECESSRIOS
1 Protoboard
1 Potencimetro de 10K (Ou outro equivalente)
1 Shield Ethernet
Fios jumper
DOWNLOAD DA PGINA WEB
Faa o download do arquivo da pgina web neste
linkhttps://onedrive.live.com/?cid=F877FDED1DE63FAA&id=F877FDED1DE63FAA%21122 (
OneDrive).

[ 184 ]

Projetos com Arduino por Willian Scollonoff

SIGAS OS PASSOS ABAIXO:


1) Faa o download do arquivo Index.
2) Aps feito o download, extraia o arquivo index.htm, copie e cole o arquivo em um micro
SD formate o SD antes de copiar o arquivo.
3) Insira o carto no slot acoplado ao Shield Ethernet.
4) Com o arduino j conectado porta USB de seu computador e o Shield ao cabo de rede,
copie e cole o cdigo abaixo para a IDE e mude o IP conforme sua rede, aps isso transfira
- o para seu arduino.
5) Abra seu browser e digite o IP que voc definiu no cdigo e d um enter.
6) Uma pgina web ser exibida com uma interface recebendo os valores do
potencimetro.
7) Gire o potencimetro e voc ir ver o ponteiro se movimentar de acordo o valor do
potencimetro.

CONECTANDO OS COMPONENTES

[ 185 ]

Projetos com Arduino por Willian Scollonoff

CDIGO DO PROJETO
// Projeto 39 - Interface Web com arduino
#include <SPI.h>
#include <Ethernet.h>
#include <SD.h>
// Tamanho do buffer utilizado para capturar os pedidos HTTP
#define REQ_BUF_SZ 50
// Setando Endereo MAC e IP para a placa Ethernet
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
// Configurando o endereo IP (mudar conforme sua rede)
IPAddress ip(192, 168, 2, 120);
EthernetServer server(80); // Criar um servidor na porta 80
File webFile; // Arquivo da pgina web no carto SD
// Armazena o buffer requerido a pgina web
char HTTP_req[REQ_BUF_SZ] = {0};
char req_index = 0; // ndice no HTTP_req buffer
void setup()
{
// Desativar o chip de Ethernet
pinMode(10, OUTPUT);
digitalWrite(10, HIGH);
Serial.begin(9600); // Adicionado para depurao
// Inicializa o SD card
Serial.println("Initializing SD card...");
if (!SD.begin(4)) {
Serial.println("ERROR - SD card initialization failed!");
return; // Inicializao falhou
}
Serial.println("SUCCESS - SD card initialized.");
// Verifica se exite o arquivo index.htm
if (!SD.exists("index.htm")) {
Serial.println("ERROR - Can't find index.htm file!");
return; // No pode encontrar o arquivo especificado
}
Serial.println("SUCCESS - Found index.htm file.");
// Arquivo index.htm encontrado com sucesso
Ethernet.begin(mac, ip); // Inicializa o dispositivo Ethernet
server.begin(); // Inicializa o servidor web
}

[ 186 ]

Projetos com Arduino por Willian Scollonoff

void loop()
{
EthernetClient client = server.available(); // tentar obter cliente
if (client) {
boolean currentLineIsBlank = true;
while (client.connected()) {
if (client.available()) { // Dados do cliente disponvel para leitura
char c = client.read(); // L 1 byte (atributo) do cliente
// Primeira parte do pedido HTTP em ordem HTTP_req
/* Deixa o ltimo elemento na matriz como 0 para terminar...
a string (REQ_BUF_SZ - 1)*/
if (req_index < (REQ_BUF_SZ - 1)) {
HTTP_req[req_index] = c; // Salva o atributo HTTP requerido
req_index++;
}
// A ltima linha da requiso do cliente fica em branco e ternina com \n
// Responde para o cliente somente depois da ltima linha recebida
if (c == '\n' && currentLineIsBlank) {
// Enviar um cabealho de resposta HTTP padro
client.println("HTTP/1.1 200 OK");
// Restante do cabealho segue abaixo, dependendo se...
// Pgina web ou pgina XML solicitada
// Pedido Ajax - Enviar arquivo XML
if (StrContains(HTTP_req, "ajax_inputs")) {
// Enviar restante do cabealho HTTP
client.println("Content-Type: text/xml");
client.println("Connection: keep-alive");
client.println();
// Enviar arquivo XML contendo estados de entrada
XML_response(client);

}
else { // Solicitao de pgina web
// Enviar restante do cabealho HTTP
client.println("Content-Type: text/html");
client.println("Connection: keep-alive");
client.println();
// Envia pgina web
// Abre o arquivo da pgina web
webFile = SD.open("index.htm");
if (webFile) {
while(webFile.available()) {
client.write(webFile.read()); // Cliente recebe a pgina web
}
webFile.close();
[ 187 ]

Projetos com Arduino por Willian Scollonoff

}
}
// Exibio na porta de serial o pedido recebido de HTTP
Serial.print(HTTP_req);
// Reseta o buffer para 0
req_index = 0;
StrClear(HTTP_req, REQ_BUF_SZ);
break;

}
// Cada linha de texto recebidas do cliente termina com \ r \ n
if (c == '\n') {
// Iniciar nova linha com a prxima leitura de caracteres
currentLineIsBlank = true;
}
else if (c != '\r') {
// Caracter recebido pelo cliente
currentLineIsBlank = false;
}
}
}
delay(1);
// D um tempo para o browser receber os dados
client.stop(); // Fecha a conexo
} // Fim do lao if (client)
}
// Envia ao arquivo XML os valores do pino analogico
void XML_response(EthernetClient cl)
{
int analog_val;

cl.print("");
cl.print("");
// L o pino A3
analog_val = analogRead(3);
cl.print("");
cl.print(analog_val);
cl.print("");
cl.print("");

// Seta todos os elementos de str para 0 (limpa o vetor)


void StrClear(char *str, char length)
{
for (int i = 0; i < length; i++) {
str[i] = 0;
}
}
[ 188 ]

Projetos com Arduino por Willian Scollonoff

char StrContains(char *str, char *sfind)


{
char found = 0;
char index = 0;
char len;
len = strlen(str);
if (strlen(sfind) > len) {
return 0;
}
while (index < len) {
if (str[index] == sfind[found]) {
found++;
if (strlen(sfind) == found) {
return 1;
}
}
else {
found = 0;
}
index++;
}
return 0;
}

[ 189 ]

Projetos com Arduino por Willian Scollonoff

Projeto 40 Monitor de temperatura com Arduino

Ol pessoal, neste projeto iremos aprender a fazer um monitor de temperatura web com o
arduino. Para isso voc ir precisar de um sensor LM 35 e um Shield Ethernet para que
seja possvel realizar a conexo com a rede de internet. O projeto de fcil compreenso
deixando de forma clara e objeta com vrios comentrios nas linhas do cdigo. Ento
vamos ao trabalho !! Os cdigos sero todos comentados para melhor entendimento,
podendo ser retirados aps a compreenso de cada linha. Bom trabalho !!!
COMPONENTES NECESSRIOS
1 Protoboard
1 Sensor LM 35
1 Shield Ethernet
Fios jumper
DOWNLOAD DA PGINA WEB
Faa o download do arquivo da pgina web neste
linkhttps://onedrive.live.com/?cid=F877FDED1DE63FAA&id=F877FDED1DE63FAA%21122 (
OneDrive).
SIGAS OS PASSOS ABAIXO:

[ 190 ]

Projetos com Arduino por Willian Scollonoff

1) Faa o download do arquivo Index1.


2) Aps feito o download, extraia o arquivo index1.htm, copie e cole o arquivo em um micro SD
formate o SD antes de copiar o arquivo.
3) Insira o carto no slot acoplado ao Shield Ethernet.
4) Com o arduino j conectado porta USB de seu computador e o Shield ao cabo de rede, copie e
cole o cdigo abaixo para a IDE e mude o IP conforme sua rede, aps isso transfira - o para seu
arduino.
5) Abra seu browser e digite o IP que voc definiu no cdigo e d um enter.
6) Uma pgina web ser exibida com uma interface recebendo os valores analogicos de seu sensor
de temperatura LM 35.
7) Estimule o sensor a variaes de temperatura para oscilar o ponteiro do marcador em seu
navegador.

CONECTANDO OS COMPONENTES

CDIGO DO PROJETO
// Projeto 40 - Monitor de temperatura com arduino
#include <SPI.h>
#include <Ethernet.h>
#include <SD.h>

[ 191 ]

Projetos com Arduino por Willian Scollonoff

// Tamanho do buffer utilizado para capturar os pedidos HTTP


#define REQ_BUF_SZ 50
// Setando Endereo MAC e IP para a placa Ethernet
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
// Configurando o endereo IP (mudar conforme sua rede)
IPAddress ip(192, 168, 2, 121);
EthernetServer server(80); // Criar um servidor na porta 80
File webFile;
// Arquivo da pgina web no carto SD
// Armazena o buffer requerido a pgina web
char HTTP_req[REQ_BUF_SZ] = {0};
char req_index = 0;
// ndice no HTTP_req buffer
void setup()
{
// Desativar o chip de Ethernet
pinMode(10, OUTPUT);
digitalWrite(10, HIGH);
Serial.begin(9600); // Adicionado para depurao
// Inicializa o SD card
Serial.println("Initializing SD card...");
if (!SD.begin(4)) {
Serial.println("ERROR - SD card initialization failed!");
return; // Inicializao falhou
}
Serial.println("SUCCESS - SD card initialized.");
// Verifica se exite o arquivo index1.htm
if (!SD.exists("index1.htm")) {
Serial.println("ERROR - Can't find index1.htm file!");
return; // No pode encontrar o arquivo especificado
}
Serial.println("SUCCESS - Found index1.htm file.");
Ethernet.begin(mac, ip); // Inicializa o dispositivo Ethernet
server.begin();
// Inicializa o servidor web
}
void loop()
{
EthernetClient client = server.available(); // tentar obter cliente
if (client) {
boolean currentLineIsBlank = true;
while (client.connected()) {
if (client.available()) { // Dados do cliente disponvel para leitura
[ 192 ]

Projetos com Arduino por Willian Scollonoff

char c = client.read(); // L 1 byte (atributo) do cliente


// Primeira parte do pedido HTTP em ordem HTTP_req
// Deixa o ltimo elemento na matriz como 0 para terminar...
//a string (REQ_BUF_SZ - 1)
if (req_index < (REQ_BUF_SZ - 1)) {
HTTP_req[req_index] = c; // Salva o atributo HTTP requerido
req_index++;
}
// A ltima linha da requiso do cliente fica em branco e ternina com \n
// Responde para o cliente somente depois da ltima linha recebida
if (c == '\n' && currentLineIsBlank) {
// Enviar um cabealho de resposta HTTP padro
client.println("HTTP/1.1 200 OK");
// Restante do cabealho segue abaixo, dependendo se...
// Pgina web ou pgina XML solicitada
// Pedido Ajax - Enviar arquivo XML
if (StrContains(HTTP_req, "ajax_inputs")) {
// Enviar restante do cabealho HTTP
client.println("Content-Type: text/xml");
client.println("Connection: keep-alive");
client.println();
// Enviar arquivo XML contendo estados de entrada
XML_response(client);

}
else { // Solicitao de pgina web
// Enviar restante do cabealho HTTP
client.println("Content-Type: text/html");
client.println("Connection: keep-alive");
client.println();
// Envia pgina web
// Abre o arquivo da pgina web
webFile = SD.open("index1.htm");
if (webFile) {
while(webFile.available()) {
client.write(webFile.read()); // Cliente recebe a pgina web
}
webFile.close();
}
}
// Exibio na porta de serial o pedido recebido de HTTP
Serial.print(HTTP_req);
// Reseta o buffer para 0
req_index = 0;
StrClear(HTTP_req, REQ_BUF_SZ);
break;
}
[ 193 ]

Projetos com Arduino por Willian Scollonoff

// Cada linha de texto recebidas do cliente termina com \ r \ n


if (c == '\n') {
// Iniciar nova linha com a prxima leitura de caracteres
currentLineIsBlank = true;
}
else if (c != '\r') {
// Caracter recebido pelo cliente
currentLineIsBlank = false;
}
}

}
delay(1);
// D um tempo para o browser receber os dados
client.stop(); // Fecha a conexo
} // Fim do lao if (client)

// Envia ao arquivo XML os valores do pino analogico


void XML_response(EthernetClient cl
{
float tempC; // Cria varivel para armazenar temperatura
float tempPin = A2; // Declara o pin analgico 0
tempC = analogRead(tempPin); // L o valor analgico do sensor LM35
tempC = (5.0 * tempC * 100.0)/1024.0; // Converte a entrada de...
//temperatura em graus centigrados

cl.print("");
cl.print("");
// L o pino A2
cl.print("");
cl.print(tempC);
cl.print("");
cl.print("");
}
// Seta todos os elementos de str para 0 (limpa o vetor)
void StrClear(char *str, char length)
{
for (int i = 0; i < length; i++) {
str[i] = 0;
}
}

[ 194 ]

Projetos com Arduino por Willian Scollonoff

char StrContains(char *str, char *sfind)


{
char found = 0;
char index = 0;
char len;
len = strlen(str);
if (strlen(sfind) > len) {
return 0;
}
while (index < len) {
if (str[index] == sfind[found]) {
found++;
if (strlen(sfind) == found) {
return 1;
}
}
else {
found = 0;
}
index++;
}
}

return 0;

[ 195 ]

Das könnte Ihnen auch gefallen