Você está na página 1de 38

1

APRESENTAÇÃO

Olá cursista!
Bem-vindo ao Curso Robótica Educacional!
A SECTI - Secretaria da Ciência, Tecnologia, Inovação e Educação
Profissional por meio do Projeto Qualificar ES oferta cursos de
qualificação profissional, possibilitando ao cidadão que procura
aperfeiçoar seu conhecimento, com vistas na melhor qualidade
de vida.
O curso é destinado aos profissionais que trabalham como
docentes e aficcionados por automação e robótica, e auxiliará
como ferramenta fundamental para iniciantes neste universo
dos autômatos.
O mercado de trabalho está em expansão, há oportunidades de
trabalho em empresas de diversos ramos de atuação, desde o
comércio, prestação de serviços e instituições públicas.
Nesse curso você aprenderá técnicas de arquivamento, entre
outros.
Ao final deste curso você estará apto para:
● Atuar profissionalmente no desenvolvimento de projetos
robóticos;
● Implementar projetos de forma otimizada.

Por isso, ler o material, compartilhar experiências no chat,


interagir com o tutor online no chat, trazer exemplos, fazer os
exercícios, e fazer pesquisas sobre os assuntos abordados e
assistir vídeos em streaming de vídeos é de fundamental
importância para o desenvolvimento do seu aprendizado.
Desejo a você, bons estudos!

2
PROJETOS
PROJETO 1: PROJETO DE SENSOR DE DETECÇÃO DE LUZ
COM SOM
Este é um projeto que mostra a variação da intensidade da luz
utilizando uma fotocélula com Arduino. De acordo com a
variação da intensidade da luz, os LEDs acendem ou apagam e se
não houver luz nenhuma, um buzzer apita.

Lista de Materiais

1 Arduino UNO Rev.3


1 LDR
1 Resistor de 10kOhm
8 resistores de 220 Ohm
8 LEDs
1 Buzzer

3
A fotocélula é um resistor que varia de acordo com a intensidade
da luz. Quanto maior a luminosidade, maior a resistência da
fotocélula. Na figura acima, mostra um divisor de tensão com a
fotocélula e um resistor de 10kOhm. Essa divisão é necessária
para que a porta analógica A0 do Arduino possa detectar a sua
variação. Assim se caso haja muita luminosidade, apenas 1 Led
acenderá, se houver pouca luminosidade, alguns Leds acenderão
e se houver nenhuma luminosidade, todos os leds acenderão e o
buzzer tocará.

Sketch
#include <Tone.h>
int LDRpin=A0;
int LDRval=0;
Tone player;
int note[]={NOTE_A3,NOTE_G4};
void setup() //Setup the output pins and play the buzzer
{
pinMode(2,OUTPUT);
4
pinMode(3,OUTPUT);
pinMode(4,OUTPUT);
pinMode(5,OUTPUT);
pinMode(6,OUTPUT);
pinMode(7,OUTPUT);
pinMode(8,OUTPUT);
pinMode(9,OUTPUT);
player.begin(10);
Serial.begin(9600);
}

