See the code in action on Tinkercad
/*
Created by Alain Martel
*/
//#include <LiquidCrystal.h>
//LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
#define ArrayElements(array) ((sizeof array / sizeof array[0]))
uint8_t wires[] = {B1000,
B0100,
B0010,
B0001};
const uint8_t countWires = ArrayElements(wires);
uint8_t wireDisarm;
uint8_t wireDisarmBIN;
uint8_t wireExplode;
uint8_t wireExplodeBIN;
uint8_t wireFaster;
uint8_t wireFasterBIN;
uint8_t wireSlower;
uint8_t wireSlowerBIN;
void setup() {
Serial.begin(9600);
// lcd.begin(16, 2);
}
void loop() {
randomWireGen();
Serial.print(wireDisarmBIN);
Serial.print(wireExplodeBIN);
Serial.print(wireFasterBIN);
Serial.println(wireSlowerBIN);
Serial.print(wireDisarm);
Serial.print(wireExplode);
Serial.print(wireFaster);
Serial.println(wireSlower);
Serial.println("----");
delay(5000);
// lcd.clear();
}
void randomWireGen() {
scrambleArray(wires, countWires);
for (uint8_t fCounter = 0; fCounter < countWires; fCounter++) {
// Serial.print(wires[i]);
if (fCounter == 0) {
wireDisarmBIN = wires[0];
wireDisarm = wireNumber(wireDisarmBIN);
}
if (fCounter == 1) {
wireExplodeBIN = wires[1];
wireExplode = wireNumber(wireExplodeBIN);
}
if (fCounter == 2) {
wireFasterBIN = wires[2];
wireFaster = wireNumber(wireFasterBIN);
}
if (fCounter == 3) {
wireSlowerBIN = wires[3];
wireSlower = wireNumber(wireSlowerBIN);
}
}
//Serial.println("");
}
void scrambleArray(uint8_t * array, uint8_t size) {
randomSeed(analogRead(A0));
uint8_t last = 0;
uint8_t temp = array[last];
for (uint8_t fCounter = 0; fCounter < size; fCounter++) {
uint8_t index = random(size);
array[last] = array[index];
last = index;
}
array[last] = temp;
}
uint8_t wireNumber(uint8_t binValue) {
uint8_t wirePossition;
if(binValue == 8) wirePossition = 4;
if(binValue == 4) wirePossition = 3;
if(binValue == 2) wirePossition = 2;
if(binValue == 1) wirePossition = 1;
return wirePossition;
}
