LFSR (linear-feedback shift register) adalah metode matematis untuk menghasilkan sebuah bilangan yang linear dengan bilangan sebelumnya.
Fungsi matematis ini digunakan sebagai:
- menghasilkan bilangan acak (random generator)
- Menghasilkan bilangan tersusun yang berulang sehingga bisa dimanfaatkan sebagai pembangkit suara gangguan (noise) seperti di tv/radio dengan siaran acak ketika tidak siaran.
sketch/program arduino LFSR:
metode Fibonacci

uint16_t LFSRBuffer;
void setup() {
Serial.begin(9600);
Serial.println("LFSR metode Fibonacci");
Serial.println("https://www.project.semesin.com");
uint16_t nilaiAwal = analogRead(0);
LFSRFibonacci(nilaiAwal);
//LFSRFibonacci(100);
}
void loop() {
uint16_t bilanganLFSR = LFSRFibonacci();
Serial.println(bilanganLFSR);
delay(1000);
}
void LFSRFibonacci(uint16_t nilaiAwal)
{
LFSRBuffer = nilaiAwal;
}
uint16_t LFSRFibonacci()
{
uint16_t bit;
bit = ((LFSRBuffer >> 0) ^ (LFSRBuffer >> 2) ^ (LFSRBuffer >> 3) ^ (LFSRBuffer >> 5)) & 1;
LFSRBuffer = (LFSRBuffer >> 1) | (bit << 15);
return LFSRBuffer;
}
metode Galois

uint16_t LFSRBuffer;
void setup() {
Serial.begin(9600);
Serial.println("LFSR metode Galois");
Serial.println("https://www.project.semesin.com");
uint16_t nilaiAwal = analogRead(0);
LFSRGalois(nilaiAwal);
//LFSRGalois(100);
}
void loop() {
uint16_t bilanganLFSR = LFSRGalois();
Serial.println(bilanganLFSR);
delay(1000);
}
void LFSRGalois(uint16_t nilaiAwal)
{
LFSRBuffer = nilaiAwal;
}
uint16_t LFSRGalois()
{
unsigned lsb = LFSRBuffer & 1;
LFSRBuffer >>= 1;
if (lsb)
{
LFSRBuffer ^= 0xB400;
}
return LFSRBuffer;
}