const byte PULSOS[12] = {
  0b10001010, 0b10001000, 0b10001000, 0b10001000, 0b10001000, 0b10001010,
  0b10101000, 0b10001000, 0b10001000, 0b10001000, 0b10001000, 0b10001010
};

const byte PIN_OUT = 4;     // salida de pulsos
const byte PIN_MUESCA = 5;  // muesca de la polea

void setup() {
  pinMode(PIN_OUT, OUTPUT);
  pinMode(PIN_MUESCA , OUTPUT);
}

void loop() {
  for (int j = 0; j < 12; j++) {  // recorre cada byte de la array
    for (int i = 7; i >= 0; i--) { // recorre los bits del byte
      if (bitRead(PULSOS[j], i) == 1) { // lee cada bit y lo copia a la salida
        digitalWrite(PIN_OUT, HIGH); 
      } 
      else {
        digitalWrite(PIN_OUT, LOW);
      }
// ------------------------------------------
// envia un pulso como referencia gráfica de la posición de la muesca  de la polea
      if (i == 7 && j == 0) { 
        digitalWrite(PIN_MUESCA, HIGH); 
      }
      else {
        digitalWrite(PIN_MUESCA, LOW);
      }
// ------------------------------------------
      delay(10); // duración del pulso para duty cycle 25%
    }  // cierra for(int i...
  }  // cierra for(int j...
// delay(1000);
}
D0D1D2D3D4D5D6D7GNDLOGIC