Go Down

Topic: variable or field 'name' declared void (Read 1 time) previous topic - next topic

Nixon123

Jan 13, 2013, 06:07 am Last Edit: Jan 13, 2013, 06:09 am by Nixon123 Reason: 1
Hi folks, a have a nasty problem, i can't get this solved i constantly get an the message that my function funcOnOf is declared void. I tried to include some code that receives osc messages i got working with an arduino ethernet on an anarduino uno with a redfly shield where i could get a connection with the wifi router an send the output of a pololu MinIMU-9 v.2.


i think it has something to do with the callback function    server.addCallback("/Eth_ArdOSC/toggle2", &funcOnOff); in initialize (). I also read that the arduino ide has some hidden problems in certain situations with pointers... dunno

MinIMU9AHRS:46: error: variable or field 'funcOnOf' declared void
MinIMU9AHRS:46: error: 'OSCMessage' was not declared in this scope
MinIMU9AHRS:46: error: '_mes' was not declared in this scope
MinIMU9AHRS:131: error: redefinition of 'OSCServer server'
MinIMU9AHRS:112: error: 'OSCServer server' previously declared here
MinIMU9AHRS.ino: In function 'void initialize()':
MinIMU9AHRS:290: error: 'funcOnOff' was not declared in this scope

some weird thing is i get this error in line 46 where usally is some commented text of the pololu example....

Code: [Select]


// Uncomment the below line to use this axis definition:
  // X axis pointing forward
  // Y axis pointing to the right
  // and Z axis pointing down.
// Positive pitch : nose up
// Positive roll : right wing down
// Positive yaw : clockwise
int SENSOR_SIGN[9] = {1,1,1,-1,-1,-1,1,1,1}; //Correct directions x,y,z - gyro, accelerometer, magnetometer
// Uncomment the below line to use this axis definition:
  // X axis pointing forward
  // Y axis pointing to the left
  // and Z axis pointing up.
// Positive pitch : nose down
// Positive roll : right wing down
// Positive yaw : counterclockwise

// tested with Arduino Uno with ATmega328 and Arduino Duemilanove with ATMega168

#include <Wire.h>

#include <RedFly.h> //wifi shield watterod
#include <ArdOSCW.h> //ArdOSC Library had to rename

//defines 1mbit
#define WIFISPEED 115200
#define WIFIPOWER LOW_POWER_1M   //LOW_POWER_1M oder MED_POWER_1M


// LSM303 accelerometer: 8 g sensitivity
// 3.8 mg/digit; 1 g = 256
#define GRAVITY 256  //this equivalent to 1G in the raw data coming from the accelerometer

#define ToRad(x) ((x)*0.01745329252)  // *pi/180
#define ToDeg(x) ((x)*57.2957795131)  // *180/pi

// L3G4200D gyro: 2000 dps full scale
// 70 mdps/digit; 1 dps = 0.07
#define Gyro_Gain_X 0.07 //X axis Gyro gain
#define Gyro_Gain_Y 0.07 //Y axis Gyro gain
#define Gyro_Gain_Z 0.07 //Z axis Gyro gain
#define Gyro_Scaled_X(x) ((x)*ToRad(Gyro_Gain_X)) //Return the scaled ADC raw data of the gyro in radians for second
#define Gyro_Scaled_Y(x) ((x)*ToRad(Gyro_Gain_Y)) //Return the scaled ADC raw data of the gyro in radians for second
#define Gyro_Scaled_Z(x) ((x)*ToRad(Gyro_Gain_Z)) //Return the scaled ADC raw data of the gyro in radians for second

// LSM303 magnetometer calibration constants; use the Calibrate example from
// the Pololu LSM303 library to find the right values for your board
#define M_X_MIN -421
#define M_Y_MIN -639
#define M_Z_MIN -238
#define M_X_MAX 424
#define M_Y_MAX 295
#define M_Z_MAX 472

#define Kp_ROLLPITCH 0.02
#define Ki_ROLLPITCH 0.00002
#define Kp_YAW 1.2
#define Ki_YAW 0.00002

/*For debugging purposes*/
//OUTPUTMODE=1 will print the corrected data,
//OUTPUTMODE=0 will print uncorrected data of the gyros (with drift)
#define OUTPUTMODE 1

