Decision maker with LEDs

The following circuit and code shows an example of a decision maker made with LEDs. Pushing the button will make the LEDs flash in a random order for 1 second. Then displaying the random decision where one LED lights up for 3 seconds and then reseting.

  1. int timeShowRandom = 1000;
  2. int timeShowDecision = 3000;
  3. int timeBlink = 50;
  4. int buttonPin = 3;
  5.  
  6. int buttonPress = false;
  7. int randomNumber;
  8. int previousNo = 0;
  9. int timePassed = 0;
  10.  
  11. void setup() {    
  12.   // Set button pin
  13.   pinMode(buttonPin, INPUT);
  14.   // Set output pins  
  15.   pinMode(12, OUTPUT);
  16.   pinMode(11, OUTPUT);
  17.   pinMode(10, OUTPUT);
  18.  
  19. }
  20.  
  21. void getRandomNo() {
  22.   int rand = random(10,13);
  23.   if(rand == previousNo) {
  24.     getRandomNo();
  25.   } else {
  26.     randomNumber = rand;
  27.     previousNo = randomNumber;
  28.   }
  29. }
  30.  
  31. void loop() {
  32.   // Check if button is pressed
  33.   if(digitalRead(buttonPin) == HIGH && buttonPress == false) {
  34.      buttonPress = true;
  35.   } if(buttonPress == true && timePassed <= timeShowRandom) {
  36.     getRandomNo(); // Get random pin number
  37.     digitalWrite(randomNumber, HIGH);
  38.     delay(timeBlink);  
  39.     digitalWrite(randomNumber, LOW);
  40.     delay(timeBlink);  
  41.     timePassed = timePassed + (timeBlink * 2);
  42.   } else if(buttonPress == true) {
  43.     digitalWrite(random(10,13), HIGH); // Set random pin on
  44.     delay(timeShowDecision); // For x seconds
  45.     buttonPress = false; // Set button to be enabled again
  46.     timePassed = 0;
  47.   } else {
  48.     // Reset all output pins
  49.     digitalWrite(10, LOW);
  50.     digitalWrite(11, LOW);
  51.     digitalWrite(12, LOW);
  52.   }    
  53. }

7 thoughts on “Decision maker with LEDs

  1. I try to build the dicision maker but it doest work. The switch is not working. When i take the black wire from the resitor loose the in works. What could be the problem?

  2. Nice documented example :-) .
    One thought on the design:
    I would not use pin 13 because pin 13 already has a led and resistor. This is why the led you connected on pin 13 is less bright than the others.
    Best regards
    Jantje

  3. Hi Ellen.

    This can’t work.
    You need to change your Fritzing sketch, as A0 will always be 0.
    It is fixed to GND.
    That has nothing to do with the type of switch that has been used.
    So connect A0 to the opposite side of the resistor (where that connects to the button), then ik will work (but still too complicated).
    Or add an extra resistor between the existing one and the switch and connect A0 there.
    Our attention (jantje and mine) was drawn here because we got questions about this in the Arduino forum.

Leave a Reply to ellen Cancel reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>