Bird
Raised Fist0
Arduinoprogramming~5 mins

delay() function behavior in Arduino - Cheat Sheet & Quick Revision

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Recall & Review
beginner
What does the delay() function do in Arduino?
It pauses the program for a specified number of milliseconds, stopping all other code from running during that time.
Click to reveal answer
beginner
How does delay(1000) affect the Arduino program?
It stops the program for 1000 milliseconds, which is 1 second, before continuing to the next instruction.
Click to reveal answer
intermediate
Can the Arduino do other tasks while delay() is running?
No, during delay(), the Arduino stops running other code, so it cannot read sensors or respond to inputs.
Click to reveal answer
intermediate
Why might using delay() be a problem in complex Arduino projects?
Because it stops all code, it can make the program unresponsive or slow to react to events like button presses or sensor changes.
Click to reveal answer
advanced
What is a common alternative to delay() for better responsiveness?
Using millis() to check elapsed time without stopping the program, allowing other tasks to run simultaneously.
Click to reveal answer
What happens when you call delay(500) in an Arduino sketch?
AThe program pauses for 500 milliseconds and does nothing else.
BThe program runs other code while waiting 500 milliseconds.
CThe Arduino resets after 500 milliseconds.
DThe program speeds up for 500 milliseconds.
Which of these is a limitation of using delay() in Arduino?
AIt uses too much memory.
BIt only works for delays longer than 1 second.
CIt stops the program from doing other tasks during the delay.
DIt causes the Arduino to overheat.
If you want your Arduino to check a sensor while waiting, what should you avoid?
AUsing <code>millis()</code>.
BUsing <code>pinMode()</code>.
CUsing <code>Serial.print()</code>.
DUsing <code>delay()</code>.
What unit of time does delay() use?
AMilliseconds
BMicroseconds
CSeconds
DMinutes
Which function can be used instead of delay() to keep the Arduino responsive?
A<code>delayMicroseconds()</code>
B<code>millis()</code>
C<code>analogRead()</code>
D<code>digitalWrite()</code>
Explain how the delay() function works in an Arduino program and why it might cause problems in some projects.
Think about what happens to the Arduino's ability to do other things during the delay.
You got /4 concepts.
    Describe an alternative to delay() that allows an Arduino to stay responsive and how it works.
    Consider how you can measure time without stopping the program.
    You got /4 concepts.

      Practice

      (1/5)
      1. What does the delay(1000); function do in an Arduino program?
      easy
      A. Pauses the program for 1000 milliseconds (1 second)
      B. Stops the program permanently
      C. Speeds up the program by 1000 times
      D. Restarts the Arduino board

      Solution

      1. Step 1: Understand the delay() parameter

        The number inside delay() is the time in milliseconds to pause the program.
      2. Step 2: Interpret delay(1000)

        1000 milliseconds equals 1 second, so the program pauses for 1 second.
      3. Final Answer:

        Pauses the program for 1000 milliseconds (1 second) -> Option A
      4. Quick Check:

        delay(1000) = 1 second pause [OK]
      Hint: delay(x) pauses for x milliseconds, 1000ms = 1 second [OK]
      Common Mistakes:
      • Thinking delay stops the program forever
      • Confusing milliseconds with seconds
      • Assuming delay speeds up the program
      2. Which of the following is the correct syntax to pause an Arduino program for half a second?
      easy
      A. delay(0.5);
      B. delay = 500;
      C. delay(500s);
      D. delay(500);

      Solution

      1. Step 1: Check correct function usage

        delay() takes an integer number of milliseconds inside parentheses.
      2. Step 2: Validate each option

        A uses delay(0.5); which is a float and incorrect. B assigns delay which is invalid. C uses delay(500); which is correct for 500 milliseconds. D uses '500s' which is invalid syntax.
      3. Final Answer:

        delay(500); -> Option D
      4. Quick Check:

        delay(500) is correct syntax [OK]
      Hint: Use delay(milliseconds); with integer inside parentheses [OK]
      Common Mistakes:
      • Using decimal numbers instead of integers
      • Assigning delay like a variable
      • Adding units like 's' inside delay()
      3. What will be the output on the Serial Monitor after running this Arduino code?
      void setup() {
        Serial.begin(9600);
        Serial.println("Start");
        delay(2000);
        Serial.println("End");
      }
      void loop() {}
      medium
      A. Start and End printed immediately together
      B. Only Start is printed, End never prints
      C. Start immediately, then End after 2 seconds
      D. No output because delay stops Serial

      Solution

      1. Step 1: Analyze Serial prints and delay

        "Start" prints immediately, then delay(2000) pauses 2 seconds before next line.
      2. Step 2: Understand delay effect on output

        After 2 seconds pause, "End" prints. Both lines appear but with 2 seconds gap.
      3. Final Answer:

        Start immediately, then End after 2 seconds -> Option C
      4. Quick Check:

        delay pauses program, output delayed [OK]
      Hint: delay pauses code, so output after delay appears later [OK]
      Common Mistakes:
      • Thinking delay stops Serial output completely
      • Assuming both prints happen instantly
      • Believing delay affects only loop(), not setup()
      4. Identify the problem in this Arduino code snippet:
      void setup() {
        pinMode(13, OUTPUT);
      }
      void loop() {
        digitalWrite(13, HIGH);
        delay(1000)
        digitalWrite(13, LOW);
        delay(1000);
      }
      medium
      A. pinMode should be in loop()
      B. Missing semicolon after delay(1000)
      C. digitalWrite needs delay before it
      D. delay() cannot be used in loop()

      Solution

      1. Step 1: Check syntax line by line

        delay(1000) is missing a semicolon at the end, causing a syntax error.
      2. Step 2: Validate other statements

        pinMode is correctly in setup(), digitalWrite and delay usage is correct except missing semicolon.
      3. Final Answer:

        Missing semicolon after delay(1000) -> Option B
      4. Quick Check:

        Every statement must end with ; [OK]
      Hint: Check for missing semicolons after delay() calls [OK]
      Common Mistakes:
      • Putting pinMode inside loop unnecessarily
      • Thinking delay() can't be in loop
      • Forgetting semicolons after statements
      5. You want to blink an LED connected to pin 9 exactly 3 times with 0.5 second ON and 0.5 second OFF, then stop. Which code snippet correctly uses delay() to do this?
      hard
      A. for(int i=0; i<3; i++) { digitalWrite(9, HIGH); delay(500); digitalWrite(9, LOW); delay(500); }
      B. while(true) { digitalWrite(9, HIGH); delay(500); digitalWrite(9, LOW); delay(500); }
      C. digitalWrite(9, HIGH); delay(1500); digitalWrite(9, LOW); delay(1500);
      D. for(int i=0; i<=3; i++) { digitalWrite(9, HIGH); delay(1000); digitalWrite(9, LOW); delay(1000); }

      Solution

      1. Step 1: Understand blinking requirements

        LED must turn ON and OFF 3 times, each ON and OFF lasting 0.5 seconds (500 ms).
      2. Step 2: Analyze each option

        A uses a for loop 3 times with 500ms delay ON and OFF, matching requirements. B loops forever, no stop. C delays 1500ms which is too long and only blinks once. D loops 4 times (i<=3) with 1000ms delays, wrong timing and count.
      3. Final Answer:

        for(int i=0; i<3; i++) { digitalWrite(9, HIGH); delay(500); digitalWrite(9, LOW); delay(500); } -> Option A
      4. Quick Check:

        Loop 3 times with 500ms delay ON/OFF [OK]
      Hint: Use for loop with delay(500) ON and OFF, repeat 3 times [OK]
      Common Mistakes:
      • Using infinite loops instead of fixed count
      • Wrong delay times for ON/OFF
      • Looping one extra time with <= instead of <