//#define PRINT_DCM 0     //Will print the whole direction cosine matrix
//#define PRINT_ANALOGS 0 //Will print the analog raw data
#define PRINT_EULER 1   //Will print the Euler angles Roll, Pitch and Yaw

#define STATUS_LED 13
//
//osc send

byte myIp[] = { 192, 168, 178, 130 };
uint16_t serverPort = 10000;
uint16_t destPort = 12000;
byte destIp[] = { 192, 168, 178, 76 };

OSCServer server;
OSCClient client;
 
//osc variables
float oscRoll;
float oscPitch;
float oscYaw;

int t = 100;

//visual rgb led
int ledGreen=6;
int ledBlue=5;
int ledRed=3;
int val;

//tracker

float G_Dt=0.02;    // Integration time (DCM algorithm)  We will run the integration loop at 50Hz if possible

long timer=0;   //general purpuse timer
long timer_old;
long timer24=0; //Second timer used to print values
int AN[6]; //array that stores the gyro and accelerometer data
int AN_OFFSET[6]={0,0,0,0,0,0}; //Array that stores the Offset of the sensors

int gyro_x;
int gyro_y;
int gyro_z;
int accel_x;
int accel_y;
int accel_z;
int magnetom_x;
int magnetom_y;
int magnetom_z;
float c_magnetom_x;
float c_magnetom_y;
float c_magnetom_z;
float MAG_Heading;

float Accel_Vector[3]= {0,0,0}; //Store the acceleration in a vector
float Gyro_Vector[3]= {0,0,0};//Store the gyros turn rate in a vector
float Omega_Vector[3]= {0,0,0}; //Corrected Gyro_Vector data
float Omega_P[3]= {0,0,0};//Omega Proportional correction
float Omega_I[3]= {0,0,0};//Omega Integrator
float Omega[3]= {0,0,0};

// Euler angles
float roll;
float pitch;
float yaw;

float errorRollPitch[3]= {0,0,0};
float errorYaw[3]= {0,0,0};

unsigned int counter=0;
byte gyro_sat=0;

float DCM_Matrix[3][3]= {
 {
   1,0,0  }
 ,{
   0,1,0  }
 ,{
   0,0,1  }
};
float Update_Matrix[3][3]={{0,1,2},{3,4,5},{6,7,8}}; //Gyros here


float Temporary_Matrix[3][3]={
 {
   0,0,0  }
 ,{
   0,0,0  }
 ,{
   0,0,0  }
};


//functions debugging redfly

void debugout(char *s)
{
#if defined(__AVR_ATmega32U4__)
 Serial.print(s);
#else
 RedFly.disable();
 Serial.print(s);
 RedFly.enable();
#endif
}

void debugoutln(char *s)
{
#if defined(__AVR_ATmega32U4__)
 Serial.println(s);
#else
 RedFly.disable();
 Serial.println(s);
 RedFly.enable();
#endif
}






void initialize()
{
//watterod redshield
  uint8_t ret;


 //init the WiFi module on the shield
 // ret = RedFly.init(115200); //br=9600|19200|38400|57600|115200|200000|230400, pwr=LOW_POWER|MED_POWER|HIGH_POWER
 // ret = RedFly.init(pwr) //9600 baud, pwr=LOW_POWER|MED_POWER|HIGH_POWER
 // ret = RedFly.init() //9600 baud, HIGH_POWER
 
 ret = RedFly.init(WIFISPEED,WIFIPOWER);
 if(ret)
 {
  debugoutln("INIT ERR"); //there are problems with the communication between the Arduino and the RedFly
   for(;;); //do nothing forevermore
 }
 else
 {
   //scan for wireless networks (must be run before join command)
   for(int y=0; y<10; y++)
  {
   RedFly.scan();
   ret = RedFly.join("Lacuna", "1JungerWeinUnd20AlteWeiber", INFRASTRUCTURE);
   if(ret)
   {
     debugoutln("JOIN ERR");
     y++;
     delay(1500);
     
   }
   
   else
   {
     if (y==10){
       for(;;); //do nothing forevermore
       }
     
     else{  
     y=10;
     debugoutln("CONNECTED!");
       //osc receive

     
     
     //wieder normal
     ret = RedFly.begin(myIp);
     if(ret)
     {
       RedFly.disconnect();
       for(;;); //do nothing forevermore
     }
     else
     {
     //start server
      server.begin(serverPort);
     
      //set callback function
      server.addCallback("/Eth_ArdOSC/toggle2", &funcOnOff);
     
        pinMode(ledPin, OUTPUT);  
       pinMode(ledRed, OUTPUT);
       pinMode(ledBlue, OUTPUT);
     pinMode(ledGreen, OUTPUT);
     }
     
     
    }
   }
  }
 }
}  


