Ir para o conteúdo
PsySc0rpi0n

Simplificar código

Mensagens Recomendadas

PsySc0rpi0n

Boas...

Escrevi um pequeno código para recriar um movimento tipo radial para usar nos conhecidos sistemas pan/tilt, que usam dois servo-motores, um para o eixo dos xx e outro para o eixo dos yy.

#include <Servo.h>

#define VSPEED 8
#define HSPEED 10
#define UP     1
#define DOWN   0

  Servo horservo;  // create servo object to control a servo
  Servo verservo;  // a maximum of eight servo objects can be created

  int verpos = 0;    // variable to store the vertical servo position
  int horpos = 0;    // variable to store the horizontal servo position
  
void setup(){
  horservo.attach(9);  // attaches the horizontal servo on pin 9 to the servo object
  verservo.attach(8);  // attaches the vertical servo on pin 9 to the servo object
  horservo.write(90);
  verservo.write(0);
  Serial.begin(9600);
}

void Print_Data(){
    Serial.print("Vert Pos: ");
    Serial.print(verpos);
    Serial.print(",");
    Serial.print("Hor Pos ");
    Serial.print(horpos);
    Serial.print('\n');  
}

void motion_1(){
  for(; horpos < 180; horpos += 2){
    horservo.write(horpos);
    if(verpos < 90){
      verservo.write(++verpos);
      delay(VSPEED);
    }
    else if (verpos > 0){
      verservo.write(--verpos);
      delay(VSPEED);
    }
    delay(HSPEED);
    Print_Data();
  }
  for(; horpos > 0; horpos -= 2){
    horservo.write(horpos);
    if(verpos < 90){
      verservo.write(--verpos);
      delay(VSPEED);
    }
    else if (verpos > 0){
      verservo.write(--verpos);
      delay(VSPEED);
    }
    delay(HSPEED);
    Print_Data();
  }
}

void motion_2(){
  for(pos = start_pos; pos != end_pos; )
  
}

void loop(){
  motion_1();
}

O código está a funcionar, não sei se está perfeito ou não, mas para já serve! No entanto, alguém com que eu estava a conversar, disse-me que o meu código podia ser simplificado e deu-me algumas pistas:

Citação

all i meant is your two loops are more or less the same thing with a parameter change.  they're both basically

for (pos = start_pos; pos != end_pos; pos += delta_to_target)  { }

where delta_to_target is +2 or -2. 

it's a pretty general observation that you probably don't need two completely separate loops. 

Estas foram as pistas! Será que me conseguem ajudar???


Kurt Cobain - Grunge misses you

Nissan GT-R - beast killer

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HappyHippyHippo

presumo que estejas a falar disto : 

void motion_1() {
  for (int dir = 1; dir != -1 && horpos <= 0; horpos += 2 * dir) {
    if (horpos >= 180) {
      dir = -1;
      continue;
    }

    horservo.write(horpos);

    if (verpos < 90)
      verservo.write(verpos += 1 * dir);
    else if (verpos > 0)
      verservo.write(--verpos);

    delay(VSPEED);
    delay(HSPEED);
    Print_Data();
  }
}

 


IRC : sim, é algo que ainda existe >> #p@p

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
PsySc0rpi0n

Vou experimentar! :)

Não deu!

Editado por PsySc0rpi0n

Kurt Cobain - Grunge misses you

Nissan GT-R - beast killer

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HappyHippyHippo
11 hours ago, seuqram said:

dir != -1 && horpos <= 0;

para apenas:


horpos > 0

 

 

não sabes o valor inicial de horpos

-----

@PsySc0rpi0n altera só a condição de paragem do ciclo for para : 

dir != -1 && horpos > 0

 


IRC : sim, é algo que ainda existe >> #p@p

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
seuqram
Citação

não sabes o valor inicial de horpos

Pois, não pensei nessa hipotese... com a alternativa que voce deu,  "&&", têm o mesmo efeito e aliás, se dir for igual a -1, não executa a segunda fase do loop. Dessa maneira, corrige-o:

dir || horpos > 0

Que é a maneira simplificada disto:

!(dir != -1 && horpos <= 0)

que foi o que voce pensou no inicio, mas na forma de excessão. De resto, acho que não há razão para o codigo não funcionar...

Editado por seuqram

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
PsySc0rpi0n

Está melhor mas ainda não está correcto.

O que está a acontecer é o seguinte:

 
Citação

Vert Pos: 0,Hor Pos 90
Vert Pos: 1,Hor Pos 92
Vert Pos: 2,Hor Pos 94
Vert Pos: 3,Hor Pos 96
Vert Pos: 4,Hor Pos 98
Vert Pos: 5,Hor Pos 100
Vert Pos: 6,Hor Pos 102
Vert Pos: 7,Hor Pos 104
Vert Pos: 8,Hor Pos 106
Vert Pos: 9,Hor Pos 108
Vert Pos: 10,Hor Pos 110
Vert Pos: 11,Hor Pos 112
Vert Pos: 12,Hor Pos 114
Vert Pos: 13,Hor Pos 116
Vert Pos: 14,Hor Pos 118
Vert Pos: 15,Hor Pos 120
Vert Pos: 16,Hor Pos 122
Vert Pos: 17,Hor Pos 124
Vert Pos: 18,Hor Pos 126
Vert Pos: 19,Hor Pos 128
Vert Pos: 20,Hor Pos 130
Vert Pos: 21,Hor Pos 132
Vert Pos: 22,Hor Pos 134
Vert Pos: 23,Hor Pos 136
Vert Pos: 24,Hor Pos 138
Vert Pos: 25,Hor Pos 140
Vert Pos: 26,Hor Pos 142
Vert Pos: 27,Hor Pos 144
Vert Pos: 28,Hor Pos 146
Vert Pos: 29,Hor Pos 148
Vert Pos: 30,Hor Pos 150
Vert Pos: 31,Hor Pos 152
Vert Pos: 32,Hor Pos 154
Vert Pos: 33,Hor Pos 156
Vert Pos: 34,Hor Pos 158
Vert Pos: 35,Hor Pos 160
Vert Pos: 36,Hor Pos 162
Vert Pos: 37,Hor Pos 164
Vert Pos: 38,Hor Pos 166
Vert Pos: 39,Hor Pos 168
Vert Pos: 40,Hor Pos 170
Vert Pos: 41,Hor Pos 172
Vert Pos: 42,Hor Pos 174
Vert Pos: 43,Hor Pos 176
Vert Pos: 44,Hor Pos 178
Vert Pos: 45,Hor Pos 180
Vert Pos: 45,Hor Pos 178
Vert Pos: 46,Hor Pos 180
Vert Pos: 46,Hor Pos 178
Vert Pos: 47,Hor Pos 180
Vert Pos: 47,Hor Pos 178
Vert Pos: 48,Hor Pos 180
Vert Pos: 48,Hor Pos 178
Vert Pos: 49,Hor Pos 180
Vert Pos: 49,Hor Pos 178
Vert Pos: 50,Hor Pos 180
Vert Pos: 50,Hor Pos 178
Vert Pos: 51,Hor Pos 180
Vert Pos: 51,Hor Pos 178
Vert Pos: 52,Hor Pos 180
Vert Pos: 52,Hor Pos 178
Vert Pos: 53,Hor Pos 180
Vert Pos: 53,Hor Pos 178
Vert Pos: 54,Hor Pos 180
Vert Pos: 54,Hor Pos 178
Vert Pos: 55,Hor Pos 180
Vert Pos: 55,Hor Pos 178
Vert Pos: 56,Hor Pos 180
Vert Pos: 56,Hor Pos 178
Vert Pos: 57,Hor Pos 180
Vert Pos: 57,Hor Pos 178
Vert Pos: 58,Hor Pos 180
Vert Pos: 58,Hor Pos 178
Vert Pos: 59,Hor Pos 180
Vert Pos: 59,Hor Pos 178
Vert Pos: 60,Hor Pos 180
Vert Pos: 60,Hor Pos 178
Vert Pos: 61,Hor Pos 180
Vert Pos: 61,Hor Pos 178
Vert Pos: 62,Hor Pos 180
Vert Pos: 62,Hor Pos 178
Vert Pos: 63,Hor Pos 180
Vert Pos: 63,Hor Pos 178
Vert Pos: 64,Hor Pos 180
Vert Pos: 64,Hor Pos 178
Vert Pos: 65,Hor Pos 180
Vert Pos: 65,Hor Pos 178
Vert Pos: 66,Hor Pos 180
Vert Pos: 66,Hor Pos 178
Vert Pos: 67,Hor Pos 180
Vert Pos: 67,Hor Pos 178
Vert Pos: 68,Hor Pos 180
Vert Pos: 68,Hor Pos 178
Vert Pos: 69,Hor Pos 180
Vert Pos: 69,Hor Pos 178
Vert Pos: 70,Hor Pos 180
Vert Pos: 70,Hor Pos 178
Vert Pos: 71,Hor Pos 180
Vert Pos: 71,Hor Pos 178
Vert Pos: 72,Hor Pos 180
Vert Pos: 72,Hor Pos 178
Vert Pos: 73,Hor Pos 180
Vert Pos: 73,Hor Pos 178
Vert Pos: 74,Hor Pos 180
Vert Pos: 74,Hor Pos 178
Vert Pos: 75,Hor Pos 180
Vert Pos: 75,Hor Pos 178
Vert Pos: 76,Hor Pos 180
Vert Pos: 76,Hor Pos 178
Vert Pos: 77,Hor Pos 180
Vert Pos: 77,Hor Pos 178
Vert Pos: 78,Hor Pos 180
Vert Pos: 78,Hor Pos 178
Vert Pos: 79,Hor Pos 180
Vert Pos: 79,Hor Pos 178
Vert Pos: 80,Hor Pos 180
Vert Pos: 80,Hor Pos 178
Vert Pos: 81,Hor Pos 180
Vert Pos: 81,Hor Pos 178
Vert Pos: 82,Hor Pos 180
Vert Pos: 82,Hor Pos 178
Vert Pos: 83,Hor Pos 180
Vert Pos: 83,Hor Pos 178
Vert Pos: 84,Hor Pos 180
Vert Pos: 84,Hor Pos 178
Vert Pos: 85,Hor Pos 180
Vert Pos: 85,Hor Pos 178
Vert Pos: 86,Hor Pos 180
Vert Pos: 86,Hor Pos 178
Vert Pos: 87,Hor Pos 180
Vert Pos: 87,Hor Pos 178
Vert Pos: 88,Hor Pos 180
Vert Pos: 88,Hor Pos 178
Vert Pos: 89,Hor Pos 180
Vert Pos: 89,Hor Pos 178
Vert Pos: 90,Hor Pos 180
Vert Pos: 90,Hor Pos 178
Vert Pos: 89,Hor Pos 180
Vert Pos: 89,Hor Pos 178
Vert Pos: 90,Hor Pos 180
Vert Pos: 90,Hor Pos 178
Vert Pos: 89,Hor Pos 180
Vert Pos: 89,Hor Pos 178
Vert Pos: 90,Hor Pos 180
Vert Pos: 90,Hor Pos 178
Vert Pos: 89,Hor Pos 180
Vert Pos: 89,Hor Pos 178
Vert Pos: 90,Hor Pos 180
Vert Pos: 90,Hor Pos 178
Vert Pos: 89,Hor Pos 180
Vert Pos: 89,Hor Pos 178
Vert Pos: 90,Hor Pos 180
Vert Pos: 90,Hor Pos 178
Vert Pos: 89,Hor Pos 180
Vert Pos: 89,Hor Pos 178
Vert Pos: 90,Hor Pos 180
Vert Pos: 90,Hor Pos 178
Vert Pos: 89,Hor Pos 180
Vert Pos: 89,Hor Pos 178
Vert Pos: 90,Hor Pos 180
Vert Pos: 90,Hor Pos 178
Vert Pos: 89,Hor Pos 180
Vert Pos: 89,Hor Pos 178
Vert Pos: 90,Hor Pos 180
Vert Pos: 90,Hor Pos 178
Vert Pos: 89,Hor Pos 180
Vert Pos: 89,Hor Pos 178
Vert Pos: 90,Hor Pos 180
Vert Pos: 90,Hor Pos 178
Vert Pos: 89,Hor Pos 180
Vert Pos: 89,Hor Pos 178
Vert Pos: 90,Hor Pos 180
Vert Pos: 90,Hor Pos 178
Vert Pos: 89,Hor Pos 180
Vert Pos: 89,Hor Pos 178
Vert Pos: 90,Hor Pos 180
Vert Pos: 90,Hor Pos 178
Vert Pos: 89,Hor Pos 180
Vert Pos: 89,Hor Pos 178
Vert Pos: 90,Hor Pos 180
Vert Pos: 90,Hor Pos 178
Vert Pos: 89,Hor Pos 180
Vert Pos: 89,Hor Pos 178
Vert Pos: 90,Hor Pos 180
Vert Pos: 90,Hor Pos 178
Vert Pos: 89,Hor Pos 180
Vert Pos: 89,Hor Pos 178
Vert Pos: 90,Hor Pos 180
Vert Pos: 90,Hor Pos 178
Vert Pos: 89,Hor Pos 180
Vert Pos: 89,Hor Pos 178
Vert Pos: 90,Hor Pos 180
Vert Pos: 90,Hor Pos 178
Vert Pos: 89,Hor Pos 180
Vert Pos: 89,Hor Pos 178

Entretanto deram-me outra solução mas que tenho que a adaptar para o meu caso e como o código já é um pouco mais complexo, ainda não me debrucei sobre ele para ver se sou capaz de o adaptar!

Spoiler

#include <Servo.h>

void setup(){
    Serial.begin(9600);
}

struct vec {int x; int y;};

vec dest;
vec pos;

void printVec(Print &p, const struct vec &c) {
    p.print(c.x); 
    p.print(' '); 
    p.print(c.y);
}

void updateDestinations() {
    dest.x = Serial.parseInt();
    dest.y = Serial.parseInt();
    unsigned long start = millis();
    while (millis() - start < 100) {
        while (Serial.read() != -1)
          ;
    }
}

int int_sgn(int n){
    if (n > 0){
      return +1;
    }
    if (n < 0){
      return -1;
    }
    return 0;
}

void loop() {
    if (Serial.available()) {
        updateDestinations();
    }

    Serial.print(F( "Dest : "));
    printVec(Serial, dest);
    Serial.print(F("|Pos  : "));
    printVec(Serial, pos );

    const bool arrived = (dest.x == pos.x && dest.y == pos.y);
    
    Serial.println(arrived ? F(" [arrived]") : F(" [traveling]"));
    delay(100);

    pos.x += int_sgn(dest.x - pos.x) * 2;
    pos.y += int_sgn(dest.y - pos.y)    ;
}

 

 


