Important changes to forums and questions
All forums and questions are now archived. To start a new conversation or read the latest updates go to forums.mbed.com.
7 years, 1 month ago.
Error with function pointer!
Hi, I'm doing a couple of functions. The first is "move" in which I want to move a servo and the second function is "move_leg" in which I want to move several servos to perform the movement of a leg of a hexapod (one leg has 3 servos). Compiling it gives me an error in the first call of the move switch, which says the following: "No suitable conversion function from" SoftPWM "to" SoftPWM * "exits". Could the solution include "&"? I refer to this: mueve (& pata1 [0]);
I do not know if it would be fine.
The code is the following:
SoftPWM pata1[] = {(PB_8),(PB_9),(PB_7)};
void mueve(SoftPWM pata[]){ int i; int pata_si = 560; pata[i].pulsewidth_us(pata_si); }
void move_leg(char pos){ switch(pos){ case 'A': Avanza mueve(pata1[0]); mueve(pata1[1]); mueve(pata1[2]); break; .........................................
}
1 Answer
7 years, 1 month ago.
Hello Jose,
You can try the following code:
SoftPWM pata1[] = { SoftPWM(PB_8), SoftPWM(PB_9), SoftPWM(PB_7) }; // Call the constructor for each element to create it!
void mueve(SoftPWM* softPWM) // Takes a pointer to a SoftPWM object (e.g. pointer to an element of pata1 array)
{
int pata_si = 560;
softPWM->pulsewidth_us(pata_si);
}
void move_leg(char pos)
{
switch (pos) {
case 'A':
mueve(&pata1[0]); // Pass the address of the pata1 array element (i.e. pointer to a SoftPWM object)
mueve(&pata1[1]);
mueve(&pata1[2]);
break;
//...
}
ADVISE: To have a more readable code published here (on mbed pages) try to mark it up as below (with <<code>> and <</code>> tags, each on separate line at the begin and end of your code)
<<code>> text of your code <</code>>