Bird
Raised Fist0
Arduinoprogramming~10 mins

Arduino sleep modes - Interactive Code Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to put the Arduino into sleep mode.

Arduino
#include <avr/sleep.h>

void setup() {
  Serial.begin(9600);
  set_sleep_mode([1]);
  sleep_enable();
  sleep_cpu();
}

void loop() {
  // Nothing here
}
Drag options to blanks, or click blank then click option'
ASLEEP_MODE_IDLE
BSLEEP_MODE_PWR_DOWN
CSLEEP_MODE_ADC
DSLEEP_MODE_STANDBY
Attempts:
3 left
💡 Hint
Common Mistakes
Choosing a lighter sleep mode that doesn't save much power.
2fill in blank
medium

Complete the code to disable sleep mode after waking up.

Arduino
void wakeUp() {
  sleep_disable();
  Serial.println("Woke up!");
}

void setup() {
  attachInterrupt(digitalPinToInterrupt(2), wakeUp, [1]);
  set_sleep_mode(SLEEP_MODE_PWR_DOWN);
  sleep_enable();
  sleep_cpu();
}

void loop() {
  // Sleep until interrupt
}
Drag options to blanks, or click blank then click option'
ALOW
BCHANGE
CRISING
DFALLING
Attempts:
3 left
💡 Hint
Common Mistakes
Using LOW, which triggers continuously while the pin is held low.
3fill in blank
hard

Fix the error in the code to correctly enter sleep mode.

Arduino
#include <avr/sleep.h>

void setup() {
  Serial.begin(9600);
  set_sleep_mode(SLEEP_MODE_PWR_DOWN);
  [1]();
  sleep_cpu();
}

void loop() {
  // Sleep here
}
Drag options to blanks, or click blank then click option'
Asleep_enable
Bsleep_mode
Csleep_disable
Dsleep_set
Attempts:
3 left
💡 Hint
Common Mistakes
Calling sleep_disable() instead of sleep_enable().
4fill in blank
hard

Fill both blanks to create a dictionary of sleep modes and their descriptions.

Arduino
const char* sleepModes[] = {"[1]", "[2]"};

void setup() {
  Serial.begin(9600);
  Serial.println(sleepModes[0]);
  Serial.println(sleepModes[1]);
}

void loop() {}
Drag options to blanks, or click blank then click option'
ASLEEP_MODE_IDLE
BSLEEP_MODE_PWR_SAVE
CIdle mode
DPower save mode
Attempts:
3 left
💡 Hint
Common Mistakes
Mixing mode names with descriptions incorrectly.
5fill in blank
hard

Fill all three blanks to create a function that sets sleep mode and enters sleep.

Arduino
void enterSleepMode([1] mode) {
  set_sleep_mode([2]);
  [3]();
  sleep_cpu();
}

void setup() {
  Serial.begin(9600);
  enterSleepMode(SLEEP_MODE_PWR_DOWN);
}

void loop() {}
Drag options to blanks, or click blank then click option'
Auint8_t
Bmode
Csleep_enable
Dint
Attempts:
3 left
💡 Hint
Common Mistakes
Using wrong parameter type or forgetting to enable sleep.

Practice

(1/5)
1. Which Arduino function is used to set the type of sleep mode before entering sleep?
easy
A. set_sleep_mode()
B. sleep_cpu()
C. attachInterrupt()
D. delay()

Solution

  1. Step 1: Understand sleep mode setup

    The function set_sleep_mode() is used to choose which sleep mode the Arduino will enter.
  2. Step 2: Differentiate from sleep execution

    The function sleep_cpu() actually puts the CPU to sleep, but does not set the mode.
  3. Final Answer:

    set_sleep_mode() -> Option A
  4. Quick Check:

    Set mode = set_sleep_mode() [OK]
Hint: Set mode first with set_sleep_mode() before sleeping [OK]
Common Mistakes:
  • Confusing set_sleep_mode() with sleep_cpu()
  • Thinking attachInterrupt() sets sleep mode
  • Using delay() to enter sleep
2. Which of the following is the correct syntax to put the Arduino into sleep mode after setting it?
easy
A. sleep_mode();
B. sleep_cpu();
C. sleep();
D. enter_sleep();