void setup()
{
 //wifi connection and osc
 initialize();

 //ht
 //delay(1500);
 Serial.begin(115200);
 pinMode (STATUS_LED,OUTPUT);  // Status LED

 
 I2C_Init();

 Serial.println("Pololu MinIMU-9 + Arduino AHRS");

 digitalWrite(STATUS_LED,LOW);
 delay(1500);

 Accel_Init();
 Compass_Init();
 Gyro_Init();
 
 delay(20);
 
... //reading stuff of polulu hat to delete some line for the post


}

void loop() //Main Loop
{

 .... //other stuff i had to delete for post
 
 if(server.aviableCheck()>0){

 
   }    


}
}
 
void funcOnOf(OSCMessage *_mes)
{
 
    oscRoll=ToDeg(roll);
  oscPitch=ToDeg(pitch);
  oscYaw=ToDeg(yaw);
   
 int value = _mes->getArgInt32(0);
 Serial.print("Value = : ");
 Serial.println(value);
 
 //analogWrite(ledRed,value/2);
 analogWrite(ledBlue,value/4);
 
   //create new osc message
 OSCMessage newMes;
 
 //set destination ip address & port no
 
 newMes.setAddress(destIp,destPort);
 newMes.beginMessage("/head/direction");
   newMes.addArgFloat(oscRoll);
 newMes.addArgFloat(oscPitch);
 newMes.addArgFloat(oscYaw);
 
 //send osc message
 server.stop(); //stop server while sending
 client.send(&newMes);
 server.begin(serverPort); //start server
}


thanks guys

Coding Badly

Code: [Select]
MinIMU9AHRS:46: error: variable or field 'funcOnOf' declared void
MinIMU9AHRS:46: error: 'OSCMessage' was not declared in this scope
MinIMU9AHRS:46: error: '_mes' was not declared in this scope
MinIMU9AHRS:131: error: redefinition of 'OSCServer server'
MinIMU9AHRS:112: error: 'OSCServer server' previously declared here
MinIMU9AHRS.ino: In function 'void initialize()':
MinIMU9AHRS:290: error: 'funcOnOff' was not declared in this scope


What are the error messages above those?

Nixon123

#2
Jan 13, 2013, 06:13 am Last Edit: Jan 13, 2013, 06:16 am by Nixon123 Reason: 1
none  :~ these are the only ones, just black space

Coding Badly


Can't say for certain but I suspect the chances of receiving help will be greatly increased if you indicate where you obtained these...

Code: [Select]
#include <RedFly.h> //wifi shield watterod

#include <ArdOSCW.h> //ArdOSC Library had to rename


Nixon123

RedFly is the library for the watterord wifly shield

https://github.com/watterott/RedFly-Shield

here is the link to the library and test examples https://github.com/watterott/RedFly-Shield/downloads

i had rename the ardosc because i have an other version in my library, but even if i use the original renamed version there is no difference.

i had the wifly shield running so the library seems to work fine, i think it's more a general problem

Nixon123

had a typo in the function name, but makes no difference

Coding Badly


The position of this...

Code: [Select]
int SENSOR_SIGN[9] = {1,1,1,-1,-1,-1,1,1,1}; //Correct directions x,y,z - gyro, accelerometer, magnetometer

...interferes with automatic prototype generation.  Move it below the includes or add this towards the top of your sketch...

Code: [Select]
void funcOnOff(OSCMessage *_mes);

Nixon123

works, you're the man :)


thank you very much !

Go Up
 


Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

Arduino
via Egeo 16
Torino, 10131
Italy