novo manual umr

26
INICIANDO EM MICROCONTROLADORES R botic ROBÓTICA EDUCACIONAL www.robotic.com.br

Upload: daniel-paiva

Post on 30-Jul-2015

79 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Novo Manual UMR

INICIANDO EM MICROCONTROLADORES

R botic

ROBÓTICA EDUCACIONAL

www.robotic.com.br

Page 2: Novo Manual UMR

Ultrasom

Placa Shield ArduinoNavigator

UNIDADE MÓVEL ROBOTIC

Servos Sensor de Trilha

Arduino Atmega 328

Expansor de I/O

Page 3: Novo Manual UMR

Arduino Duemilanove Atmega 328

O Arduino é uma placa simples que contém tudo o que você precisa para começar a trabalhar com eletrônica e programação de microcontroladores. Este diagrama ilustra os principais componentes da placa

Unidade Móvel Robotic - Microcontrolador

www.robotic.com.br

R botic

Page 4: Novo Manual UMR

Arduino Duemilanove Atmega328

O Arduino Duemilanove é uma placa baseada no microcontrolador Atmega328. "Duemilanove" significa emitaliano 2009 foi nomeado após o ano de seu lançamento. O Duemilanove é o último de uma série deplacas Arduino USB. Tem 14 pinos de entrada e saida digital (dos quais 6 podem ser utilizados como saídasPWM), 6 entradas analógicas. (Com a biblioteca Mega Servos pode se ligar servos em qualquer saida digital).

ResumoMicrocontrolador ATmega328Tensão 5VTensão de entrada (recomendado) 7-12VTensão de entrada (limites) 6-20VDigital pinos de I / O 14 (dos quais 6 oferecem saída PWM)Analog Input Pins 6DC atual por I / O Pin 40 mACorrente DC 3.3V para Pin 50 mAMemória Flash 32 KB de que 2 KB utilizado pelobootloader SRAM 2 KBEEPROM 1 KBA velocidade do clock 16 MHz

O Arduino Duemilanove pode ser alimentado através da conexão USB ou com fonte de alimentação externa,adaptador AC para DC ou bateria (7-12v). O plug do adaptador 2,1 mm com centro-positivo. A fonte de energia é selecionado automaticamente.

Os pinos de alimentação são os seguintes:

VIN. A tensão de entrada para a placa Arduino, quando se está usando uma fonte externa de energia (ao contrário de 5 volts a partir da conexão USB). Você pode fornecer a tensão através desse pino.

5V. A fonte de alimentação regulada usada para alimentar o microcontrolador e outros componentes na placa. Isto pode vir tanto de VIN através de um regulador de bordo, ou seja alimentado por USB ou outra fonte de 5Vregulados.

3V3. é gerada pelo chip FTDI-on. Máximo consumo de corrente é de 50 mA.

Ground pinos GND..

MemóriaO ATmega168 tem 16 KB de memória flash para armazenar o código (de 2 KB que é usado para o gerenciador de inicialização).

ATmega328 tem 32 KB, (também com 2 KB utilizado para obootloader). O ATmega168 tem 1 KB de SRAM e 512 bytes deEEPROM (que pode ser lido e escrito com a biblioteca EEPROM ), oATmega328 tem 2 KB de SRAM e 1 KB de EEPROM.

Entrada e SaídaCada um dos 14 pinos digital no Duemilanove pode ser usado comouma entrada ou saída, usando pinMode () , digitalWrite () , edigitalRead () funções. Eles operam em 5 volts. Cada pino podefornecer ou receber um máximo de 40 mA e tem um resistor pull-upinterno (desligado por padrão) de 20-50 kOhms.

Unidade Móvel Robotic - Microcontrolador

www.robotic.com.br

R botic

Page 5: Novo Manual UMR

Pinos com funções específicas:

Serial: 0 (RX) e 1 (TX). Usado para receber (RX) e transmitir (TX TTL série de dados). Esses pinos são ligados aos pinos correspondentes do chip FTDI USB-to-TTL Serial.

Interrupções externas: 2 e 3. Estes pinos podem ser configurados para disparar uma interrupção em um valor baixo, um aumento ou diminuição de ponta, ou uma alteração no valor. (Veja a função attachInterrupt )