void loop()
{
LDRval=analogRead(LDRpin);
if(Serial.available()>0)
{
Serial.println(LDRval);
}
delay(100);
if(LDRval>850)
{
digitalWrite(2,HIGH);
digitalWrite(3,LOW);
digitalWrite(4,LOW);
digitalWrite(5,LOW);
digitalWrite(6,LOW);
digitalWrite(7,LOW);
digitalWrite(8,LOW);
digitalWrite(9,LOW);
digitalWrite(10,LOW);
player.stop();
}
if(LDRval>800 && LDRval<850)
{
digitalWrite(2,HIGH);

5
digitalWrite(3,HIGH);
digitalWrite(4,LOW);
digitalWrite(5,LOW);
digitalWrite(6,LOW);
digitalWrite(7,LOW);
digitalWrite(8,LOW);
digitalWrite(9,LOW);
digitalWrite(10,LOW);
player.stop();
}
if(LDRval>750 && LDRval<800)
{
digitalWrite(2,HIGH);
digitalWrite(3,HIGH);
digitalWrite(4,HIGH);
digitalWrite(5,LOW);
digitalWrite(6,LOW);
digitalWrite(7,LOW);
digitalWrite(8,LOW);
digitalWrite(9,LOW);
digitalWrite(10,LOW);
player.stop();
}
if(LDRval>700 && LDRval<750)
{
digitalWrite(2,HIGH);
digitalWrite(3,HIGH);
digitalWrite(4,HIGH);
digitalWrite(5,HIGH);
digitalWrite(6,LOW);
digitalWrite(7,LOW);
digitalWrite(8,LOW);
digitalWrite(9,LOW);
digitalWrite(10,LOW);
player.stop();

6
}
if(LDRval>650 && LDRval<700)
{
digitalWrite(2,HIGH);
digitalWrite(3,HIGH);
digitalWrite(4,HIGH);
digitalWrite(5,HIGH);
digitalWrite(6,HIGH);
digitalWrite(7,LOW);
digitalWrite(8,LOW);
digitalWrite(9,LOW);
digitalWrite(10,LOW);
player.stop();
}
if(LDRval>600 && LDRval<650)
{
digitalWrite(2,HIGH);
digitalWrite(3,HIGH);
digitalWrite(4,HIGH);
digitalWrite(5,HIGH);
digitalWrite(6,HIGH);
digitalWrite(7,HIGH);
digitalWrite(8,LOW);
digitalWrite(9,LOW);
digitalWrite(10,LOW);
player.stop();
}
if(LDRval<600)
{
digitalWrite(2,HIGH);
digitalWrite(3,HIGH);
digitalWrite(4,HIGH);
digitalWrite(5,HIGH);
digitalWrite(6,HIGH);
digitalWrite(7,HIGH);

7
digitalWrite(8,HIGH);
digitalWrite(9,HIGH);
player.play(note[1]);
}

8
PROJETO 2: COMO UTILIZAR TERMISTOR NTC COM
ARDUINO
Neste tutorial vamos utilizar o Termistor NTC de 10K junto com o
Arduino e a biblioteca Thermistor para obtermos os valores em
graus Celsius. Esta biblioteca utiliza a equação de Steinhart-Hart
para converter o valor da resistência em valores de temperatura
e em uma segunda montagem, mostramos como fazer o mesmo
só que agora utilizando o método do Fator Beta (exemplo
baseado em um exemplo da Adafruit).

Lista de Materiais
1 x Arduino Uno Rev 3
1 x Termistor NTC de 10KΩ
1 x Resistor de 10KΩ
1 x Protoboard Mini
Alguns jumpers

O Termistor

Para fazer a leitura da temperatura, vamos utilizar um Termistor.


Este é um tipo de resistência especial que altera seu valor razão
da temperatura onde o componente é colocado.
Existem dois tipos de Termistores os NTC e os PTC.

9
Termistor PTC (Positive Temperature Coefficient): Este tipo de
Termistor tem o coeficiente de temperatura positivo, ou seja, a
resistência aumenta com o aumento da temperatura.
Termistor NTC (Negative Temperature Coefficient): Já este é o
inverso do anterior e seu coeficiente de temperatura é negativo.
Com isto sua resistência diminui com o aumento da temperatura.

O valor nominal do termistor é dado normalmente a 25 ºCelsius


e neste caso utilizaremos um termistor de 10K. Ele atua na faixa
de -40 a +125.

Determinação da temperatura
Para determinar a temperatura do existe dois métodos um
utilizando a interpolação pela fórmula de Steinhart-Hart ou ainda
podemos utilizar a equação do fator Beta.
Abaixo você vê dois métodos para aquisição da temperatura:

Método Steinhart-Hart

Equação Steinhart-Hart

O método de Steinnhart- Hart é implementado por uma


biblioteca que fizemos algumas modificações para mantermos a
compatibilidade da mesma com a IDE do Arduino.

A biblioteca pode ser baixada neste link: Thermistor.zip


Realizamos alguns testes aqui com este sensor junto aos valores
desta biblioteca e o termistor respondeu a valores muito
próximos desejados (mesmo sem ter feito alterações nos valores
dos coeficientes de temperatura).
10
Para este Circuito podemos utilizar e o Sketch exemplo com este
circuito:

Circuito para Método Steinhart-Hart

Sketch

#include <Thermistor.h>
Thermistor temp(0);
void setup()
{
Serial.begin(9600);
}
void loop()
{
int temperature = temp.getTemp();
Serial.print("Temperatura no Sensor eh: ");
Serial.print(temperature);
Serial.println("*C");
delay(1000);
}

11
Método do Fator Beta

Equação do fator Beta

O método do fator beta pode ser implementado utilizando um


código de exemplo usado pela Adafruit (fizemos uma pequena
modificação, pois o Termistor que utilizamos é um NTC).
O circuito deve ser montado segundo a função abaixo:

Circuito para Método do Fator Beta


Segundo o manual do referido termistor, o fator beta do mesmo
é 3977 e utilizamos ele no Sketch abaixo:

// Pino onde o Termistor esta conectado


#define PINOTERMISTOR A0
// Valor do termistor na temperatura nominal
#define TERMISTORNOMINAL 10000
// Temp. nominal descrita no Manual
#define TEMPERATURENOMINAL 25
// Número de amostragens para

12
#define NUMAMOSTRAS 5
// Beta do nosso Termistor
#define BCOEFFICIENT 3977
// valor do resistor em série
#define SERIESRESISTOR 10000

int amostra[NUMAMOSTRAS];
int i;
void setup(void)
{
Serial.begin(9600);
analogReference(EXTERNAL);
}

void loop(void)
{
float media;

for (i=0; i< NUMAMOSTRAS; i++)


{
amostra[i] = analogRead(PINOTERMISTOR);
delay(10);
}
media = 0;
for (i=0; i< NUMAMOSTRAS; i++)
{
media += amostra[i];
}
media /= NUMAMOSTRAS;
// Converte o valor da tensão em resistência
media = 1023 / media - 1;
media = SERIESRESISTOR / media;

//Faz o cálculo pela fórmula do Fator Beta


float temperatura;

13
temperatura = media / TERMISTORNOMINAL; // (R/Ro)
temperatura = log(temperatura); // ln(R/Ro)
temperatura /= BCOEFFICIENT; // 1/B * ln(R/Ro)
temperatura += 1.0 / (TEMPERATURENOMINAL + 273.15);
temperatura = 1.0 / temperatura; // Inverte o valor
temperatura -= 273.15; // Converte para Celsius
Serial.print("Temperatura no Sensor eh: ");
Serial.print(temperatura);
Serial.println(" *C");
delay(1000);
}
}

