Boa noite pessoal o
Estou tendo um problema com um código no meu arduino (além de problemas pra fazer o upload do código).
A idéia é usar uma matriz de leds bicolores pra fazer um jogo de "pega-pega", no  qual o objetivo (um tanto quanto óbvio) é "pegar" um led (verde no caso) que é aceso num ponto aleatério da matrix, com o led controlado pelo usuário (que é vermelho), e depois disso o led verde é mudado pra outro ponto da matrix, mas é aí que está o problema, sempre que o led vermelho cruza com a coluna ou a fileira que está o led verde, este já muda de posição, quando era pra mudar só depois que a coluna e a fileira fossem a mesma dos dois pontos.
O código é esse:
int const ROW[8] = {45,43,41,39,37,35,33,31};
int const COLG[8] = {30,32,34,36,38,40,42,44};
int const COLR[8] = {46,48,50,52,53,51,49,47};
int X = A0;
int Y = A1;
int xval;
int yval;
int randx;
int randy;
 void setup()
 {
   for (int thisPin = 0; thisPin < 8; thisPin++)
   {
     pinMode(ROW[thisPin], OUTPUT);
     pinMode(COLG[thisPin], OUTPUT);
     pinMode(COLR[thisPin], OUTPUT);
     digitalWrite(COLG[thisPin], HIGH);
     digitalWrite(COLR[thisPin], HIGH);
   }
 }
 
 void loop()
 {
   randx = random(8);
   randy = random(8);
   xval = analogRead(X);
   yval = analogRead(Y);
   xval = map(xval, 0, 1023, 0, 7);
   yval = map(yval, 0, 1023, 0, 7);
   while(xval != randx && yval != randy)
   {
     xval = analogRead(X);
     yval = analogRead(Y);
     xval = map(xval, 0, 1023, 0, 7);
     yval = map(yval, 0, 1023, 0, 7);
     digitalWrite(ROW[randx], HIGH);
     digitalWrite(COLG[randy], LOW);
     delay(1);
     digitalWrite(ROW[randx], LOW);
     digitalWrite(COLG[randy], HIGH);
     delay(1);
     digitalWrite(ROW[xval], HIGH);
     digitalWrite(COLR[yval], LOW);
     delay(1);
     digitalWrite(ROW[xval], LOW);
     digitalWrite(COLR[yval], HIGH);
     delay(1);
   }  
   digitalWrite(ROW[randx], HIGH);
   digitalWrite(COLG[randy], LOW);
   delay(1);
   digitalWrite(ROW[randx], LOW);
   digitalWrite(COLG[randy], HIGH);
   delay(1);
   digitalWrite(ROW[xval], HIGH);
   digitalWrite(COLR[yval], LOW);
   delay(1);
   digitalWrite(ROW[xval], LOW);
   digitalWrite(COLR[yval], HIGH);
   delay(1);
 }
Eu suspeito que o problema esteja no operador &&, mas não tenho certeza, os meus conhecimentos de C/C++ são muito restritos, portanto estou tendo dificuldades com o debug do código, se alguma alma caridosa puder me dar uma ajuda eu ficaria extremamente grato ^^.
P.S.: Também estou tendo problemas pra fazer o upload do código pro arduino, dependendo do programa que estiver correndo nele, eu tenho que fazer o reset da placa manualmente, e torcer pra acertar o timing, senão eu não consigo fazer o upload do código, o erro é esse:
avrdude: stk500_recv(): programmer is not responding
e eu estou usando o ubuntu 10.04 aqui, alguma idéia?