Go Down

Topic: arduino error exit status 1 'comparar' was not declared in this scope (Read 260 times) previous topic - next topic

andress

Aug 11, 2017, 06:44 am Last Edit: Aug 11, 2017, 09:53 pm by surbyte Reason: Errores o códigos con etiqueta de códigos </>
hola buenas noches necesito ayuda con este  error  alli les dejo mi programación
Code: [Select]
exit status 1
'comparar' was not declared in this scope



Code: [Select]
// pin del reseptor 11
#include <VirtualWire.h>
byte message [VW_MAX_MESSAGE_LEN];
byte messageLength = VW_MAX_MESSAGE_LEN ;
int boton_a = 8;
void setup (){
pinMode(boton_a,OUTPUT);
Serial.begin(9600);
vw_setup(2000);
vw_rx_start();
}
void loop () {
if ( vw_get_message(message, &messageLength)){
 if (comparar("000")==0){
digitalRead (boton_a, HIGH);}  
}
char comparar(char  *cadena){
for(int i = 0; i<messagelength; i++)
if (message[i] ! = cadena [i])
{
return 1;
}
{
return 0;
}
}  
}

Juraj

missing }

Code: [Select]

void loop() {
  if (vw_get_message(message, &messageLength)) {
    if (comparar("000") == 0) {
      digitalRead(boton_a, HIGH);
    }
  }
}

rodripelto

Hola,

Al loop le falta una } para cerrarlo.

El segundo returt del método comparar esta fuera del método.
No puedes tener instrucciones sueltas.
Si alguna respuesta ha solucionado tu problema, da las gracias marcándola como solucionada.

andress

gracias ya corregir lo que me dijeron y me sigue saliendo el mismo error que hago   

rodripelto

Hola,

La verdad es que tú código esta plagado de errores.
Por otro lado, por favor pega el código nuevo en la nueva respuesta que pongas y no edites el del primer post, ya que aparte de generar confusión no se si has solucionado correctamente lo sugerido.
Para mi que en el loop sigue faltando una llave de cierre}

Luego tú declaras.
Code: [Select]
byte messageLength = VW_MAX_MESSAGE_LEN ; con mayuscula en Length pero luego usas.
Code: [Select]
for(int i = 0; i<messagelength; i++)  con minuscula en Length, eso es un error este lenguaje es sensible a las mayusculas y minusculas int Nombre es diferente a int nombre, las tomaria como dos variables diferentes.
Code: [Select]
f (message ! = cadena )
{
return 1;
}
{
return 0;
}

le falta el else
Code: [Select]
if (message ! = cadena )
{
return 1;
}
else
{
return 0;
}

Code: [Select]
for(int i = 0; i<messagelength; i++)
le falta la llave de apertura
El metodo char comparar(char  *cadena) espera recibir un char, tú le envias comparar("000") que es una cadena, personalmente yo creo que esta mal, quizad funcione pero no es correcto.
Corrige y postea el código nuevo y seguimos repasanda.
Indexa bien el código y sera mas facil ver si estan todas las llaves.
Usa </> arriba a la izquierda para incluir el código entre etiquetas code para que se vea mejor.
Si alguna respuesta ha solucionado tu problema, da las gracias marcándola como solucionada.

surbyte

andress para comenzar bienvenido al foro Arduino.
Por esta vez, yo he editado tu código porque ya habías respondido pero no le prestaste atención a mi mensaje privado.

Dos consejos:
1. Intenta ser ordenado en tus códigos. Un código sin identación, si dejar espacios puede ser legible para ti pero si vienes a un foro y pides ayuda debes tratar de que los demas te entendamos.
Si tu te hubieras tomado el tiempo de ir ordenando cada paso, verías muchos de los errores del código que has presentado.
2. Lee las normas del foro. Códigos y errores van con etiquetas </>

Aca te dejo una guia


Lee las
Normas del foro
Luego ve a More (abajo a la derecha), click, luego Modify y estas en modo EDICION.
Si tienes que editar un código -> Selecciona todo el código y click en </> arriba del emoticon.
Si tienes que editar un enlace -> Selecciona el enlace. Copialo al portapapeles. Click en el eslabón (ver abajo) y sigue los pasos que habras visto al leer las normas.  



andress

gracias y disculpen por mis errores.
todavía no e podido solucionar el problema y ya hice lo que me dijeron que podrá ser. lo que deseo realizar es un carro que lo pueda mover atra vez de radio frecuencia 433mhz con un  Joystick Shield que me recomiendan hacer.

rodripelto

Hola,
Si quieres que te sigamos ayudando por favor pon el código que tienes actualmente para poder revisarlo.
Si alguna respuesta ha solucionado tu problema, da las gracias marcándola como solucionada.

andress

lo que debería hacer es que el joystick shield tiene 4 botones y el joystick con los botones debería prender leds y con el joystick manejar el carro.


miren esta es la programación del emisor del carro con el joystick shield


Code: [Select]

#include <VirtualWire.h>

int boton_a = 2 ;
int boton_b = 3 ;
int boton_c = 4 ;
int boton_d = 5  ;


const byte eje_x = 0 ;
const byte eje_y = 1 ;



