sleep() não é uma função do arduino tem de ser carregado a bib
sleep.h que é usado para poupar energia e apenas isso.
Em vez disso, use uma das outras funções internas do arduino, "delay", "count", "millis", "micros()";
Assim, tem sempre de dar erro linha 534
void playAlarm()
{
while(alarmCnt>0) {
alarmCnt--;
if(checkModeBt()) { alarmCnt=0; return; }
dots = 1;
trans=dx=dy=0;
clr();
render(CLOCKBIG);
invert(); refreshAll();
#if LOW_MEM_DEBUG==0
playRTTTL((day & 1) ? alarm1 : alarm0 );
#endif
invert(); refreshAll();
if(sleep(3000)) return;
}
}
Não vi o código todo mas parece acessório para teste, desligue o código entre a linha 520 e 536 e teste e veja como se comporta sem esse tempo de espera.
Substitua o "sleep" por "delay"
Note que existe uma função sleep
int sleep(int del)
{
unsigned int st = millis();
while(millis()-st < del) if(checkModeBt()) { alarmCnt=0; return 1; }
return 0;
}
Que liga ou não o "alarmCnt" quando o tempo de "st" é menor que "del".
Desligue também a esta função e teste.
Possivelmente o alarme fica inoperante, mas testa o resto do código