Skip to main content

Power Save

Power Save

This library allows users to save power. The microcontroller operates based on a clock signal. It operates faster when the frequency of the clock is high, but that causes high consumption. For example, in the case of using dry-cell, the system turns off earlier. An efficient way to operate longer would be to stop the clock or make the clock slower. For example, when you measure the temperature every 1 minute, you stop the clock every time.

setPowerManagementMode

Description

Specifies power management mode.

Syntax

setPowerManagementMode(mode)
setPowerManagementMode(mode, lower, upper)

Parameters

mode:
  PM_NORMAL_MODE(Normal Mode)
  PM_STOP_MODE(Enter to stop mode when delay() function is called)
  PM_SNOOZE_MODE(Enter to snooze mode analogRead() function is called
lower: 0 to 1023 (low side of the AD conversion range, lower 2 bits are ignored.)
upper: 0~1023 (high side of the AD conversion range, lower 2 bits are ignored.)

Returns

None

getPowerManagementMode

Description

Checks the current power management mode.

Syntax

unsigned char getPowerManagementMode()

Parameters

None

Returns

PM_NORMAL_MODE, PM_STOP_MODE, PM_SNOOZE_MODE

setOperationClockMode

Description

Sets the operation clock of the CPU and peripherals

Syntax

setOperationClockMode(unsigned char mode)

Parameters

mode:
  CLK_HIGH_SPEED_MODE(high speed, 32MHz)
  CLK_LOW_SPEED_MODE(low speed, 32.768kHz)

Returns

None

Remark

When you set STOP/SNOOZE mode, do not select the CLK_LOW_SPEED_MODE, as that operation is ignored.

getOperationClockMode

Description

Checks the current clock mode.

Syntax

unsigned char getOperationClockMode()

Parameters

None

Returns

CLK_HIGH_SPEED_MODE, CLK_LOW_SPEED_MODE


Example

This example uses SNOOZE mode. A0 is output when A0 becomes 500 to 1023.


        #include <Arduino.h>
        void setup()
        {
          Serial.begin(9600);
          setPowerManagementMode(PM_SNOOZE_MODE, 0, 100);
        }
         
        void loop()
        {
          int value = analogRead(A2);
          Serial.println(value);
          Serial.flush();
          delay(100);
        }