Solution

  1. Step 1: Identify the sleep function

    The function sleep_cpu() is the correct call to put the CPU into sleep mode after setting it.
  2. Step 2: Check other options

    sleep_mode() is not a valid function, nor are sleep() or enter_sleep().
  3. Final Answer:

    sleep_cpu(); -> Option B
  4. Quick Check:

    Sleep call = sleep_cpu() [OK]
Hint: Use sleep_cpu() to enter sleep after setting mode [OK]
Common Mistakes:
  • Using sleep_mode() instead of sleep_cpu()
  • Trying to call sleep() which doesn't exist
  • Confusing function names
3. What will the following Arduino code do?
set_sleep_mode(SLEEP_MODE_PWR_DOWN);
sleep_enable();
sleep_cpu();
// CPU sleeps here
sleep_disable();
medium
A. The CPU enters power-down sleep mode and stays asleep until an interrupt wakes it
B. The CPU enters power-down sleep mode and wakes immediately
C. The CPU does not sleep because sleep_enable() is missing
D. The CPU enters idle mode instead of power-down

Solution

  1. Step 1: Analyze sleep mode setting

    The code sets the sleep mode to power-down with set_sleep_mode(SLEEP_MODE_PWR_DOWN);.
  2. Step 2: Understand sleep flow

    Calling sleep_enable() then sleep_cpu() puts the CPU to sleep in power-down mode. It stays asleep until an interrupt or reset wakes it. After waking, sleep_disable() disables sleep.
  3. Final Answer:

    The CPU enters power-down sleep mode and stays asleep until an interrupt wakes it -> Option A
  4. Quick Check:

    Power-down sleep = stays asleep until interrupt [OK]
Hint: Power-down sleep waits for interrupt to wake CPU [OK]
Common Mistakes:
  • Assuming CPU wakes immediately without interrupt
  • Forgetting sleep_enable() disables sleep
  • Confusing idle mode with power-down
4. Identify the error in this Arduino sleep code snippet:
set_sleep_mode(SLEEP_MODE_IDLE);
sleep_cpu();
sleep_enable();
medium
A. set_sleep_mode() is missing a parameter
B. No error, code is correct
C. sleep_cpu() should be replaced with sleep_mode()
D. sleep_enable() must be called before sleep_cpu()

Solution

  1. Step 1: Check function order

    The function sleep_enable() must be called before sleep_cpu() to enable sleep mode properly.
  2. Step 2: Verify other parts

    set_sleep_mode() is correctly called with a valid mode. sleep_cpu() is the correct function to enter sleep.
  3. Final Answer:

    sleep_enable() must be called before sleep_cpu() -> Option D
  4. Quick Check:

    Enable sleep before sleeping [OK]
Hint: Call sleep_enable() before sleep_cpu() to avoid errors [OK]
Common Mistakes:
  • Calling sleep_cpu() before sleep_enable()
  • Confusing sleep_cpu() with sleep_mode()
  • Missing parameters in set_sleep_mode()
5. You want to save maximum power on your Arduino but still wake it up using a button press on pin 2. Which sleep mode and wake method should you use?
hard
A. Use SLEEP_MODE_IDLE and poll the button in loop()
B. Use SLEEP_MODE_STANDBY and wake with delay()
C. Use SLEEP_MODE_PWR_DOWN and attach an external interrupt on pin 2
D. Use SLEEP_MODE_ADC and check button state with analogRead()

Solution

  1. Step 1: Choose lowest power sleep mode

    SLEEP_MODE_PWR_DOWN uses the least power by shutting down most parts of the chip.
  2. Step 2: Select wake method

    To wake from power-down mode, an external interrupt on pin 2 (using attachInterrupt) is needed because polling or delay() won't wake the CPU.
  3. Final Answer:

    Use SLEEP_MODE_PWR_DOWN and attach an external interrupt on pin 2 -> Option C
  4. Quick Check:

    Lowest power + external interrupt wake = Use SLEEP_MODE_PWR_DOWN and attach an external interrupt on pin 2 [OK]
Hint: Lowest power sleep needs external interrupt wake [OK]
Common Mistakes:
  • Using idle mode which uses more power
  • Trying to wake with delay() which doesn't work
  • Polling button instead of using interrupt
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard