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?