PWM: 3, 5, 6, 9, 10 e 11. Pinos de saída PWM

LED: 13. Há um built-in LED conectado ao pino digital 13.Quando o pino está em valor alto , o LED está ligado, quando o pino é baixo, ele está desligado

O Duemilanove tem 6 entradas analógicas, cada uma das quaisfornecem 10 bits de resolução (ou seja, 1.024 valores diferentes).Por padrão, elas medem do GND para 5 volts, mas é possívelmudar a extremidade superior de sua escala com o pino AREF eanalogReference () função.

AREF. Tensão de referência para as entradas analógicas. Usado com analogReference ().

Reset. Traga esta linha baixa para redefinir o microcontrolador. Tipicamente usado para adicionar um botãode reset de escudos.

ComunicaçãoO Duemilanove tem uma série de facilidades para se comunicar com um computador, outro Arduino, ou outrosmicrocontroladores. O ATmega168 e ATmega328 fornecer UART TTL (5V), comunicação serial, que está disponível nos pinos digitais 0 (RX) e 1 (TX). Um FT232RL FTDI os canais de comunicaçãoserial de USB e os drivers FTDI (incluído com o software Arduino) oferecem uma porta virtual com o software nocomputador. O software inclui um monitor Arduino serial que permite que dados simples de texto a ser enviadoe da placa Arduino. O RX e TX LEDs na placa pisca quando dados estão sendo transmitidos através do chip FTDI e conexão USB para o computador (mas não para comunicação serial nos pinos 0 e 1).

A biblioteca Software Serial permite a comunicação serial em qualquer um dos pinos digitais do Duemilanove o.O apoio também ATmega328 I2C (TWI) e comunicação SPI.

O software inclui uma biblioteca Arduino Wire para simplificar o uso do barramento I2C, veja a documentaçãopara mais detalhes. Para usar a comunicação SPI, consulte o datasheet ou ATmega328

ProgramaçãoO Duemilanove pode ser programado com o software IDE Arduino. Selecione "Arduino Duemilanove Atmega328no menu Ferramentas (de acordo com o microcontrolador na placa).

O Arduino Duemilanove ATmega328 vem com um gerenciador (BOOTLOADER) que permite que você façao upload do novo código para ele sem a utilização de um programador de hardware externo.

Ele se comunica utilizando o protocolo STK500 original ( de referência , arquivos de cabeçalho C ).Você também pode ignorar o bootloader e programar o microcontrolador através do ICSP (In-Circuit Serial Programming),

O Arduino Duemilanove tem um polyfuse resettable que protege as portas USB do seu computadora partir de shorts e sobrecorrente. Embora a maioria dos computadores fornecem sua própria proteção

Unidade Móvel Robotic - Microcontrolador

www.robotic.com.br

R botic

Page 6: Novo Manual UMR

Instalando o Programa

1 Faça o download do ambiente de desenvolvimento do Arduino em: www.robotic.com.brPara programar uma placa Arduino você precisa do ambiente de desenvolvimento.

Quando o download terminar descompacte (unzip) os arquivos. Certifique-se de preservar a estrutura das pastas. Abra a pasta. Dentro você vai encontrar alguns arquivos e sub-pastas. O aplicativo “Arduino” é seu programa ambiente de desenvolvimento.

2 Ao conectar a Placa Arduino na Porta USB e caso for solicitado drives localize os drivers USBpara o chip FTDI da placa na pasta drivers/FTDI USB Drivers da distribuição do Arduino.

Certifique-se que o "Arduino Duemilanove Atmega 328 " está selecionado em: Tools > Board

Configurando:

Unidade Móvel Robotic - Microcontrolador

www.robotic.com.br

R botic

Page 7: Novo Manual UMR

Escolhendo a Porta Serial Selecione a porta serial menu Tools | Serial Port. No Windows deveria ser:COM3, COM4 ou COM5 para uma placa USB. Para descobrir qual é abra o Gerenciador de Dispositivos doWindows (na aba Hardware do painel de controle do sistema). Procure por "USB Serial Port" na seção de Portas;