Sugestão de uso com estes sensores, eles são uma alternativa


barata e simples de conseguir uma amostra da temperatura
ambiente.

14
PROJETO 3: COMO USAR O ARDUINO BLUETOOTH HC-
05 EM MODO MESTRE

Os módulos Arduino bluetooth são divididos em dois tipos: os


que trabalham no modo escravo (slave), ou seja, apenas aceitam
conexões de outros dispositivos, e os que trabalham tanto no
modo escravo como no modo mestre (master), permitindo que
se conectem à outros dispositivos Bluetooth.

Como interligar 2 módulos Bluetooth: um Arduino Bluetooth HC-


05 em modo master, e um HC-06 em modo slave. Você pode
utilizar também, se preferir, dois módulos HC-05, já que ele
aceita tanto o modo mestre como o modo escravo.

Os módulos em si são muito parecidos, o que muda é a versão do


firmware, e geralmente os módulos Arduino Bluetooth HC-06
possuem apenas 4 pinos, e o HC-05 tem 6 pinos. Na dúvida,
consulte a documentação do módulo que você tem em mãos.

Um dos pinos adicionais é o pino Status/Key, que vamos utilizar


para programar o HC-05 em modo master, pareando-o com o
HC-06.

15
O processo é um pouco extenso e recomendamos não pular
nenhum passo, pois cada etapa depende da correta execução da
etapa anterior.

Lista de Materiais
2 Arduino Uno (podem ser utilizadas outras placas)
1 módulo Arduino Bluetooth HC-05
1 módulo Arduino Bluetooth HC-06
4 resistores para montagem do divisor de tensão
1 led de qualquer cor
1 resistor limitador de corrente para o led

Antes de iniciarmos a ligação dos componentes, vamos prestar


atenção que esses módulos trabalham com nível de sinal de 3.3v,
o que significa que vamos precisar de um divisor de tensão para
evitar a queima do módulo.

O divisor de tensão é composto por dois resistores, e na página


https://www.arduinoecia.com.br/p/calculador-divisor-de-
tensao-function.html encontra-se a calculadora para este fim.r a
tensão

Na página, digite 5 para a tensão de entrada (Input Voltage),


