Realice el siguiente programa pero me sale error con la placa de arduino uno. Me gustaría que me ayudaran para saber que error o cuales errores estoy cometiendo. Gracias.
#include <SoftwareSerial.h>
#include <Servo.h>
#include "NewPing.h"
//#include <boarddefs.h>
#include <IRremote.h>
#include <IRremoteInt.h>
//#include <ir_Lego_PF_BitStreamEncoder.h>
//#include<stdlib.h>
#define SONAR_SERVO_PIN 4
#define TRIGGER_PIN A0
#define ECHO_PIN A1
#define MAX_DISTANCE 1000
NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE);
Servo myServo;
const int enA = 11;
const int in1 = 9;
const int in2 = 8;
const int enB = 5;
const int in3 = 7;
const int in4 = 6;
const int receptor = 3;
const int triggerDistance = 30;
unsigned int time;
int distance;
int fDistance;
int lDistance;
int rDistance;
IRrecv irrecv(receptor);
decode_results codigo;
void setup()
{
Serial.begin(9600);
irrecv.enableIRIn();
pinMode (TRIGGER_PIN, OUTPUT);
pinMode (ECHO_PIN, INPUT);
myServo.attach(SONAR_SERVO_PIN);
pinMode(enA, OUTPUT);
pinMode(enB, OUTPUT);
pinMode(in1, OUTPUT);
pinMode(in2, OUTPUT);
pinMode(in3, OUTPUT);
pinMode(in4, OUTPUT);
}
void loop()
{
if (irrecv.decode(&codigo))
{
Serial.println(codigo.value, HEX);
if (codigo.value==0xFFB04F)
{
scan();
fDistance = distance;
if(fDistance < triggerDistance){
moveBackwards(127);
delay(1000);
moveRight(80);
delay(300);
moveStop();
scan();
rDistance = distance;
moveLeft(80);
delay(300);
moveStop();
scan();
lDistance = distance;
if(lDistance < rDistance){
moveRight(80);
delay(300);
moveForward(127);
}
else{
moveForward(127);
}
}
else{
moveForward(127);
}
}
if (codigo.value==0xFF6897)
{
moveStop();
}
if (codigo.value==0xFF18E7)
{
moveForward(127);
delay(1000);
}
if (codigo.value==0xFF52AD)
{
moveBackwards(127);
delay(1000);
}
if (codigo.value==0xFF5AA5)
{
moveRight(127);
delay(1000);
}
if (codigo.value==0xFF10EF)
{
moveLeft(127);
delay(1000);
}
delay(500);
irrecv.resume();
}
}
void scan()
{
int deg = 90;
myServo.write(deg);
delay(10);
digitalWrite (TRIGGER_PIN, LOW);
delayMicroseconds(2);
digitalWrite (TRIGGER_PIN, HIGH);
delayMicroseconds(10);
digitalWrite (TRIGGER_PIN, LOW);
time=pulseIn(ECHO_PIN, HIGH);
distance= time/58;
//delay(30);
}
void moveForward(int speed)
{
// turn on motor A
digitalWrite(in1, HIGH);
digitalWrite(in2, LOW);
// turn on motor B
digitalWrite(in3, HIGH);
digitalWrite(in4, LOW);
analogWrite(enA, speed);
analogWrite(enB, speed);
}
//Subrutina para mover atras
void moveBackwards(int speed)
{
// turn on motor A
digitalWrite(in1, LOW);
digitalWrite(in2, HIGH);
// turn on motor B
digitalWrite(in3, LOW);
digitalWrite(in4, HIGH);
analogWrite(enA, speed);
analogWrite(enB, speed);
}
void moveRight(int speed)
{
int deg = 0;
myServo.write(deg);
delay(500);
deg = 90;
myServo.write(deg);
delay(500);
// turn on motor A
digitalWrite(in1, LOW);
digitalWrite(in2, HIGH);
// turn off motor B
digitalWrite(in3, HIGH);
digitalWrite(in4, LOW);
analogWrite(enA, speed);
analogWrite(enB, speed);
}
void moveLeft(int speed)
int deg = 180;
myServo.write(deg);
delay(500);
deg = 90;
myServo.write(deg);
delay(500);
// turn on motor A
digitalWrite(in1, HIGH);
digitalWrite(in2, LOW);
// turn off motor B
digitalWrite(in3, LOW);
digitalWrite(in4, HIGH);
analogWrite(enA, speed);
analogWrite(enB, speed);
}
void moveStop()
{
int deg = 90;
myServo.write(deg);
delay(200);
deg = 0;
myServo.write(deg);
delay(1000);
deg = 90;
myServo.write(deg);
delay(200);
deg = 180;
myServo.write(deg);
delay(1000);
deg = 90;
myServo.write(deg);
delay(10);
digitalWrite(in1, LOW);
digitalWrite(in2, LOW);
digitalWrite(in3, LOW);
digitalWrite(in4, LOW);
delay(200);
}