// Forum: https://forum.arduino.cc/t/random-function-not-randomising-after-reset/1161545
// Sketch by: maagdappel
// Changes by: Koepel, 24 August 2023.
const int led_green = 4;
const int led_yellow = 5;
const int led_red = 3;
const int buzzer = 9;
void setup()
{
Serial.begin(9600);
Serial.println("--------------------------------------");
pinMode(led_green, OUTPUT);
pinMode(led_yellow, OUTPUT);
pinMode(led_red, OUTPUT);
pinMode(buzzer, OUTPUT);
// The values of analogRead are added, that is not ideal.
// They could be multiplied or with XOR or something else.
// Every "expert" about random tells something different.
unsigned long seed = 0;
for(int i = A0; i <= A5; i++)
{
seed += analogRead(i);
}
randomSeed(seed);
}
void loop()
{
int chance = random(3);
int data = analogRead(A0);
float voltage = data * (5.00 / 1023.00);
int percentage = map(data, 0, 1023, 0, 100);
Serial.print("Potentiometer at ");
Serial.print(voltage);
Serial.print("V or ");
Serial.print(percentage);
Serial.print("%. ");
Serial.print("The random number is: ");
Serial.print(chance);
Serial.println();
int brightness = map(data, 0, 1023, 0, 255);
int sound = map(data, 0, 1023, 0, 255);
switch(chance)
{
case 0:
analogWrite(led_green, brightness);
noTone(buzzer);
break;
case 1:
analogWrite(led_yellow, brightness);
noTone(buzzer);
break;
case 2:
analogWrite(led_red, brightness);
tone(buzzer, sound);
break;
}
delay(500); // slow down the sketch
}