void setup () {
Serial.begin(9600);
vw_setup(2000);
pinMode (boton_a,INPUT);
pinMode (boton_b,INPUT);
pinMode (boton_c,INPUT);
pinMode (boton_d,INPUT);
}
void loop (){
  int rango_x = ( analogRead (eje_x));
  int rango_y = ( analogRead (eje_y));

  if ( digitalRead(boton_a)==LOW){
    send("000");  }

else  if ( digitalRead(boton_b)==LOW){
    send("001");  }

else  if ( digitalRead(boton_c)==LOW){
    send("002");  }

    else  if ( digitalRead(boton_d)==LOW){
    send("003");  }

else  if (rango_x<=50){
    send("007");  }

else  if (rango_x>=900){
    send("008");  }

else  if (rango_y<=50){
    send("009");  }

else  if (rango_y>=900){
    send("010");  }

    else {
      send("999"); }

void send (char *message)
{
  vw_send((uint8_t *)message, strlen(message));
  vw_wait_tx();   
  serial.println(message);

   
}
  }

andress

y esta es la parte del receptor
Code: [Select]

#include <VirtualWire.h>
byte message [VW_MAX_MESSAGE_LEN];
byte messagelength = VW_MAX_MESSAGE_LEN ;
int boton_a = 8;
int boton_b = 9;
int boton_c = 10;
int boton_d = 12;


int ENA = 2 ;
int IN1 = 3 ;
int IN2 = 4 ;
int IN3 = 7 ;
int IN4 = 6 ;
int ENB = 5 ;
void setup (){
pinMode(boton_a,OUTPUT);
pinMode(boton_b,OUTPUT);
pinMode(boton_c,OUTPUT);
pinMode(boton_d,OUTPUT); 

pinMode(ENA,OUTPUT); 
pinMode(IN1,OUTPUT);
pinMode(INT2,OUTPUT);
pinMode(INT3,OUTPUT);
pinMode(INT4,OUTPUT);
pinMode(ENB,OUTPUT);
Serial.begin(9600);
vw_setup(2000);
vw_rx_start();
}
void loop () {
if ( vw_get_message(message, &messagelength)){
 if (comparar("000")==0){
digitalRead (boton_a, HIGH);} 
}


else if (comparar("001") == 0){
  digitalRead (boton_b, HIGH);}

  else if (comparar("002") == 0){
  digitalRead (boton_c, HIGH);}

  else if (comparar("003") == 0){
  digitalRead (boton_d, HIGH);}




//IZQUIERDA
else if (comparar("007") == 0){
  digitalRead (IN1, LOW);
  digitalRead (IN2, HIGH);
  digitalRead (IN3, LOW);
  digitalRead (IN4, HIGH);
  digitalRead (ENA, 500);
  digitalRead (ENB, 500);}


//DERECHA
else if (comparar("008") == 0){
  digitalRead (IN1, HIGH);
  digitalRead (IN2, LOW);
  digitalRead (IN3, HIGH);
  digitalRead (IN4, LOW);
  digitalRead (ENA, 500);
  digitalRead (ENB, 500);}


//ATRAS
else if (comparar("009") == 0){
  digitalRead (IN1, HIGH);
  digitalRead (IN2, LOW);
  digitalRead (IN3, LOW);
  digitalRead (IN4, HIGH);
  digitalRead (ENA, 500);
  digitalRead (ENB, 500);}



//ADELANTE
else if (comparar("010") == 0){
  digitalRead (IN1, LOW);
  digitalRead (IN2, HIGH);
  digitalRead (IN3, HIGH);
  digitalRead (IN4, LOW);
  digitalRead (ENA, 500);
  digitalRead (ENB, 500);}
 
 
 
//APAGADO
else if (comparar("999") == 0){
  digitalRead (IN1, HIGH);
  digitalRead (IN2, LOW);
  digitalRead (IN3, LOW);
  digitalRead (IN4, HIGH);
  digitalRead (ENA, 0);
  digitalRead (ENB, 0);
 }
char comparar(char  *cadena){
for(int i = 0; i<messagelength; i++)
if (message[i] ! = cadena [i])
{
return 1;
}
else
{
return 0;
}

}













rodripelto

Hola,
En la parte del receptor té sigue faltando un } en el loop y te sobra } en el metodo comparar.

Dentro de loop no puede ir ningun metodo, loop ya es un metodo por si solo.
Por ejemplo esto es incorrecto.
Code: [Select]
void loop ()
{
  // Programa principal
  void comparar()
  {
    //Código del metodo
  }
}

Esto es correcto.

Code: [Select]

void loop ()
{
  // Programa principal
comparar() // Llamo al metodo comparar.
}
void comparar()
{
  //Código del metodo
}


Tú declaras.
Code: [Select]
int IN1 = 3 ;
int IN2 = 4 ;
int IN3 = 7 ;
int IN4 = 6 ;
y luego usas
Code: [Select]
pinMode(INT2,OUTPUT);
pinMode(INT3,OUTPUT);
pinMode(INT4,OUTPUT);

Te sobra la T al usar la variable pinMode(IN2,OUTPUT), en las tres variables que he puesto.

digitalRead (boton_a, HIGH); Es una lectura y solo admite el argumento del numero de pin por lo que lo correcto es digitalRead (boton_a); Los tienes todos mal.
En if (message ! = cadena ) esta separado ! = no se si es error al copiar y pegar o realmente lo tienes así, si lo tienes así lo tienes que juntar o dara error al compilar !=
Si alguna respuesta ha solucionado tu problema, da las gracias marcándola como solucionada.

rodripelto

Parte del emisor,
Mismo problema de cierre de {} al loop le falta } y al metodo send le sobra}, por lo que el metodo send se encuentra dento del loop y eso es incorrecto.

  serial.println(message); del metodo send la primera S es en mayuscula.   Serial.println(message);

Creo que es todo, soluciona los problemas y vuelve a pegar el código para echarle un vistazo.
Si alguna respuesta ha solucionado tu problema, da las gracias marcándola como solucionada.

Go Up