Kurt Cobain - Grunge misses you

Nissan GT-R - beast killer

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
PsySc0rpi0n

Acho que o problema está no int dir = 1 dentro do for, porque mesmo quando dir passa a -1, quando o loop volta a ser exectado, o dir volta a ser 1.


Kurt Cobain - Grunge misses you

Nissan GT-R - beast killer

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HappyHippyHippo

actualiza o horpos antes da instrução continue. O problema e que ao não actualizar o horpos esta sempre a alterar o dir.

isto de responder de telemovel e complicado


IRC : sim, é algo que ainda existe >> #p@p

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
PsySc0rpi0n
1 hour ago, HappyHippyHippo said:

actualiza o horpos antes da instrução continue. O problema e que ao não actualizar o horpos esta sempre a alterar o dir.

isto de responder de telemovel e complicado

void motion_2(){
  for (int dir = 1; dir != -1 && horpos > 0;) {
    horpos += 2 * dir;
    horservo.write(horpos);
    delay(HSPEED);
    if (horpos >= 180) {
      dir = -1;
      continue;
    }

    if (verpos < 90)
      verservo.write(verpos += 1 * dir);
    else if (verpos > 0)
      verservo.write(verpos += 1 * dir);
      
    delay(VSPEED);
    Print_Data();
  }  
}

