/* * Poor Person's Physical Random Number Generator - Lloyd Milligan 2021 * License: Creative Commons: https://creativecommons.org/licenses/by/3.0/us/ */ #define SERIAL_BAUD 115200 // Adjust as needed #define CLICK 2 // Interrupt pin for white noise pulse const int TMAX = 256; // Adjust for available storage const unsigned long MOMENT = 50; const unsigned long HALFSEC = 500; const unsigned long ONESEC = 1000; boolean isrEnabled; int tNdx = 0; unsigned long timeArray[TMAX]; void setup() { Serial.begin(SERIAL_BAUD); // Transmit generated values attachInterrupt(digitalPinToInterrupt(CLICK), isrClick, RISING); isrEnabled = true; } void loop() { delay(ONESEC); // Wait for ISR to fill buffer if (not isrEnabled) { detachInterrupt(digitalPinToInterrupt(CLICK)); processTimeArray(); tNdx = 0; attachInterrupt(digitalPinToInterrupt(CLICK), isrClick, RISING); isrEnabled = true; } } void isrClick() { if (isrEnabled) timeArray[tNdx++] = micros(); if (tNdx >= TMAX) isrEnabled = false; } void processTimeArray() { unsigned long k; Serial.println(); for (int j=2; j