Cuando pones un
switch se ejecuta el primer
case que cumpla la condición y sigue ejecutándose hasta que encuentra un
break o se acaba el bloque
switch.
Para lo que tu quieres hacer necesitas poner un par de
breakint contar;
void loop(){
if (Serial.available() > 0){
int valor = Serial.read();
switch (valor){
case 'a':
contar =contar +10;
break;
case 's':
contar= contar - 10;
break;
} //fin del switch
} //fin del if
Serial.println (contar);
}//fin del loop
Como no tienes los
break puestos lo que hace tu código cuando llega una 'a' es
- Primero le suma 10 (lo que hace al ser 'a')
- Luego le resta 10 (porque es una instrucción que está debajo y no hay un break que lo pare.
- Resultado = 10 -10 = 0 --> la variable se queda como estaba.