Arduíno "esquecendo" as variáveis

Olá, estou com o seguinte código no meu Arduíno uno

char corrente = '1';

void setup() {
  Serial.begin(9600);
  delay(500);
}

void loop() {

  if (Serial.available()) {
    corrente = Serial.read();
    delay(10);
  }
  //tela2();
  Serial.println(corrente);
delay(1000);
}

quando envio um valor no monitor serial (ja tentei char, inteiro, float ...) ele faz a leitura e retorna no monitor serial e logo em seguida o valor some, isso pode ser erro do meu arduino? e qual o motivo disto?

Sim o problema é no seu código. Vamos tentar te explicar:
Todas as vezes que você envia um texto ao arduino via Serial ex: 1 , o arduino recebe 2 caracteres o 1 e o \n, então a variável assume o valor de 1 e depois o valor de \n, esse \n significa fim da linha e pule para a próxima.Se você mandar __21__ele recebe 2\n e depois 1\n vou colocar um código abaixo como exemplo para você estudar:

String corrente = "";
boolean mudarString = true;
void setup() {
  Serial.begin(9600);
  delay(500);
}

void loop() {
  
  while (Serial.available()) {
    char testeChar = (char)Serial.read();
    if (mudarString == true){ // aqui ele verifica se pode mudar o valor da String
      corrente = testeChar;
      mudarString = false;
    } else {
      corrente += testeChar;// Aqui ele concatena os valores
    }
    delay(10);
  }
  if(corrente.indexOf("\n")){ // Aqui ele procura pelo \n
    corrente.replace("\n",""); // aqui ele substitui \n por nada
  }
  Serial.println(corrente);
  delay(1000);
  mudarString = true; // Aqui ele habilita a alteração do valor da String
}

tecdiego:
Sim o problema é no seu código. Vamos tentar te explicar:
Todas as vezes que você envia um texto ao arduino via Serial ex: 1 , o arduino recebe 2 caracteres o 1 e o \n, então a variável assume o valor de 1 e depois o valor de \n, esse \n significa fim da linha e pule para a próxima.Se você mandar __21__ele recebe 2\n e depois 1\n vou colocar um código abaixo como exemplo para você estudar:

String corrente = "";

boolean mudarString = true;
void setup() {
 Serial.begin(9600);
 delay(500);
}

void loop() {
 
 while (Serial.available()) {
   char testeChar = (char)Serial.read();
   if (mudarString == true){ // aqui ele verifica se pode mudar o valor da String
     corrente = testeChar;
     mudarString = false;
   } else {
     corrente += testeChar;// Aqui ele concatena os valores
   }
   delay(10);
 }
 if(corrente.indexOf("\n")){ // Aqui ele procura pelo \n
   corrente.replace("\n",""); // aqui ele substitui \n por nada
 }
 Serial.println(corrente);
 delay(1000);
 mudarString = true; // Aqui ele habilita a alteração do valor da String
}

Isto não é bem assim...
Se eu escrever 21 na caixinha do terminal série do Arduino ele envia 21\n... se eu enviar um 2 e depois enviar um 1, então ele faz como tu dizes dependendo de como o terminal série está configurado (pode não enviar nada).
@0800natal
No exemplo que vemos na imagem, que é que enviaste pela caixinha do terminal série? 1112 e carregaste em enviar?
Na janela do terminal série do Arduino na parte de baixo, selecciona para não enviar nenhum terminador de string.
O que acontece é que o teu código imprime sempre independentemente se recebeu algo ou não. Então o último caracter a ser enviado de volta é o \n como o tecdiego referiu. Se passares o Serial.print para dentro do if() isso já não acontece.

Obrigado @bubulindo @tecdiego
percebi que estava enviando no "Nova-linha"
então o \n era colocado na variável e acabava "apagando" a informação que ela tinha salvo
bobeira minha :v