como resetear una variable por código?

Estimados,
tengo la siguiente consulta, estoy leyendo dos señales por serial y necesito que cuando envíe una letra por serial, estas señales se reseten. Por ejemplo, tengo dos señales de potenciometros que varían entre 0 y 1023, necesito que si yo envío una letra por serial el potenciometro me resetee su valor volviéndolo a 0 en la posición que quedó, con esto podre tener números negativos con respecto a la posición que quedo.

Alguien me podría orientar en como lo puedo hacer?.

int pote1 = 0;
int pote2 = 0;

void setup ()


Serial.begin(9600);


void loop()
{
 
 pote1 = analogRead (A0);
 pote2 = analogRead (A1);


if(Serial.available())
  {
    int estado = Serial.read();

    if ( estado = 'a' )
      {
      
        int pote1Reset = pote1 - pote1Reset; 
   
      }
      pote1Reset = pote1;

No se si es lo que quieres pero... es un comienzo:

int pote1, pote2, pote1Reset = 0, pote2Reset = 0;

void setup() {
    Serial.begin(9600);
    Serial.println("Iniciando.");
}


void loop() {
 
    pote1 = analogRead (A0) - pote1Reset;
    pote2 = analogRead (A1) - pote2Reset;
    Serial.println("Pot1:");
    Serial.println(pote1);
    Serial.println("Pot2:");
    Serial.println(pote2);

    if (Serial.available())  {
        int estado = Serial.read();
        if ( estado = 'a' ) {
             pote1Reset = pote1;
        }
        if ( estado = 'A' ) {
             pote1Reset = 0;
        }
        if ( estado = 'b' ) {
             pote2Reset = pote2;
        }
        if ( estado = 'B' ) {
             pote2Reset = 0;
        }        
     }
}

a y b restan el valor del potenciometro almacenado al actual
A y B lo ponen a 0 y vuelves a leer valores sin modificación.

Creo que lo que necesita es tarar el valor de lectura en un punto.
El mismo principio de funcionamiento de una balanza.
Mira este a ver si que te parece.

int pote1 = 0;
int pote2 = 0;
int pote1tara = 0;
int pote2tara = 0;
int tara1 = 0; // tara para analógica A0
int tara2 = 0; // tara para analógica A1


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

void loop()
{
 
 pote1 = analogRead (A0);
 pote2 = analogRead (A1);


if(Serial.available())
  {
    int estado = Serial.read();

    if ( estado == 'a' )
      {
        tara1 = analogRead (A0); 
      }
    if ( estado == 'b' )
      {
        tara2 = analogRead (A1); 
      }   
  }
 pote1tara = pote1 - tara1;
 pote2tara = pote2 - tara2;

}

El valor real de la analógica lo sigues teniendo en pote1 y pote2.
Y el valor despues de la puesta a 0 en un punto sería pote1tara y pote2tara, lo he puesto teniendo en cuenta que deseas poner a 0 cada analógica por separado, si no fuese así, tu mismo lo modificas.

Saludos.

Que buen ojo, arreglado, gracias ArduMyth.

Es un error común y se nos pasó a ambos @Sereno.

Hola Señor:

Te voy a poner un ejemplo.

Céntrate en la variable comandos. Se dice en vez de resetear, limpiar.

Si tienes una variable de cualquier valor como este.

String  comando = "Hola amigo.";

Simplemente lo borras, limpias o como dices, resetea de esta manera.

 // Limpiamos la cadena para volver a recibir el siguiente comando. 
  comando = "";

Siempre y cuando no sea una constante, por supuesto.

/*
 * Electrónica PIC.
 * 
 * Ejemplo:
 * Encender y apagar un Led con Arduino y Visual Studio 2015.
 */

int pinLed =  13;   // Declaramos la variable pin del Led.
char caracter;
String comando;

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

void loop()
{
  pinMode(pinLed, OUTPUT);  // Inicializa el pin del Led 1 como salida.
  /* Voy leyendo carácter a carácter lo que se recibe por el canal
   *  serie (mientras llegue algún dato allí), y los voy concatenando
   *  uno tras otro en una cadena. En la práctica, si usamos el
   *  "Serial monitor" el bucle while acabará cuando pulsemos Enter.
   *  El delay es conveniente para no saturar el canal serie y que la
   *  concatenación se haga de forma ordenada.
   */
  while (Serial.available() > 0)
  {
    caracter= Serial.read();
    comando.concat(caracter);
    delay(10);
  }

  /* Unavez ya tengo la cadena "acabada", compruebo su valor y hago
   * que la placa Arduino reaccione según sea este. Aquí podríamos
   * hacer lo que quiesiéramos: si el comando es "tal", enciende
   * un Led, si es cual, mueve un motor... y así.
   */
  if (comando.equals("ON") == true)  // Led_ON.
  {
        digitalWrite(pinLed, HIGH); // Enciende el Led.
        Serial.println("Led 13 encendido.");
  }
        
  if (comando.equals("OFF") == true) // Led_OFF.
  {
        digitalWrite(pinLed, LOW); // Apaga el Led.
        Serial.println("Led 13 apagado.");
  } 
  
  // Limpiamos la cadena para volver a recibir el siguiente comando. 
  comando="";
}

Que tengas buen día. :wink: