Da gibt es mehrere Möglichkeiten.
Nur wenn die Werte immer zwei-stellig sind(!!):
char str[] = "startwerte=12:45:14:88";
int b1 = atoi(str + 11);
int b2 = atoi(str + 14);
int b3 = atoi(str + 17);
int b4 = atoi(str + 20);
Da man hier mit festen Indizes arbeitet müssen die Zahlen immer an der gleichen Stelle stehen
Die nächsten drei gehen auch mit Variabler Länge:
char str[] = "startwerte=12:45:14:88";
int b1, b2, b3, b4;
sscanf_P(str + 11, PSTR("%d:%d:%d:%d"), &b1, &b2, &b3, &b4);
Oder:
char str[] = "startwerte=12:45:14:88";
int b1 = atoi(strtok(str + 11, ":"));
int b2 = atoi(strtok(NULL, ":"));
int b3 = atoi(strtok(NULL, ":"));
int b4 = atoi(strtok(NULL, ":"));
Oder:
char str[] = "startwerte=12:45:14:88";
char* endPtr;
int b1 = strtol(str + 11, &endPtr, 10);
int b2 = strtol(endPtr + 1, &endPtr, 10);
int b3 = strtol(endPtr + 1, &endPtr, 10);
int b4 = strtol(endPtr + 1, &endPtr, 10);
sscanf() oder strtol() brauchen wahrscheinlich weniger Flash, da es nur eine Funktion ist. Im Gegensatz zu strtok() + atoi(). strtol() ist dabei im Prinzip strtok_r() (die reentrant Version von strtok()) und atoi() in einer Funktion.