Introduction: Random LED Millis

Picture of Random LED Millis

The goal of this project is to create 4 LED that turn on randomly based on a random number generator and use an interval based on Millis. To create this project, you will need a push button, 4 led lights and the wires to hook them up.

Step 1: Step 1

Picture of Step 1

The first step is pretty simple. Connect 4 LEDs and and a push button to your Arduino. In our code, we will use the pushing of the button to start the LEDs.

An LED will light up after a two second interval as determined but Millis.

A random number generator will decided which led to turn on.

Code:

unsigned long wait = 2000;
unsigned long previousTime = 0; int buttonPin = 2; int buttonState = 0; int previousButton = 0; int pin1 = 13; int pin2 = 12; int pin3 = 11; int pin4 = 10; long randomNumber; boolean led1State = false; boolean led2State = false; boolean led3State = false; boolean led4State = false;
void setup()
{
  pinMode(buttonPin, INPUT);
  pinMode(pin1, OUTPUT);
  pinMode(pin2, OUTPUT);
  pinMode(pin3, OUTPUT);
  pinMode(pin4, OUTPUT);
}
void loop()
{
  //read the button's state (on or off)
  buttonState = digitalRead(buttonPin);
  if(buttonState != previousButton)
  {
    if(buttonState == HIGH)//Button is pressed
    {
      unsigned long time = millis;
      randomNumber = random(0,3);
      if(time - previousTime >= wait)
      {
        switch(randomNumber)
        {
          case 0: 
            digitalWrite(pin1, HIGH);
            digitalWrite(pin2, LOW);
            digitalWrite(pin3, LOW);
            digitalWrite(pin4, LOW);
            previousTime = time;
          break;
          case 1: 
            digitalWrite(pin1, LOW);
            digitalWrite(pin2, HIGH);
            digitalWrite(pin3, LOW);
            digitalWrite(pin4, LOW);
            previousTime = time;
          break;
          case 2: 
            digitalWrite(pin1, LOW);
            digitalWrite(pin2, LOW);
            digitalWrite(pin3, HIGH);
            digitalWrite(pin4, LOW);
            previousTime = time;
          break;
          case 3: 
            digitalWrite(pin1, LOW);
            digitalWrite(pin2, LOW);
            digitalWrite(pin3, LOW);
            digitalWrite(pin4, HIGH);
            previousTime = time;
          break;
        }
      }
            
    }
  }                      
}

Comments

USMC-USAF-USN (author)2017-10-28

Based on my quick research - in order to understand this a reader would have to know that "millis()" is a system variable that returns the system clock value in milliseconds. WITH that knowledge, the code is easy to understand.

{GCP: beating computers into submission since 1973.}

About This Instructable

107views

1favorite

License:

More by Keebo07:Servo Positoning With a KeypadLEDS With a PotentiometerArduino Star Wars Trivia Game
Add instructable to: