This forum uses cookies
This forum makes use of cookies to store your login information if you are registered, and your last visit if you are not. Cookies are small text documents stored on your computer; the cookies set by this forum can only be used on this website and pose no security risk. Cookies on this forum also track the specific topics you have read and when you last read them. Please confirm whether you accept or reject these cookies being set.

A cookie will be stored in your browser regardless of choice to prevent you being asked this question again. You will be able to change your cookie settings at any time using the link in the footer.

  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
errores al compilar el sketch
#1
buenos dias,
estoy intentando hacer un programilla con arduino y a la hora de compilar me da unos cuantos errores.

adjunto código a ver si alguien me puede echar una mano.
se trata de recibir datos por el puerto serie, que son enviados a través de una app, una vez recibidos actualiza la velocidad de unos motores y unos servos.

adjunto código:

// simulación roboping con sliders v1_1
 # include <Servo.h>
 # include <SoftwareSerial.h> // libreria para poder utilzar otros pins de comunicación
 

 
SoftwareSerial BT(7, 8); // RX, TX
 int motor1 =3;    //pin motor inferior
 int motor2 =5;    //pin motor superior izquierda
 int motor3 =6;    //pin motor superior derecha
 int motor_elevador =11;    //pin motor elevador
 
 Servo servo_h;      // crea el objeto servo horizontal
 Servo servo_v;      // crea el objeto servo vertical
 
 int pos_horizontal = 0; //posición inicial del servo horizontal
 int pos_vertical = 0; //posición inicial del servo vertical

void setup()
 { 
  BT.begin(9600);  // velocidad del puerto del módulo bluetooth
  
  pinMode (motor1,OUTPUT); // declaramos  los motores como salidas
  pinMode (motor2,OUTPUT); // declaramos los motores como salidas
  pinMode (motor3,OUTPUT); // declaramos  los motores como salidas
  pinMode (motor_elevador,OUTPUT); // declaramos  los motores como salidas
  
  servo_h.attach (9); // vincula el servo horizontal al pin 9
  servo_v.attach (10); // vincula el servo vertical al pin 9
  
 }

void loop()
 { 
 // cuando haya datos disponibles
 while (BT.available () > 0 )
 {
 int valor_servo_h = BT.parseInt();  //leemos el primer valor entero (servo horizontal) y lo almacenamos en la variable
 int valor_servo_v = BT.parseInt();  //leemos el segundo valor entero (servo vertical) y lo almacenamos en la variable
 int valor_motor3 = BT.parseInt();   //leemos el tercer valor entero (motor superior derecha) y lo almacenamos en la variable
 int valor_motor2 = BT.parseInt();   //leemos el cuarto valor entero (motor superior izquierda) y lo almacenamos en la variable
 int valor_motor1 = BT.parseInt();   //leemos el quinto valor entero (motor inferior) y lo almacenamos en la variable
 int valor_m_elevador = BT.parseInt();  //leemos el último valor entero (motor elevador) y lo almacenamos en la variable
 
 // cuando lea el carácter fin de línea ('\n') quiere de decir que ha finalizado el envío de los 6 valores
 if (BT.read() =='\n')
 { 
 //enviamos los valores recibidos de los sliders a los pines de los motores y servos 
 analogwrite (servo_h,valor_servo_h);
 analogwrite (servo_v,valor_servo_v);
 analogwrite (motor3,valor_motor3);
 analogwrite (motor2,valor_motor2);
 analogwrite (motor1,valor_motor1);
 analogwrite (motor_elevador,valor_m_elevador);
 }
 }
 delay (100);
 
 }
  Responder
#2
Hola, prueba con esto que pongo más abajo, para próximas veces, incluye también qué errores te aparecen


He hecho varios cambios:

analogwrite => analogWrite (la W mayúscula, si no, me fallaba)
Luego, analogWrite necesita un pin, le estabas pasando un objeto tipo "servo", así que he creado dos nuevas variables servo_h_pin y servo_v_pin para poder pasárselas e inicializar los servos correctamente.

Con estos cambios , el programa compila, pero no lo he llegado a ejecutar


Código:
// simulación roboping con sliders v1_1
# include <Servo.h>
# include <SoftwareSerial.h> // libreria para poder utilzar otros pins de comunicación



SoftwareSerial BT(7, 8); // RX, TX
int motor1 =3;    //pin motor inferior
int motor2 =5;    //pin motor superior izquierda
int motor3 =6;    //pin motor superior derecha
int motor_elevador =11;    //pin motor elevador


///// HE AÑADIDO ESTAS DOS LINEAS
int servo_h_pin = 9;
int servo_v_pin = 10;

Servo servo_h;      // crea el objeto servo horizontal
Servo servo_v;      // crea el objeto servo vertical

int pos_horizontal = 0; //posición inicial del servo horizontal
int pos_vertical = 0; //posición inicial del servo vertical

void setup()
{
  BT.begin(9600);  // velocidad del puerto del módulo bluetooth
  
  pinMode (motor1,OUTPUT); // declaramos  los motores como salidas
  pinMode (motor2,OUTPUT); // declaramos los motores como salidas
  pinMode (motor3,OUTPUT); // declaramos  los motores como salidas
  pinMode (motor_elevador,OUTPUT); // declaramos  los motores como salidas
  


///////// HE CAMBIADO EL PIN POR LA VARIABLE
  servo_h.attach(servo_h_pin); // vincula el servo horizontal al pin 9
  servo_v.attach(servo_v_pin); // vincula el servo vertical al pin 9
  
}

void loop()
{
// cuando haya datos disponibles
while (BT.available () > 0 )
{
int valor_servo_h = BT.parseInt();  //leemos el primer valor entero (servo horizontal) y lo almacenamos en la variable
int valor_servo_v = BT.parseInt();  //leemos el segundo valor entero (servo vertical) y lo almacenamos en la variable
int valor_motor3 = BT.parseInt();   //leemos el tercer valor entero (motor superior derecha) y lo almacenamos en la variable
int valor_motor2 = BT.parseInt();   //leemos el cuarto valor entero (motor superior izquierda) y lo almacenamos en la variable
int valor_motor1 = BT.parseInt();   //leemos el quinto valor entero (motor inferior) y lo almacenamos en la variable
int valor_m_elevador = BT.parseInt();  //leemos el último valor entero (motor elevador) y lo almacenamos en la variable

// cuando lea el carácter fin de línea ('\n') quiere de decir que ha finalizado el envío de los 6 valores
if (BT.read() =='\n')
{
//enviamos los valores recibidos de los sliders a los pines de los motores y servos


////////// SERVO_H ERA UN "SERVO", PERO ANALOGWRITE NECESITA UN "PIN", CAMBIADAS DOS LINEAS AQUI
analogWrite(servo_h_pin,valor_servo_h);
analogWrite(servo_v_pin,valor_servo_v);


analogWrite(motor3,valor_motor3);
analogWrite(motor2,valor_motor2);
analogWrite(motor1,valor_motor1);
analogWrite(motor_elevador,valor_m_elevador);
}
}
delay (100);

}
  Responder
#3
Ojo, los servo no funcionan con un analogWrite directo... el analogWrite lo que genera es una frecuencia pwm continua. Un servo necesita un pulso de entre 1ms y 2ms (dependiendo del modelo cambia) aproximadamente cada 20ms para saber su posición. Esto es de lo que se encarga la librería de servo.h y lo que logras declarando el objeto servo.

Esto es incorrecto:
Código:
////////// SERVO_H ERA UN "SERVO", PERO ANALOGWRITE NECESITA UN "PIN", CAMBIADAS DOS LINEAS AQUI
analogWrite(servo_h_pin,valor_servo_h);
analogWrite(servo_v_pin,valor_servo_v);


Esto seria lo adecuado:

Código:
servo_h.write(valor_servo_h);
servo_v.write(valor_servo_v);

El pin del servo ya lo configuraste al inicializar el objeto servo_h y servo_v, cuando utilizas el .write el objeto ya se encarga de enviarle la posición mandando ese pequeño pulso a intervalos regulares para que se mantenga la posición.
  Responder
#4
gracias por la ayuda, al final compila bien ahora falta probarlo.

he hecho las modificaciones que habeís comentado y me continuaba dando errores.

me ha pasado una cosa muy rara, me daba errores como si no estuviese declarada la libreria servo ni la libreria softwareSerial, el programa lo hice en el bloc de notas, porque no tenia un ordenador con el IDE de arduino.
al final desde el IDE de arduino he importado estas dos librerias y ha compilado correctamente.
  Responder


Posibles temas similares…
Tema Autor Respuestas Vistas Último mensaje
  error al compilar el código homer32 4 1,984 23-09-2019, 01:29 PM
Último mensaje: homer32
  CONSULTA error al compilar amb2000 4 2,092 05-07-2019, 01:46 PM
Último mensaje: Iván
  error compilar skecth homer32 5 6,646 30-08-2015, 04:07 PM
Último mensaje: homer32
  (CERRADO) sketch arduino pipemonotoya1999 2 1,771 23-06-2015, 03:16 PM
Último mensaje: ebludt
  Problemas para cargar el sketch Electromecánico 5 20,719 09-04-2015, 02:59 PM
Último mensaje: homer32