#include <Ticker.h>
#define arraySize(arr) (sizeof(arr) / sizeof(*(arr)))
void handleClockTick();
class LoopingBuffer
{
public:
void init()
{
randomizeBits();
}
void randomizeBits()
{
for (int i = 0; i < arraySize(bits); i++) {
bits[i] = (random(100) > 49) ? 1: 0;
}
}
void printBits()
{
for (int i = 0; i < arraySize(bits); i++) {
Serial.print(bits[i]);
}
Serial.println();
}
void getLength() { return length; }
void setLength(int new_length) { length = new_length; }
void shiftRight()
{
int last_i = length - 1;
int temp = bits[last_i];
for (int i = last_i; i > 0; i--)
{
bits[i] = bits[i - 1];
}
if (random(100) < chance) { temp = !temp; }
bits[0] = temp;
}
private:
int bits[32];
int chance = 0;
int length = 8;
};
LoopingBuffer buffer;
Ticker clock(handleClockTick, 1000);
void setup() {
Serial.begin(9600);
while(!Serial);
byte b = 0b01010101;
int i = b;
char s = b;
Serial.println(s);
Serial.println(b);
Serial.println(i);
buffer.init();
clock.start();
}
void loop() {
clock.update();
}
void handleClockTick()
{
buffer.shiftRight();
// buffer.printBits();
}