splitar.ino

#include "split.h"
String cad = "_E1_D101_D81_D91_D131_D121_D111";
//String c[10];
//byte contador = 0;
void setup() {
  Serial.begin(9600);
  Serial.println("  ");
  Serial.println(cad);
  if (cad.indexOf("E1") != -1) {
    for (int i = 0; i < split(cad); i++) {
      //Serial.print(String(i) + ":");
      //Serial.println(sp[i]);
      if (sp[i].indexOf("D") != -1) {
        Serial.println("D=" + sp[i]);
        int pin = sp[i].substring(1, sp[i].length() - 1).toInt();
        int estado = sp[i].substring(sp[i].length() - 1).toInt();
        Serial.println("pin=" + String(pin) + " estado=" + String(estado));
        pinMode(pin, OUTPUT);
        digitalWrite(pin, estado);
      }
    }
  }
}
void loop() {
}

split.h

/*
 * Llamada en el programa
 * String cad = "_E1_D101_D80_D91";
 *   for (int i=0; i<split(cad); i++){
    Serial.print(String(i)+":");
    Serial.println(sp[i]);
  }
 */
String sp[10];
byte split(String cad) {
  String s = cad;
  byte contador = 0;
  while (s.indexOf("_") != -1) {
    s = s.substring(s.indexOf("_") + 1);
    sp[contador] = s.substring(0, s.indexOf("_"));
    contador++;
  }
  return contador;
}