/*
ODD EVEN RANDOM GENERATOR WITH BLINKING LED INDICATOR
A random number is generated seeded by reading analog noise on a floating pin
%2 is performed as the odd-even test and an LED is lit depending on the result
*/
#define REDLED A5
#define BLUELED A4
#define PAUSE 10
#define BUZZPIN 2
long randomNumber;
long counter;
long oddCount;
long evenCount;
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
pinMode(REDLED, OUTPUT);
pinMode(BLUELED, OUTPUT);
pinMode(BUZZPIN, OUTPUT);
counter = 0;
oddCount = 0;
evenCount = 0;
randomSeed(analogRead(A3));
}
void loop() {
// put your main code here, to run repeatedly:
digitalWrite(REDLED, LOW);
digitalWrite(BLUELED, LOW);
randomNumber = random(0, 1000000);
Serial.println("Next number is .....");
Serial.print(randomNumber);
Serial.print(" : ");
if (randomNumber %2 == 1){ //if randomNumber is an odd number
digitalWrite(REDLED, HIGH);
oddCount++;
Serial.println("ODD");
} else { //if randomNumber is an even number
digitalWrite(BLUELED, HIGH);
Serial.println("EVEN");
evenCount++;
}
delay(PAUSE); //Give time to show which LED is lit
counter++;
if (counter%100 == 0) { //Display count for every 100 cycles
digitalWrite(REDLED, HIGH);
digitalWrite(BLUELED, HIGH);
Serial.print("After ");
Serial.print(counter);
Serial.println(" counts:");
Serial.print("ODD = ");
Serial.println(oddCount);
Serial.print("Even = ");
Serial.println(evenCount);
digitalWrite(BUZZPIN, HIGH);
delay(PAUSE*300);
digitalWrite(BUZZPIN, LOW);
}
}