funzione random "rand() "

ho appena fatto il giochino snake con arduino e funziona tutto benissimo tranne un piccolo particolare, ad ogni partita i quadratini da prendere sono sempre nella stessa posizione nonostante abbia usato la funzione rand() che funziona bene perché mette i puntini a caso durante la partita ma nella partita dopo sono uguali.
questo è il codice:

void punto(){
  cont6=0;
  xp = rand() % RANGERAND1 + 1;
  yp = rand() % RANGERAND2 + 1;
  GLCD.DrawRect(xp*2,yp*2,1,1,BLACK);
 }

qualcuno sa spiegarmi il perché e come risolverlo?

vuol dire che la funzione rand esegue sempre lo stesso algoritmo potresti provare a complicarla tipo

int x= (rand()+rand())/(2*rand())
if  (x>rand())
x= rand()*rand()
else
x= (rand()+rand())*3

mi sà che comunque otterresti sempre gli stessi numeri... magari puoi provare a fare N di algoritmi come l'ho scritto io ma cambiandolo e usando la funzione millis() a seconda del valore di ritorno scegli quale tra gli N usare.
Il fatto è che far generare numeri casuali ad un algoritmo è cosa assai difficile visto che è appunto un algoritmo a generarlo (la stessa sequenza di istruzioni)
adesso che ho tirato in ballo la funzione millis() potresti usare anche questa ultima per avere numeri casuali..vedi un pò te...

ma anche usando millisec il primo quadrato rimane uguale ...ma non riesco a capire il perchè ... se è random non puo uscire sempre uguale

posso solo consigliarti di vedere qui Numeri pseudo-casuali - Wikipedia

ok ho risolto con la funzione millis

void punto(){
    cont6=0;   
  xp = millis()% RANGERAND1 + 1;
  yp = millis() % RANGERAND2 + 1;
  GLCD.DrawRect(xp*2,yp*2,1,1,BLACK);}