Unidade Móvel Robotic - Microcontrolador

www.robotic.com.br

R botic

Page 8: Novo Manual UMR

Unidade Móvel Robotic - Microcontrolador

www.robotic.com.br

Alimentando a UMR

Fonte 9V 1000mA

Pack de bateriasFonte 7,2V 1000 mAh

Para usar em bancada

Para uso em campo

Obs: Atualmente as melhores baterias são as LI-ION por não apresentarem efeito memória.

iNFORMAÇÕES PARA AQUISIÇÃO DE BATERIAS E FONTE PARA UMR

R botic

Montagem:

1 - Encaixe o Navigation no Arduino2 - Encaixe os cabos conforme exemplos da próxima página3 - Encaixe o cabo da Fonte 9V4 - Ligue o cabo USB

OBS: Não ligue a UMR na USB sem fonte externa. A USB não fornece a corrente suficiente para UMR.

Page 9: Novo Manual UMR

ConectorServo Esquerdo

ConectorServo Direito

Sinal de Controledo Servo 2 - Ligar paraos pinos digitais do Arduino

ConectorSensor de Trilha

Ativa e Desativa os Emissoresde Infravermelho

Conector p/ Ultrasom

Pino TRIG do ultrasom

Pino ECHO do ultrasom

ConectorSensoresEsquerdoCentralDireitodo sensor de linha

Sinal de controle dosensor infravermelhoesquerdo e direito

Conectores para outrosservos ou sensores

Emissor de infravermelhodireito (IR-D)

Módulo de Controle Remoto38Khz

Arduino Shield Navigation

Unidade Móvel Robotic - Microcontrolador

www.robotic.com.br

Emissor de infravermelhoesquerdo (IR-E)

R botic

Page 10: Novo Manual UMR

Ligando os servos motores e o sensor de trilha

Ligue um fio jumperpara um dos pinos digitaisdo arduino P0 - P13

Shield Arduino Navigation

Unidade Móvel Robotic - Microcontrolador

www.robotic.com.br

Ligue o servo esquerdo edireitoOBS: Cuidado com apolaridade. (Fio preto GND)

R botic

Page 11: Novo Manual UMR

NAVEGAÇÃO COM INFRAVERMELHO

Conecte o jumperpara ligar o emissorde infravermelho

Shield Arduino Navigation

Conecte o cabo jumper do IR-D ao pin 7 e IR-Epara o pino 6 do arduino

Unidade Móvel Robotic - Microcontrolador

www.robotic.com.br

R botic

Page 12: Novo Manual UMR

#include <MegaServo.h> //Inclue a biblioteca MegaServos#define NBR_SERVOS 12 // Numero de Servos. Maximo de 48 arduino MEGA, 12 para outros arduinos#define FIRST_SERVO_PIN 8MegaServo Servos[NBR_SERVOS] ;

int motor_d = 9;int motor_e = 10;int ir_receptor_d = 7;int ir_receptor_e = 6;int status_d; // variavel para quardar o valor no ir receptor direitoint status_e;//int status_c; //status para comparar a distancia

void setup(){Servos[1].attach(motor_d,880,2400) ;Servos[2].attach(motor_e,880,2400) ;pinMode(ir_receptor_d,INPUT);pinMode(ir_receptor_e,INPUT); para();}

void loop() { status_d = digitalRead(ir_receptor_d); //verifica cada sensor e guarda seu status status_e = digitalRead(ir_receptor_e);

if (status_d == HIGH and status_e==HIGH){frente();}if (status_d == LOW and status_e==LOW){para();}if (status_d == HIGH and status_e==LOW){direita();}if (status_d == LOW and status_e==HIGH){esquerda();} } void frente() { Servos[1].write(180) ; Servos[2].write(0) ; delay(15); }

void para() { Servos[1].write(70) ; Servos[2].write(70) ; delay(300); } void direita() { Servos[1].write(0); Servos[2].write(0); delay(30);} void esquerda() { Servos[1].write(180); Servos[2].write(180); delay(30); }

PROGRAMA PARA NAVEGAÇÃO COM INFRAVERMELHO