digite os valores dos resistores (R1 e R2) que você possui, e
pressione o botão Compute para verificar no campo Output
Voltage qual será a tensão de saída, lembrando que por
segurança esta deve ser, no máximo, de 3.3v.

16
Configurando Arduino Bluetooth HC-05 em modo
mestre:

Monte primeiro o circuito acima, que será usado para programar


o HC-05 em modo master. Agora, carregue o seguinte programa
no segundo Arduino antes de montar o circuito do módulo
escravo:

//Programa : Modulo Arduino Bluetooth HC-05 - Programacao


//Autor : FILIPEFLOP

//Carrega a biblioteca SoftwareSerial


#include <SoftwareSerial.h>

//Define os pinos para a serial


SoftwareSerial mySerial(10, 11); // RX, TX
String command = ""; // Stores response of bluetooth device
// which simply allows n between each
// response.

void setup()

17
{
//Inicia a serial
Serial.begin(115200);
Serial.println("Digite os comandos AT :");
//Inicia a serial configurada nas portas 10 e 11
mySerial.begin(38400);
}

void loop()
{
// Read device output if available.
if (mySerial.available())
{
while(mySerial.available())
{ // While there is more to be read, keep reading.
command += (char)mySerial.read();
}
Serial.println(command);
command = ""; // No repeats
}

// Read user input if available.


if (Serial.available())
{
delay(10); // The DELAY!
mySerial.write(Serial.read());
}
}

18
CONFIGURANDO ARDUINO BLUETOOTH HC-06 EM
MODO ESCRAVO:

Efetue a ligação dos componentes no segundo Arduino e utilize


uma fonte externa para alimentação. Note que no primeiro
circuito estamos utilizando os pinos 10 e 11 do Arduino como
pinos RX e TX de uma porta serial. Isso é possível, pois vamos
utilizar a biblioteca Software Serial. No Arduino desse circuito,
carregue o seguinte programa:

//Programa : Modulo Arduino Bluetooth HC-05 - Recepcao


//Autor : FILIPEFLOP
//Armazena o caracter recebido
char buf;
void setup()
{
//Define o pino 13 como saida
pinMode(13, OUTPUT);
Serial.begin(9600);
}

19
void loop()
{
while(Serial.available() > 0)
{
buf = Serial.read();
//Caso seja recebido o caracter L, acende o led
if (buf == 'L')
{
digitalWrite(13, HIGH);
}
//Caso seja recebido o caracter D, apaga o led
if (buf == 'D')
{
digitalWrite(13, LOW);
}
}
}

Comandos AT:
Entre no serial monitor e selecione a velocidade de 115200 na
parte inferior (destaque em vermelho), assim como o comando
de fim de linha para Ambos NL & CR (destaque em azul). A
mensagem “Digite os comandos AT :” será exibida:

20
Digite o comando AT, que deve retornar com a mensagem “OK”
indicando que o módulo está respondendo aos comandos.
Digite AT+VERSION para exibir a versão do firmware, que pode
ser diferente da imagem abaixo:

Digite agora os seguintes comandos na sequência. Cada um deles


deve retornar “OK“, indicando que o comando foi aceito pelo
módulo:

AT+ORGL (Reseta o módulo para a configuração padrão)

AT+RMAAD (remove dispositivos anteriormente pareados)

AT+ROLE=1 (define o modo de operação do módulo como


MASTER)

21
AT+RESET (Reset do módulo após a definição do modo de
operação)

AT+CMODE=1 (Permite a conexão a qualquer endereço)

AT+INQM=0,5,10 (Modo de varredura : padrão, procura por 5


dispositivos ou pára a varredura após 10 s)

AT+PSWD=1234 (define a senha do módulo mestre, que deve ser


a mesma do módulo slave/escravo)

AT+INIT (inicializa o perfil para transmissão/recepção)

AT+INQ (inicializa a varredura por dispositivos bluetooth)

Essa varredura vai mostrar o endereço dos dispositivo bluetooth


detectados. No nosso caso temos apenas um dispositivo escravo:

A parte que nos interessa dessa tela é o endereço, que no nosso


caso é 2013:7:183190. Vamos precisar dessa informação para
efetuar o pareamento, trocando os símbolos de “dois pontos”
por vírgulas, ficando assim: 2013,7,183190

