Estou fazendo um robô controlado por um controle IR, similar aqueles de som de carro, vendido em kits de controle IR. Bem o meu robô sera bem simples, so quero controlar a sua locomoção, formada por dois motores DC com locomoção tipo tanque de guerra, e controlar o acender e apagar de um LED. Sou iniciante na area de programação, mas estava vendo um post em outro forum e o altor me fornecel seu codigo, mas era algo mais complexo do que eu quero.
Modifiquei o codigo mas sempre da erro. Este é o codigo que estou fazendo:
#include <IRremote.h>
int motor1Pin1 = 5; // Ponte H
int motor1Pin2 = 6; // Ponte H
int motor2Pin1 = 10; // Ponte H
int motor2Pin2 = 11; // Ponte H
int led = 4;
int receiver = A0
IRrecv irrecv(receiver);
decode_results results;
void setup(){
// Definir os pinos outputs:
pinMode(led, OUTPUT);
pinMode(motor1Pin1, OUTPUT);
pinMode(motor1Pin2, OUTPUT);
pinMode(motor2Pin1, OUTPUT);
pinMode(motor2Pin2, OUTPUT);
irrecv.enableIRIn();
}
void pisca(){
digitalWrite(led, HIGH);
delay(50);
digitalWrite(led, LOW);
}
void loop(){
if (irrecv.decode(&results)){
switch(results.value){
//CONTROLE
case FF629D:{ // Mode => Ir para frete
digitalWrite(motor1Pin1, HIGH);
digitalWrite(motor1Pin2, LOW);
digitalWrite(motor2Pin1, HIGH);
digitalWrite(motor2Pin2, LOW);
break;
}
case FFA857:{ // VOL- => Ir para traz
digitalWrite(motor1Pin1, LOW);
digitalWrite(motor1Pin2, HIGH);
digitalWrite(motor2Pin1, LOW);
digitalWrite(motor2Pin2, HIGH);
break;
}
case FF22DD:{ // >// PAUSE => Gira para a esquerda
digitalWrite(motor1Pin1, LOW);
digitalWrite(motor1Pin2, HIGH);
digitalWrite(motor2Pin1, HIGH);
digitalWrite(motor2Pin2, LOW);
break;
}
case 1FFC23D:{ // >>/ Avançar Girar para a direita
digitalWrite(motor1Pin1, HIGH);
digitalWrite(motor1Pin2, LOW);
digitalWrite(motor2Pin1, LOW);
digitalWrite(motor2Pin2, HIGH);
break;
}
case FF02FD:{ // /<< Voltar => LED
digitalWrite(led, HIGH);
delay(50);
digitalWrite(led, LOW);
}
Os valores dos botões do controle obtive através do exemplo IRrecvDump
Muito interessante...
E qual é exactamente o problema?
Troquei os codigos dos botoes obtendo-os atraves de um codigo passado pelo altor do topico de onde estou me baseando, mas o erro continua =( o novo codigo fica assim
#include <IRremote.h>
int motor1Pin1 = 5; // Ponte H
int motor1Pin2 = 6; // Ponte H
int motor2Pin1 = 10; // Ponte H
int motor2Pin2 = 11; // Ponte H
int led = 4;
int receiver = A0
IRrecv irrecv(receiver);
decode_results results;
void setup(){
// Definir os pinos outputs:
pinMode(led, OUTPUT);
pinMode(motor1Pin1, OUTPUT);
pinMode(motor1Pin2, OUTPUT);
pinMode(motor2Pin1, OUTPUT);
pinMode(motor2Pin2, OUTPUT);
irrecv.enableIRIn();
}
void pisca(){
digitalWrite(led, HIGH);
delay(50);
digitalWrite(led, LOW);
}
void loop(){
if (irrecv.decode(&results)){
switch(results.value){
//CONTROLE
case 16736925:{ // Mode => Ir para frete
digitalWrite(motor1Pin1, HIGH);
digitalWrite(motor1Pin2, LOW);
digitalWrite(motor2Pin1, HIGH);
digitalWrite(motor2Pin2, LOW);
break;
}
case 16754775:{ // VOL- => Ir para traz
digitalWrite(motor1Pin1, LOW);
digitalWrite(motor1Pin2, HIGH);
digitalWrite(motor2Pin1, LOW);
digitalWrite(motor2Pin2, HIGH);
break;
}
case 16720605:{ // >// PAUSE => Gira para a esquerda
digitalWrite(motor1Pin1, LOW);
digitalWrite(motor1Pin2, HIGH);
digitalWrite(motor2Pin1, HIGH);
digitalWrite(motor2Pin2, LOW);
break;
}
case 16761405:{ // >>/ Avançar Girar para a direita
digitalWrite(motor1Pin1, HIGH);
digitalWrite(motor1Pin2, LOW);
digitalWrite(motor2Pin1, LOW);
digitalWrite(motor2Pin2, HIGH);
break;
}
case 16712445:{ // /<< Voltar => LED
digitalWrite(led, HIGH);
delay(50);
digitalWrite(led, LOW);
}
Quando tento copilar o codigo apresenta o seguinte erro
Controle_IR:9: error: expected ',' or ';' before 'IRrecv'
Controle_IR.cpp: In function 'void setup()':
Controle_IR:20: error: 'irrecv' was not declared in this scope
Controle_IR.cpp: In function 'void loop()':
Controle_IR:31: error: 'irrecv' was not declared in this scope
Controle_IR:73: error: expected `}' at end of input
Controle_IR:73: error: expected `}' at end of input
Controle_IR:73: error: expected `}' at end of input
int receiver = A0
Aqui esta um erro falta te o ;
Deveras ter de corrigir para
int receiver = A0;
Depois no final faltam muitos "}" para fechares as funçoes !!
Outra coisa que reparei,eu nunca usei essa lib mas axo que a criaçao deste objecto nao estara bem
IRrecv irrecv(receiver);
decode_results results;
Bem estou baseando o codigo a partir deste de autoria do robi_gremista.
#include <IRremote.h>
#include <Servo.h>
Servo SERVO_X;
Servo SERVO_GE;
Servo SERVO_GD;
int MOTOR_E = 5;
int MOTOR_D = 6;
int receiver = 3;
int LUZ = 2;
int led = 4;
IRrecv irrecv(receiver);
decode_results results;
void setup(){
pinMode(led, OUTPUT);
pinMode(MOTOR_E, OUTPUT);
pinMode(MOTOR_D, OUTPUT);
pinMode(LUZ, OUTPUT);
SERVO_X.attach(9);
SERVO_GE.attach(10);
SERVO_GD.attach(11);
SERVO_GE.write(5);
SERVO_GD.write(70);
SERVO_X.write(30);
Serial.begin(9600);
irrecv.enableIRIn();
}
void pisca(){
digitalWrite(led, HIGH);
delay(50);
digitalWrite(led, LOW);
}
void loop(){
if (irrecv.decode(&results)){
switch(results.value){
//CONTROLE
case 1086259455:{ // PLAY/PAUSE
analogWrite(MOTOR_E, 240);
analogWrite(MOTOR_D, 80);
Serial.println("IR - FRENTE");
pisca();
break;
}
case 1086292095:{ // CHANEL -
analogWrite(MOTOR_E, 240);
Serial.println("IR - MOTOR ESQ. - FRENTE");
pisca();
break;
}
case 1086275775:{ // CHANEL +
analogWrite(MOTOR_D, 80);
Serial.println("IR - MOTOR DIR. - FRENTE");
pisca();
break;
}
case 1086267615:{ // EQUALIZADOR
analogWrite(MOTOR_E, 100);
analogWrite(MOTOR_D, 240);
Serial.println("IR - TRAS");
pisca();
break;
}
case 1086300255:{ // VOLUME -
analogWrite(MOTOR_E, 100);
Serial.println("IR - MOTOR ESQ. - TRAS");
pisca();
break;
}
case 1086283935:{ // VOUME +
analogWrite(MOTOR_D, 240);
Serial.println("IR - MOTOR DIR. - TRAS");
pisca();
break;
}
case 1086296175:{ // PREVIOUS
analogWrite(MOTOR_D, 80);
analogWrite(MOTOR_E, 95);
Serial.println("IR - GIRO ANT. HORARIO");
pisca();
break;
}
case 1086279855:{ // NEXT
analogWrite(MOTOR_D, 240);
analogWrite(MOTOR_E, 240);
Serial.println("IR - GIRO HORARIO");
pisca();
break;
}
case 1086263535:{ // NUMERO 0
analogWrite(MOTOR_E, 0);
analogWrite(MOTOR_D, 0);
Serial.println("IR - PARADO");
pisca();
break;
}
case 1086271695:{ // NUMERO 1
SERVO_X.write(90);
delay(5);
Serial.println("IR - LEVANTANDO A GARRA");
pisca();
break;
}
case 1086304335:{ // NUMERO 2
SERVO_GE.write(65);
SERVO_GD.write(10);
delay(5);
Serial.println("IR - ABRINDO A GARRA");
pisca();
break;
}
case 1086288015:{ // NUMERO 3
SERVO_GE.write(5);
SERVO_GD.write(70);
delay(5);
Serial.println("IR - FECHANDO A GARRA");
pisca();
break;
}
case 1086261495:{ // NUMERO 4
SERVO_X.write(30);
delay(5);
Serial.println("IR - BAIXANDO A GARRA");
pisca();
break;
}
case 1086294135:{ // NUMERO 5
pisca();
digitalWrite(LUZ, HIGH);
Serial.println("IR - LUZ - LIGADA");
pisca();
break;
}
case 1086277815:{ // NUMERO 6
digitalWrite(LUZ, LOW);
Serial.println("IR - LUZ - DESLIGADA");
pisca();
break;
}
case 1086269655:{pisca();} // NUMERO 7
case 1086302295:{pisca();} // NUMERO 8
case 1086285975:{pisca();} // NUMERO 9
case 1086265575:{pisca();} // PICK SONG
case 1086281895:{pisca();} // CHANEL SET
}
delay(100);
irrecv.resume();
}
}
No codigo dele as funções IRrecv irrecv(receiver); decode_results results; copilam sem problema, mas no meu não =(
Sei que parece um tanto quanto preguiça da minha parte, mas se alguém pode se modificar o código para o jeito que tentei agradeceria muito, peço isso não por preguiça mas sim por esta ficando louco tentando descobri onde esta o erro :~