Manipular velocidad de motor Dc por medio de la cantidad de botones oprimidos.

Tengo un proyecto en donde quiero que un motor dc levante un X peso debido a 6 botones que estarán dispuestos a la manipulación de la gente que pase. Mi problema es que, por ejemplo, si le programo a cada uno de los botones una velocidad en el motor le daré un orden a la utilización de la maquina primero uno, luego dos, luego tres, etc. Lo que necesito es que la utilización sea libre y que la velocidad sea manipulada por el numero de botones oprimidos de los seis botones, debido a esto decidí hacer esto…

const int pinButton= 8;
const int pinButton1=9;
const int pinButton2=10;
const int pinButton3=11;
const int pinButton4=12;
const int pinButton5=13;

int serie1 [6];

void setup() {

  pinMode(pinButton,INPUT);
  pinMode(pinButton1,INPUT);
  pinMode(pinButton2,INPUT);
  pinMode(pinButton3,INPUT);
  pinMode(pinButton4,INPUT);
  pinMode(pinButton5,INPUT);
  Serial.begin(9600);
}

void loop() {
  
   delay(20); 
  
  int stateButton = digitalRead(pinButton);

  int stateButton2 = digitalRead(pinButton1);
  
  int stateButton3 = digitalRead(pinButton2);

  int stateButton4 = digitalRead(pinButton3);
 
  int stateButton5 = digitalRead(pinButton4);

  int stateButton6 = digitalRead(pinButton5);
  
  delay(150);

  int serie2 []= { stateButton,stateButton2,stateButton3,stateButton4,stateButton5,stateButton6};// nombrar cada piso de la linea

  for (int i=0;i<6;i++)
      Serial.println("posicion"+ String(i)+":"+String(serie2[i]));

 }

Hice un string que escribe el estado de cada uno de los botones sea uno o sea cero,¿existirá alguna forma de que este string sea leído y pueda tener como resultado el numero de unos en este?. Haciendo de este resultado el numero que manipule la velocidad del motor dc, sin importar un orden en los botones. Este es el código que eh pensado hasta el momento pero no se como hacer la lectura de cada uno de los números del String espero que tenga alguna solución, o que el código se pueda hacer de otra manera.

gracias por su atención. Espero respuestas.

Podrias hacer simplemente esto, usar los pesos binarios de cada botón asignándole el peso deacuerdo a su posición.
El boton 0 tendra peso 0 o menos significativo
El boton 5 tendrá peso 32 o mas seginificativo

void loop() {
  
   delay(20); 
  
  // MSB  5 4 3 2 1 0
  //      1 1 1 1 1 1 = 63
  int stateButton = digitalRead(pinButton) + ;  // peso 0
                    digitalRead(pinButton1)<<1+ // peso 1
                    digitalRead(pinButton2)<<2+
                    digitalRead(pinButton3)<<3+
                    digitalRead(pinButton4)<<4+
                    digitalRead(pinButton5)<<5;
  
  // los valores irán desde 0 a 63 = 2^6-1
  Serial.println("posicion"+ String(i)+":"+String(stateButton);

}