22
Digite agora o comando AT+PAIR=<endereco>,<timeout>. No
nosso caso, o comando ficaria assim :

AT+PAIR=2013,7,183190, 10

O serial monitor retornará “OK”.

Por fim, digite o comando AT+LINK=<endereco>, que vai


conectar os dois dispositivos. Nesse momento o led do módulo
HC-05 em modo master deve piscar de forma mais lenta,
indicando conexão ao módulo HC-06, cujo led deve parar de
piscar.

Essa série de comandos AT não precisa ser repetida a cada


montagem. Uma vez configurado o módulo HC-05 em modo
master, ele se conectará automaticamente ao módulo escravo
todo vez que você energizar os módulos.

Programando o Arduino:
Para finalizar, desconecte o pino Key do HC-05 do pino 3.3v do
Arduino, e carregue o seguinte programa no Arduino:

//Programa : Modulo Arduino Bluetooth HC-05 - Envio


//Autor : FILIPEFLOP
//Carrega a biblioteca SoftwareSerial
#include <SoftwareSerial.h>

//Define os pinos para a serial


SoftwareSerial mySerial(10, 11); // RX, TX

void setup()
{
//Inicializa a serial nas portas 10 e 11
23
mySerial.begin(38400);
}

void loop()
{
//Envia pela serial o caracter L
mySerial.print("L");
delay(3000);
//Envia pela serial o caracter D
mySerial.print("D");
delay(3000);
}

Esse programa envia os caracteres L (para acender o led)


e D (para apagar o led) para a serial das portas 10 e 11, onde está
ligado o HC-05 no primeiro Arduino. O segundo Arduino, com o
HC-06, recebe esses caracteres, e acende o led ao receber o
caracter L, e apaga o led ao receber o caracter D.

24
PROJETO 4: MICRO SERVO MOTOR 9G SG90 COM
ARDUINO UNO
O Micro Servo TowerPro 9g SG90 é um servo de alta qualidade e
excelente para as suas necessidades seja em aeromodelismo ou
em projetos mecatrônicos. Pensando nisso bolamos um post
simples para fazer os primeiros movimentos com o seu Micro
Servo 9g SG90 e um Arduino Uno.

Especificações:

– Voltagem de Operação: 3,0 – 7,2v


– Velocidade: 0,12 seg/60Graus (4,8v) sem carga
– Torque: 1,2 kg.cm (4,8v) e 1,6 kg.cm (6,0v)
– Temperatura de Operação.: -30C ~ +60C
– Dimensões.: 32x30x12 mm
– Tipo de Engrenagem: Nylon
– Tamanho cabo: 245 mm
– Peso: 9g

25
Componentes necessários:

● Arduino Uno
● Micro Servo 9g SG90
● Kit Jumper Macho-Macho

Conecte a alimentação do Micro Servo 9g ao Arduino. Fio


Marrom com GND, Fio Vermelho com 5v e Fio Laranja na Porta
Digital 6.

Programando:

#include <Servo.h>
#define SERVO 6 // Porta Digital 6 PWM
Servo s; // Variável Servo
int pos; // Posição Servo
void setup ()
{
s.attach(SERVO);
Serial.begin(9600);
s.write(0); // Inicia motor posição zero
}
void loop()
{
for(pos = 0; pos < 90; pos++)
{
s.write(pos);
delay(15);
}
delay(1000);
for(pos = 90; pos >= 0; pos--)
{
s.write(pos);
delay(15);
}
}
26
PROJETO 4: MICRO SERVO MOTOR 9G SG90 COM
ARDUINO UNO

Vamos apresentar um projeto de um Robô seguidor de linha,


por muito conhecido também por robô segue faixa.

Segundo o fabricante deste shield, as portas utilizadas pelos


motores são as seguintes :

● Controle de motores DC : Pinos 11, 3, 5 e 6


● Controle de motores de passo : Pinos 4, 7, 8 e 12
● Controle de servo motores : Pinos 9 e 10

Desta forma, as portas que podemos utilizar livremente são as 6


portas analógicas, assim como as digitais 2 e 13, isso se
estivermos falando de um Arduino Uno. Em um Arduino Mega,
por exemplo, todas as demais portas também estarão
disponíveis.