//Servo motor direito no pin 9//servo motor esquerdo pin 10 //IR-D pin 7// IR-E pin 6

Unidade Móvel Robotic - Microcontrolador

www.robotic.com.br

R botic

Page 13: Novo Manual UMR

Navegando com Ultrasom

Unidade Móvel Robotic - Microcontrolador

www.robotic.com.br

R botic

Page 14: Novo Manual UMR

Navegando com Ultrasom

Ligue um fio JUMPER do TRIG aoP12 do arduino e ECHO ao P13

Ligue um fio jumperpara um dos pinos digitaisdo arduino P9 e P10

Unidade Móvel Robotic - Microcontrolador

www.robotic.com.br

R botic

Conecte o sensor de ultrasomcuidado com a polaridade

Servo do Ultrasomno PIN digital 8

1 - Ligue o servo do sonar no pino 8 do arduino2 - Ligue o servo esquerdo no pino 93 - Ligue o servo direito no pino 10

4 - Ligue o TRIG ao pin 125 - Ligue o ECHO ao pin 13

Page 15: Novo Manual UMR

PROGRAMA DE NAVEGAÇÃO COM ULTRASOM

Unidade Móvel Robotic - Microcontrolador

www.robotic.com.br

PROGRAMA: Copie e cole na IDE do arduino

R botic

#include <MegaServo.h> //Inclue a biblioteca MegaServos#include "Ultrasonic.h"#define NBR_SERVOS 12 // Numero de Servos ligados. Maximo de 48 arduino MEGA, 12 para outros arduinos#define FIRST_SERVO_PIN 8#define echoPin 13 //Pino 13 recebe o pulso do echo#define trigPin 12 //Pino 12 envia o pulso para gerar o echo//iniciando a função e passando os pinos

Ultrasonic ultrasonic(12,13);MegaServo Servos[NBR_SERVOS] ;int cm;int st;

