¿digitalRead devuelve valores aleatorios?

Hola, estoy empezando a programar Arduino.

En resumen, este es mi código:

int tiempoOn;                    //tiempo soldando
int tiempoOff=500;               //tiempo sin soldar; antes de retirar el electrodo (medio segundo)
int tiempoHastaBajar=2000;       //tiempo que le toma a el electrodo en bajar (2 segundos)
                   
int pinBajaSold=13;                 //señal para bajar 
int pinEnciendeSold=12;             //señal para soldar
int pinComienzo=11;                 //pedal

//variables para almacenar el valor leido con digitalRead

int enUso;                                         
int pinION;
int pinIION;
int pinIIION;
int pinIVON;
int pinVON;
int pinVION;
int pinVIION;
int pinVIIION;
int pinIXON;

//pins usados para el selector: 

int pinSelectorI=10;
int pinSelectorII=9;
int pinSelectorIII=8;
int pinSelectorIV=7;
int pinSelectorV=6;
int pinSelectorVI=5;
int pinSelectorVII=4;
int pinSelectorVIII=3;
int pinSelectorIX=2;


void setup() {

  Serial.begin(9600);

  pinMode(pinBajaSold,OUTPUT);
  pinMode(pinEnciendeSold,OUTPUT);
  
  pinMode(pinComienzo,INPUT);
  pinMode(pinSelectorI,INPUT);
  pinMode(pinSelectorII,INPUT);
  pinMode(pinSelectorIII,INPUT);
  pinMode(pinSelectorIV,INPUT);
  pinMode(pinSelectorV,INPUT);
  pinMode(pinSelectorVI,INPUT);
  pinMode(pinSelectorVII,INPUT);
  pinMode(pinSelectorVIII,INPUT);
  pinMode(pinSelectorIX, INPUT);
 
}


void loop() {

///////////////////////////////////////////
 
  Serial.print("tiempoOn=");
  Serial.println(tiempoOn);

  Serial.print("pinComienzo=");
  Serial.println(enUso);
  Serial.print("pinSelectorI=");
  Serial.println(pinION);
  Serial.print("pinSelectorII=");
  Serial.println(pinIION);
  Serial.print("pinSelectorIII=");
  Serial.println(pinIIION);
  Serial.print("pinSelectorIV=");
  Serial.println(pinIVON);
  Serial.print("pinSelectorV=");
  Serial.println(pinVON);
  Serial.print("pinSelectorVI=");
  Serial.println(pinVION);
  Serial.print("pinSelectorVII=");
  Serial.println(pinVIION);
  Serial.print("pinSelectorVIII=");
  Serial.println(pinVIIION);
  Serial.print("pinSelectorIX=");
  Serial.println(pinIXON);
  Serial.println(" ");

///////////////////////////////////////////

  enUso=digitalRead(pinComienzo);
  pinION=digitalRead(pinSelectorI);
  pinIION=digitalRead(pinSelectorII);
  pinIIION=digitalRead(pinSelectorIII);
  pinIVON=digitalRead(pinSelectorIV);
  pinVON=digitalRead(pinSelectorV);
  pinVION=digitalRead(pinSelectorVI);
  pinVIION=digitalRead(pinSelectorVII);
  pinVIIION=digitalRead(pinSelectorVIII);
  pinIXON=digitalRead(pinSelectorIX);


  if(pinION==1){
    tiempoOn=250;
  }
  if(pinIION==1){
    tiempoOn=500;
  }
  if(pinIIION==1){
    tiempoOn=750;
  }
  if(pinIVON==1){
    tiempoOn=1000;
  }
  if(pinVON==1){
    tiempoOn=1250;
  }
  if(pinVION==1){
    tiempoOn=1500;
  }
  if(pinVIION==1){
    tiempoOn=1750;
  }
  if(pinVIIION==1){
    tiempoOn=2000;
  }
  if(pinIXON==1){
    tiempoOn=2500;
  }

  
  while(enUso==1){

    digitalWrite(pinBajaSold, HIGH);
    delay(tiempoHastaBajar);
    digitalWrite(pinEnciendeSold, HIGH);
    delay(tiempoOn);
    digitalWrite(pinEnciendeSold, LOW);
    delay(tiempoOff);
    digitalWrite(pinBajaSold, LOW);
    enUso=0;
  }
  
}

Desconozco si el código en sí tenga un error, según el Arduino no hay problemas. Lo preparé para arreglar una soldadora que de paso necesitaba un selector para elegir la cantidad de tiempo que iba a estar soldando. Sin embargo, aunque moviese el selector la variable ''tiempoOn'' parecía estar estancada en ''2500'', el valor que le asigné al ''pinSelectorIX''.

Después de agregar los Serial.prints para ver que estaba pasando me di cuenta de que sin importar la posición en la que deje el selector el valor que devuelve el digitalRead parece ser aleatorio. Incluso cuando desconecto los cables de los pins que asigné al selector estos siguen marcando ''1'' o ''0'' aleatoriamente en la consola.

No veo en dónde me equivoqué, así que si alguien más experimentado puediera echarme una mano le estaría agradecido.

Saludos.

Te falta poner pullup o pulldown resistencias para tener el i/o en un nivel definido.