Paso 3: El código
Los códigos existentes están diseñados para un número limitado de registros de cambio y no hay ninguna función o método universal para hacerlo. Como desarrollador de software es inaceptable para mí y estoy acostumbrado a hacer todo tan dinámica como sea posible sin limitaciones. Rediseñé los ejemplos de código existente para que pueda utilizar un número ilimitado de registros de cambio. Vea el código siguiente:
int numOfRegisters = 2;
byte * registerState;
void setup() {}
Inicializar la matriz
registerState = new byte [numOfRegisters];
para (size_t i = 0; i < numOfRegisters; i ++) {}
registerState [i] = 0;
}
... configuración
}
{} void regWrite (pin int, bool estado)
Determina el registro int reg = pin / 8;
Pin para el registro actual se determina
int actualPin = pin - (8 * reg);
Iniciar sesión
digitalWrite (latchPin, bajo);
para (int i = 0; i < numOfRegisters; i ++) {}
Conseguir Estados reales para registro
byte * Estados =® isterState [i];
Estado de actualización
Si (i == reg) {}
bitWrite (* actualPin, Estados, estado);
}
Escribir
shiftOut (dataPin, clockPin, MSBFIRST, * Estados);
}
Sesión final
digitalWrite (latchPin, HIGH);
}