Se te referias a isto, também não está a funcionar bem!


Kurt Cobain - Grunge misses you

Nissan GT-R - beast killer

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
seuqram

for (int dir = 1; dir == 1 || horpos > 0; horpos += 2 * dir;) {   //não te esqueças de mudares a condição!
    horservo.write(horpos);
    delay(HSPEED);
    if (horpos >= 180) {
      dir = -1;

      horpos += 2 * dir; //o continue salta a instrução do "horpos += 2 * dir" dentro do for loop, e por isso, tens de mete-la aqui dentro da condição                                          //depois de mudares o dir para -1, senão o horpos ficaria >= 180, e esta condição estaria sempre a ser executada.
      continue;
    }

Editado por seuqram

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
PsySc0rpi0n

Continua a não dar!

Está assim a função:

void motion_2(){
  for (int dir = 1; dir == 1 && horpos > 0; horpos += 2*dir) {
    horservo.write(horpos);
    delay(HSPEED);
    if (horpos >= 180) {
      dir = -1;
      horpos += 2 * dir;
      continue;
    }

    if (verpos < 90)
      verservo.write(verpos += 1 * dir);
    else if (verpos > 0)
      verservo.write(verpos += 1 * dir);
      
    delay(VSPEED);
    Print_Data();
  }  
}

 

O servo vertical está a ir para fora dos limites que deviam ser entre 0 e 90.


Kurt Cobain - Grunge misses you

Nissan GT-R - beast killer

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
seuqram
else if (verpos > 0)
      verservo.write(verpos += 1 * dir);

não era soposto ser só isto:

else if (verpos > 0)
      verservo.write(--verpos);

ou simplificado (esse if é desnecessário):

else
      verservo.write(--verpos);

 

Editado por seuqram

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
PsySc0rpi0n

Não sei porquê mas não está a dar!

O servo horizontal só anda até aos 180 e não volta para trás e o vertical só começa o movimento quando o horizontal chega aos 180. E também não volta para trás!


Kurt Cobain - Grunge misses you

Nissan GT-R - beast killer

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
seuqram

horpos começa com 90, e verpos começa com 0. verpos só começa a aumentar quando chega a 90, que é quando horpos passa pelos 180 e volta aos 90. Eu não percebo muito bem o problema em termos reais, mas vejo que verpos vai ficar estacado nos 90 (no codigo inicial também era assim).

Podias eliminar o if/else dos verservo e fazer algo semelhante como o horservo:

void motion_2(){
  for (int dir = 1; dir == 1 || horpos > valor_inicial_horpos; horpos += 2*dir, verpos += dir) {
    horservo.write(horpos);
    delay(VSPEED);
    verservo.write(verpos)
    delay(HSPEED);
    if (horpos >= 180 + valor_inicial_horpos) {
      dir = -1;
      horpos -= 2;
      verpos -= 1;
      continue;
    }
    Print_Data();
  }  
}

horpos vai até 180 + init e volta ao init.

verpos vai até 90 + init e volta init.

 

No caso de 180 ser o maximo e 0 o minimo (que passas pelas funções de versvo e horservo), e o valor inicial do horpos não poder ser 0 e o do verpos menos ou igual a 90, tens de criar duas variaveis de direção, uma para o verpos e outra para o horpos. Mas parece que não é o teu problema.

Editado por seuqram

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
PsySc0rpi0n

Mudei o && para || e acho que á está a funcionar!

E agora que ta ajudarem-me a adaptar o código que me sugeriram para o tentar usar?

 

Já agora, fica aqui um video dos dois servos a trabalhar:

 

Editado por PsySc0rpi0n

Kurt Cobain - Grunge misses you

Nissan GT-R - beast killer

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HappyHippyHippo
void motion_2() {
  for (int dir = 1;
       dir == 1 || horpos > 0;
// esta actualização de verpos não está correcta em relação ao código inicial
       horpos += 2 * dir, verpos += dir) {
    horservo.write(horpos);
    delay(VSPEED);
    verservo.write(verpos)
    delay(HSPEED);

    if (horpos >= 180)
      dir = -1;

    Print_Data();
  }  
}

un gajo escreve um código às 6 da matina e passa um fim-de-semana a apanhar borracheiras e ficam o fórum num pantanas !!

----------

o que queres dizer com "adaptar o código" ?


IRC : sim, é algo que ainda existe >> #p@p

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
PsySc0rpi0n

Não percebi o que quiseste dizer com "a actualização da variável verpos não está correcta em relação ao código inicial" porque pelo menos aparentemente, a coisa está a funcionar!

 

Em relação a adpatar o código, estava a falar no código que me foi sugerido por alguém no IRC.

Este código:

#include <Servo.h>

void setup(){
    Serial.begin(9600);
}

struct vec {int x; int y;};

vec dest;
vec pos;

void printVec(Print &p, const struct vec &c) {
    p.print(c.x); 
    p.print(' '); 
    p.print(c.y);
}

void updateDestinations() {
    dest.x = Serial.parseInt();
    dest.y = Serial.parseInt();
    unsigned long start = millis();
    while (millis() - start < 100) {
        while (Serial.read() != -1)
          ;
    }
}

int int_sgn(int n){
    if (n > 0){
      return +1;
    }
    if (n < 0){
      return -1;
    }
    return 0;
}

void loop() {
    if (Serial.available()) {
        updateDestinations();
    }

    Serial.print(F( "Dest : "));
    printVec(Serial, dest);
    Serial.print(F("|Pos  : "));
    printVec(Serial, pos );

    const bool arrived = (dest.x == pos.x && dest.y == pos.y);
    
    Serial.println(arrived ? F(" [arrived]") : F(" [traveling]"));
    delay(100);

    pos.x += int_sgn(dest.x - pos.x) * 2;
    pos.y += int_sgn(dest.y - pos.y)    ;
}

 


Kurt Cobain - Grunge misses you

Nissan GT-R - beast killer

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HappyHippyHippo
7 minutes ago, PsySc0rpi0n said:

Não percebi o que quiseste dizer com "a actualização da variável verpos não está correcta em relação ao código inicial" porque pelo menos aparentemente, a coisa está a funcionar!

funcionar, deve funcionar, mas para condições iniciais diferentes (e escolhidas a dedo) o resultado é diferente.

ps : tenta descobrir um caso desses

 

7 minutes ago, PsySc0rpi0n said:

Em relação a adpatar o código, estava a falar no código que me foi sugerido por alguém no IRC.

Este código:


#include <Servo.h>

void setup(){
    Serial.begin(9600);
}

struct vec {int x; int y;};

vec dest;
vec pos;

void printVec(Print &p, const struct vec &c) {
    p.print(c.x); 
    p.print(' '); 
    p.print(c.y);
}

void updateDestinations() {
    dest.x = Serial.parseInt();
    dest.y = Serial.parseInt();
    unsigned long start = millis();
    while (millis() - start < 100) {
        while (Serial.read() != -1)
          ;
    }
}

int int_sgn(int n){
    if (n > 0){
      return +1;
    }
    if (n < 0){
      return -1;
    }
    return 0;
}

void loop() {
    if (Serial.available()) {
        updateDestinations();
    }

    Serial.print(F( "Dest : "));
    printVec(Serial, dest);
    Serial.print(F("|Pos  : "));
    printVec(Serial, pos );

    const bool arrived = (dest.x == pos.x && dest.y == pos.y);
    
    Serial.println(arrived ? F(" [arrived]") : F(" [traveling]"));
    delay(100);

    pos.x += int_sgn(dest.x - pos.x) * 2;
    pos.y += int_sgn(dest.y - pos.y)    ;
}

 

tens de ser mais específico


IRC : sim, é algo que ainda existe >> #p@p

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
PsySc0rpi0n

Hum, ok... Quando chegar a casa já vejo... Hoje começam as minhas aulas, por isso devo chegar mais tarde!

 

Quanto ao outro código, acho que só devo necessitar de escrever para os servos, os valores das variáveis pos.x e pos.y... E não está ali a ser usado um ponteiro para uma função? Ou é impressão minha?


Kurt Cobain - Grunge misses you

Nissan GT-R - beast killer

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.