Lettura seriale con array di char

SukkoPera:
Perché un singolo byte è sufficiente per contare da 0 a 255. Puoi usare anche un int ma in questo caso è "esagerato".

Il resto è corretto.

In questo momento il mio loop() è questo:

void loop() {
  serialSIM800.write("AT\r\n");
  risposta();
}

void risposta() {
  char response[BUFLEN] = {'\0'};
  byte i = 0;
  do {
    if (serialSIM800.available()) {
      char c = serialSIM800.read();
      Serial.write(c);
      response[i++] = c;
      response[i] = '\0';
    }
  } while (i < BUFLEN - 1 && response[i] != '\r');
}

Così però funziona solo al primo giro e anche aggiungendo il comando Serial.write(response[1]); non mi stampa nessun valore.