Ejemplo de programa en Arduino:
/*
Ejemplo de implementación de un registro LFSR
para generar números aleatorios
Fuente: https://www.picuino.com/foro/index.php?topic=19
*/
unsigned int lfsr16; // Declara el registro de desplazamiento
void setup() {
Serial.begin(115200);
// Semilla inicial para los números aleatorios
// Debe ser diferente a cero
lfsr16 = 1;
// Calcula e imprime los 65535 número aleatorios posibles
for(unsigned int i=0xFFFF; i>0; i--) {
Serial.println(lfsr16); // Imprime por el puerto serie el número aleatorio
lfsr16_next(); // Calcula el siguiente número aleatorio
}
}
void lfsr16_next(void) {
if (lfsr16 & 1) {
lfsr16 >>= 1;
lfsr16 ^= (1<<15) + (1<<14) + (1<<12) + (1<<3);
}
else {
lfsr16 >>= 1;
}
}
void loop() {
}