27
Montando um Robô Seguidor de Linha:
Um bom exemplo de utilização deste Arduino motor shield é em
aplicações de robótica, como por exemplo na montagem de um
robô seguidor de linha. Para facilitar sua vida existem Kits de
chassi para robôs com 2 ou 4 rodas:

Chassi 2 Rodas Robô

Chassi 4 Rodas Robô

Esses kits já vem com motores, suporte de baterias, acessórios e


você só precisa adicionar o Arduino (ou outra placa de sua
preferência), os sensores e o circuito controlador de motores.
Para o caso do Arduino, recomendamos a utilização do Motor
Shield citado acima, já que ele se encaixa perfeitamente em um
Arduino Uno economizando espaço na montagem do robô.

28
Podemos utilizar como sensor os LDR´s (resistores dependentes
de luz), ou então sensores ópticos reflexivos, como o TCRT5000,
que terão a função de “enxergar” a linha e transmitir essa
informação para o Arduino.

Projeto Robô Seguidor de Linha


Para o nosso “carrinho” segue faixa, vamos utilizar 3 sensores
ópticos ligados lado a lado. Conforme a linha for detectada (ou
não), cada sensor enviará ao Arduino as informações sobre a
intensidade do sinal infravermelho refletido, e o programa usará
essas informações para calcular a velocidade de cada motor. A
ilustração abaixo mostra, de forma resumida, como os sensores
se comportam:

Imagem : RobotC

Transportando essa ideia para o nosso motor shield, vamos


utilizar as portas A0, A1 e A2 para ligação dos sensores. O motor
da esquerda será ligado ao conector M1, e o motor da direita ao
conector M4, utilizando a própria alimentação do Arduino
(mantenha o jumper PWR na placa).

Demonstramos a ligação dos sensores em uma protoboard,


utilizando resistores de 330 ohms para o led infravermelho
(parte superior/azul do sensor), e resistores de 10 K na parte
inferior (receptor) :

29
Shield Ponte H

Protoboard com os componentes de infravermelho

A maneira mais conveniente de ligar os sensores ao shield é


utilizar uma barra de pinos (macho ou fêmea) soldada à placa,
como na imagem abaixo :

30
Controle do Robô Seguidor de Linha com Arduino:
Para acionar o circuito vamos utilizar, com algumas adaptações,
o programa criado por Michael McRoberts e disponível no
livro Arduíno Básico. Adicionamos as funções da biblioteca
AFMotor, responsável por comandar o motor shield. A biblioteca
AFMotor pode ser encontrada nesse link. Descompacte a pasta,
renomeie para AFMotor, e coloque essa pasta dentro da
pasta LIBRARIES do programa (IDE) do seu Arduino. Não esqueça
de sair e carregar a IDE novamente para que a biblioteca seja
reconhecida pelo programa.

//Programa : Motor shield com sensor TCRT5000


//Adaptações : FILIPEFLOP
//Baseado no programa original de Michael McRoberts

#include <AFMotor.h>

AF_DCMotor motor_esq(1); //Seleciona o motor 1


AF_DCMotor motor_dir(4); //Seleciona o motor 4

int SENSOR1, SENSOR2, SENSOR3;

//deslocamentos de calibracao
int leftOffset = 0, rightOffset = 0, centre = 0;
//pinos para a velocidade e direcao do motor
int speed1 = 3, speed2 = 11, direction1 = 12, direction2 = 13;
//velocidade inicial e deslocamento de rotacao

31
int startSpeed = 70, rotate = 30;
//limiar do sensor
int threshold = 5;
//velocidades iniciais dos motores esquerdo e direito
int left = startSpeed, right = startSpeed;

//Rotina de calibracao do sensor


void calibrate()
{
for (int x=0; x<10; x++) // 10 vezes p/obter uma media
{
delay(100);
SENSOR1 = analogRead(0);
SENSOR2 = analogRead(1);
SENSOR3 = analogRead(2);
LeftOffset = leftOffset + SENSOR1;
centre = centre + SENSOR2;
rightOffset = rightOffset + SENSOR3;
delay(100);
}
//obtem a media para cada sensor
leftOffset = leftOffset /10;
rightOffset = rightOffset /10;
centre = centre / 10;
//calcula deslocamentos para os sensores esquerdo e
direito
leftOffset = centre - leftOffset;
rightOffset = centre - rightOffset;
}

void setup()
{
calibrate();
delay(3000);
}