void setup() { // Serial.begin(9600); //inicia a porta serial st=2; pinMode(trigPin, OUTPUT); pinMode(echoPin, INPUT); Servos[1].attach(8,880,2400); Servos[2].attach(9,880,2400); Servos[3].attach(10,880,2400); Servos[1].write(90); Servos[2].write(70); //enviando um ângulo de 70 graus os servos param Servos[3].write(70); delay(5000); }

void loop() { digitalWrite(trigPin, LOW);delayMicroseconds(2);digitalWrite(trigPin, HIGH);delayMicroseconds(10);digitalWrite(trigPin, LOW);int distancia = (ultrasonic.Ranging(CM));

//Serial.print("Distancia em CM: ");//Serial.println(distancia);delay(100); //espera 100 milisegundos para fazer a leitura novamente

Page 16: Novo Manual UMR

PROGRAMA DE NAVEGAÇÃO COM ULTRASOM - CONTINUAÇÃO

Unidade Móvel Robotic - Microcontrolador

www.robotic.com.br

R botic

if (distancia > 30 and st==1){alinha();}if (distancia <= 30 and st==1){Sonar2();}if (distancia <= 30 and st==2){pare();}if (distancia > 30 and st==2){frente();}if (distancia > 30 and st==3){frente();} if (distancia <= 30 and st==3){alinha2();} }

void frente() { Servos[1].write(90); Servos[2].writeMicroseconds (1000); Servos[3].writeMicroseconds (2000); delay(15); } void pare() { Servos[2].write(70); //enviando um ângulo de 70 graus os servos param Servos[3].write(70); st = 1; delay(200); Sonar(); } void Sonar() { Servos[1].write(0); delay(2000); } void Sonar2() { Servos[1].write(180); st=3; delay(2000); //alinha2();} void alinha() { //alinhar o sonar com e motores Servos[1].write(90); for(int i=0;i<=10;i++) { Servos[2].writeMicroseconds (2000); Servos[3].writeMicroseconds (2000); st = 2; delay(30);}} void alinha2() { Servos[1].write(90); for(int i=0;i<=10;i++) { Servos[2].writeMicroseconds (1000); Servos[3].writeMicroseconds (1000); st = 2; delay(100);}}

Page 17: Novo Manual UMR

ACIONANDO UM LED PELO CONTROLE REMOTO

Material Necessário:

1 - Placa Arduino Navigation1 - Controle Remoto Sony

Obs: Pode-se usar um dos leds do Shield Expansor de I/O ou o próprioLED do pino 13 do arduino

Obs: O controle Sony é o mais apropriado, devido ao seu protocolo mais simples; portanto, os comandos neste manual só funcionam em controles de TV SONY.

Procedimentos:

- Encaixe a placa Shield Navigation nos conectores do arduino.- Ligue um fio Jumper do pino P2 do arduino ao IR-D ou IR-E- Conecte o cabo USB no arduino-Abra a IDE de programação do arduino-Copie o programa da próxima página e cole na IDE do arduino-Carregue o programa para o arduino

Unidade Móvel Robotic - Microcontrolador

www.robotic.com.br

OBS:Para os experimentos deste manual são necessários as seguintes bibliotecas:

- IRremote- MegaServo

Verifique no diretório onde foi instalado a IDE do arduino se na pasta LIBRARIEStem estas bibliotecas, caso falte alguma, baixe da pagina de download no site:www.robotic.com.br e descompacte na pasta libraries.

R botic

Page 18: Novo Manual UMR

Unidade Móvel Robotic - Microcontrolador

www.robotic.com.br

#include <IRremote.h> // Inclue a biblioteca IRremote

const int RECV_PIN = 2; //Receptor di IR no pino digital 2int LED = 13; //O Arduino já tem um LED no pin 13IRrecv irrecv(RECV_PIN);decode_results results;

void setup(){ pinMode(LED, OUTPUT); irrecv.enableIRIn(); // Inicia o recebimento }

void loop() { if (irrecv.decode(&results)) { if (results.value == 144){ //Tecla CH+ do controle remoto digitalWrite(LED, HIGH);} //Acende o LED do pin 13 if (results.value == 2192){ //Tecla CH- do controle remoto digitalWrite(LED, LOW); } //Apaga o LED do pin 13 irrecv.resume(); // Recebe proximo valor }}

OBS: O LED do pin 13 do arduino irá acender ou apagar de acordo comas teclas do controle (teclas: CH+ e CH-)

PROGRAMA: Copie e cole na IDE do arduino

Retire o jumper para desabilitaro emissor de infravermelho, evitandoqualquer interferência no módulo receptor de infrared

R botic

Page 19: Novo Manual UMR

Controlando a UMR por Controle Remoto

Unidade Móvel Robotic - Microcontrolador

www.robotic.com.br

R botic

Page 20: Novo Manual UMR

UMR - Controle Remoto

Unidade Móvel Robotic - Microcontrolador

www.robotic.com.br

#include <IRremote.h>#include <MegaServo.h> //Inclue a biblioteca MegaServos#define NBR_SERVOS 12 // Numero de Servos ligados. Maximo de 48 arduino MEGA, 12 para outros arduinos#define FIRST_SERVO_PIN 8MegaServo Servos[NBR_SERVOS] ;

const int RECV_PIN = 2; //SENSOR DE INFRARED NO PIN 2IRrecv irrecv(RECV_PIN);decode_results results;

void setup(){ Serial.begin(9600); Servos[1].attach(8,880,2400) ; //SERVO DIREITO NO PIN 8 Servos[2].attach(9,880,2400) ; //SERVO ESQUERDO NO PIN 9 Servos[1].write(70) ; Servos[2].write(70) ; irrecv.enableIRIn(); // Start the receiver irrecv.blink13(true); delay(15);}

void loop() { if (irrecv.decode(&results)) { Serial.println(results.value); if (results.value == 144){ //Chave CH+ frente Servos[1].write(180) ; Servos[2].write(0) ; delay(15);} if (results.value == 2192){ //Chave CH- volta Servos[1].write(0) ; Servos[2].write(180) ; delay(15); } if (results.value == 1168){ //Chave VOL+ direita Servos[1].write(0) ; Servos[2].write(0) ; delay(15); } if (results.value == 3216){ //Chave VOL+ esquerda Servos[1].write(180) ; Servos[2].write(180) ; delay(15); } if (results.value >= 3536){ //Chave JUMP PÁRA Servos[1].write(70) ; Servos[2].write(70) ; delay(15); } irrecv.resume(); // Recebe proximo valor }}

PROGRAMA: Copie e cole na IDE do arduino

R botic

Page 21: Novo Manual UMR

Seguindo Trilha

Conecte o sensor de trilha,no conector do shield NavigationLigue cabos Jumpers do SD ao P7 do arduino, SC ao P6 e SE ao P5.

SD => Sensor direitoSC => Sensor CentralSE => Sensor Esquerdo

Faça uma trilha usando fita isolante ou pintada na cor preta,com 20mm de largur em uma superfície branca

Unidade Móvel Robotic - Microcontrolador

www.robotic.com.br

R botic

Page 22: Novo Manual UMR

#include <MegaServo.h> //Inclue a biblioteca MegaServos#define NBR_SERVOS 12 // Numero de Servos ligados. Maximo de 48 arduino MEGA, 12 para outros arduinos#define FIRST_SERVO_PIN 8MegaServo Servos[NBR_SERVOS] ;

int motor_d = 9;int motor_e = 10;int ir_d = 7;int ir_c = 6;int ir_e = 5;int st_d; // variavel para quardar o valor no ir receptor direitoint st_c;int st_e;

void setup(){Servos[1].attach(motor_d,880,2400) ;Servos[2].attach(motor_e,880,2400) ;pinMode(ir_d,INPUT);pinMode(ir_c,INPUT);pinMode(ir_e,INPUT); para();}

void loop() { st_d = digitalRead(ir_d); //verifica cada sensor e guarda seu status st_c = digitalRead(ir_c); st_e = digitalRead(ir_e);

if (st_e == HIGH and st_c==LOW and st_d==HIGH){frente();}if (st_e == HIGH and st_c==HIGH and st_d==HIGH){para();}if (st_e == LOW and st_c==HIGH and st_d==HIGH){esquerda();}if (st_e == LOW and st_c==LOW and st_d==HIGH){esquerda();}if (st_d == LOW and st_c==HIGH and st_e==HIGH){direita();}if (st_d == LOW and st_c==LOW and st_e==HIGH){direita();} } void frente() { Servos[1].write(180) ; Servos[2].write(0) ; delay(15); }

void para() { Servos[1].write(70) ; Servos[2].write(70) ; delay(300); } void direita() { Servos[1].write(0); Servos[2].write(0); delay(30);} void esquerda() { Servos[1].write(180); Servos[2].write(180); delay(30); }

Unidade Móvel Robotic - Microcontrolador

www.robotic.com.br

PROGRAMA: Copie e cole na IDE do arduino

R botic

Page 23: Novo Manual UMR

Unidade Móvel Robotic - Microcontrolador

www.robotic.com.br

Controlando a UMR remotamente a partir de um notebook

Material Necessário:

1 - UMR completa1 - Um arduino extra1 - Led Infravermelho de 5mm1 - Transistor PN2222A1 - miniprotoboard

A UMR será controlada a partir de outro arduino conectado a porta USB.No monitor serial irá mostrar 5 opções de movimentos para UMR. Os sinaisserão emitidos pelo LED infravermelho.

Para o correto funcionamento teremos que carregar 2 programas um no arduinoemissor e o outro na UMR (receptor)

LED INFRARED 5MM PN2222A

RESISTOR100R

GND

+5v

PIN3

PN2222A

TO-92

EBC

R botic

obs: este programa pode ser adaptado paracontrolar uma TV sony pelo arduino

Page 24: Novo Manual UMR

Unidade Móvel Robotic - Microcontrolador

www.robotic.com.br

PROGRAMA EMISSOR: Copie e cole na IDE do arduinoEste programa deve ser carregado no arduino que irá emitir os sinais pelo LED IR.

#include <IRremote.h>

IRsend irsend;

int flag = 0 ; int char_in ; void setup() { Serial.begin(9600) ; colocaMenu() ; } void loop() { //piscaled() ; if(Serial.available() > 0 ) { char_in = Serial.read() ; if(char_in != -1) { Serial.println(char_in,BYTE) ; switch (char_in) { case '1': irsend.sendSony(144, 12); Serial.println("frente") ; delay(1000); break; case '2': irsend.sendSony(2192, 12); Serial.println("Traz") ; delay(1000); break; case '3': irsend.sendSony(1168, 12); Serial.println("Direita") ; delay(1000); break; case '4': irsend.sendSony(3216, 12); Serial.println("Esquerda") ; delay(1000); break; case '5': irsend.sendSony(3536, 12); Serial.println("Parar") ; delay(1000); break; default : irsend.sendSony(3536, 12); delay(1000); break; } } } } void colocaMenu() { Serial.println("CONTROLANDO A UMR PELA PORTA SERIAL USB") ; Serial.println("Selecione :") ; Serial.println("1 - FRENTE") ; Serial.println("2 - TRAZ") ; Serial.println("3 - DIREITA") ; Serial.println("4 - ESQUERDA") ; Serial.println("5 - PAPAR") ; Serial.println("OPCAO ? ") ; }

R botic

Page 25: Novo Manual UMR

Unidade Móvel Robotic - Microcontrolador

www.robotic.com.br

PROGRAMA RECEPTOR: Copie e cole na IDE do arduinoEste programa deve ser carregado no arduino da UMR.

#include <IRremote.h>#include <MegaServo.h> //Inclue a biblioteca MegaServos#define NBR_SERVOS 12 // Numero de Servos ligados. Maximo de 48 arduino MEGA, 12 para outros arduinos#define FIRST_SERVO_PIN 8MegaServo Servos[NBR_SERVOS] ;

const int RECV_PIN = 2; //SENSOR DE INFRARED NO PIN 2IRrecv irrecv(RECV_PIN);decode_results results;

void setup(){ Serial.begin(9600); Servos[1].attach(8,880,2400) ; //SERVO DIREITO NO PIN 8 Servos[2].attach(9,880,2400) ; //SERVO ESQUERDO NO PIN 9 Servos[1].write(70) ; Servos[2].write(70) ; irrecv.enableIRIn(); // Start the receiver irrecv.blink13(true); delay(15);}

void loop() { if (irrecv.decode(&results)) { Serial.println(results.value); if (results.value == 144){ //Chave CH+ frente Servos[1].write(180) ; Servos[2].write(0) ; delay(15);} if (results.value == 2192){ //Chave CH- volta Servos[1].write(0) ; Servos[2].write(180) ; delay(15); } if (results.value == 1168){ //Chave VOL+ direita Servos[1].write(0) ; Servos[2].write(0) ; delay(15); } if (results.value == 3216){ //Chave VOL+ esquerda Servos[1].write(180) ; Servos[2].write(180) ; delay(15); } if (results.value >= 3536){ //Chave JUMP PÁRA Servos[1].write(70) ; Servos[2].write(70) ; delay(15); } irrecv.resume(); // Recebe proximo valor }}

R botic

Page 26: Novo Manual UMR

Expansor de I/O Shield

#include < Expande.h > //Inclui a biblioteca ExpandeExpande saida = Expande(); // Cria o objeto saida

void setup() {}

void loop() { saida.digitalWrite(22, HIGH); delay (200); saida.digitalWrite(22, LOW); delay (200); }

Este shield aumenta o número de saídas digitais do arduino para um total de 27 saídas.

Utilizando 3 saídas (Pin 8, 12 e 13) para gerar mais 16 saídas digitais.

Exemplo de programa: Piscar um LED na porta 22

Experimento: Ligue um fio jumper da porta 22 para o conector do LED, o LED deverá ficar aceso,inicialmente, devido a polarização do mesmo. (Um dos pinos do led está ligado ao +5v e o outro emaberto aguardando o sinal do arduino; como as portas de 14 a 29 estão em nível baixo, o led fica aceso.

Obs: Os pinos do 14 ao 29 só funcionam como saídas digitais

Faça o download da biblioteca “Expande I/O no site: www.robotic.com.br e faça a extração dos arquivos na pasta “Libraries” no diretório do programa arduino.

Unidade Móvel Robotic - Microcontrolador

www.robotic.com.br

R botic