32
void loop()
{
//utiliza a mesma velocidade em ambos os motores
left = startSpeed;
right = startSpeed;
//le os sensores e adiciona os deslocamentos
SENSOR1 = analogRead(0) + leftOffset;
SENSOR2 = analogRead(1);
SENSOR3 = analogRead(2) + rightOffset;
//Se SENSOR1 > sensor do centro + limiar,
// vire para a direita
if (SENSOR1 > SENSOR2+threshold)
{
left = startSpeed + rotate;
right = startSpeed - rotate;
}

//Se SENSOR3 for maior do que o sensor do centro +


limiar,
// vire para a esquerda
if (SENSOR3 > (SENSOR2+threshold))
{
left = startSpeed - rotate;
right = startSpeed + rotate;
}

//Envia os valores de velocidade para os motores


motor_esq.setSpeed(left);
motor_esq.run(FORWARD);
motor_dir.setSpeed(right);
motor_dir.run(FORWARD);
}
Conforme o motor e chassi que for utilizar, você deve ajustar os
parâmetros de velocidade (startSpeed) e deslocamento de

33
rotação (rotate), evitando que os motores girem muito rápido ou
muito devagar.

34
Sugestão de Kits
KIT ARDUINO MAKER
01 - Placa Uno R3
01 - Cabo USB 30cm
01 - Adaptador Bateria 9v para Arduino
01 - Display LCD 16x2 (com conectores
soldados)
02 - Display de 7 segmentos com 1 digito
01 - Sensor de Distância Ultrassônico
01 - Controle Remoto Ir
01 - Receptor Universal Ir
01 - Real Time Clock DS1307
01 - Módulo Leitor RFID-RC522
01 - Cartão Padrão S50 em branco
01 - Tag (tipo chaveiro) Padrão S50
01 - Módulo Sensor de Chuva
01 - Sensor de Umidade do Solo
01 - Placa de controle para Sensor de Solo
01 - Teclado Matricial De Membrana
01 - Sensor De Umidade e Temperatura Dht11
01 - Protoboard 830 Pontos
30 - Jumper Macho-Macho variados
20 - Jumper Macho-Femea
01 - Módulo Relé 2 Canais
01 - Motor DC
01 - Micro Servo 9g SG90 TowerPro
01 - Sensor de Temperatura NTC
01 - Sensor de Luz LDR
01 - Buzzer Ativo 5V
05 - LED Vermelho
05 - LED Amarelo
05 - LED Verde
15 - Resistor 330Ω
05 - Resistor 1KΩ
05 - Resistor 10KΩ
04 - Diodo 1N4007
01 - Potenciômetro 10KΩ
01 - Potenciômetro Trimpot 10KΩ
04 - Capacitor Cerâmico 10nF
04 - Capacitor Cerâmico 100nF
02 - Capacitor Eletrolítico 10uF
02 - Capacitor Eletrolítico 100uF
05 - Chave Tactil (Push-Button)

35
KIT CHASSI 4WD ROBÔ PARA ARDUINO

02 - Chassi em acrílico
04 - Motores DC (3-6v)
04 - Rodas de Borracha
06 - Espaçadores
01 - Jogo de Parafusos e Porcas

36
REFERÊNCIAS
LDG. Tutorial: Como utilizar Termistor NTC com Arduino.
Disponível em <http://labdegaragem.com/profiles/blogs/
tutorial-como-utilizar-o-termistor-ntc-com-arduino/>.

___. Projeto de sensor de detecção de Luz com som.


<http://labdegaragem.com/profiles/blogs/projeto-de-sensor-
de-detec-o-de-luz-com-som>.

___. Tutorial: como utilizar o controle remoto IR com Arduino.


Disponível em <http://labdegaragem.com/profiles/blogs/
tutorial-como-utilizar-o-controle-remoto-ir/>.

THOMSEN, Adilson. Como usar o Arduino Bluetooth HC-05 em


modo mestre. Disponível em <https://www.filipeflop.com
/blog/tutorial-arduino-bluetooth-hc-05-mestre/>.

___. Micro Servo Motor 9g SG90 com Arduino Uno. Disponível


em <https://www.filipeflop.com/blog/micro-servo-motor-9g-
sg90-com-arduino-uno/>.

MCROBERTS, Michael. Arduino Básico. São Paulo: Novatec,


2015.

37
38

Você também pode gostar