alarm – 闹钟和睡眠

提供基于时间间隔或外部事件(例如引脚更改)触发的警报。该程序可以简单地等待这些警报,或者在它们触发时进入睡眠状态并被唤醒。

有两种支持的睡眠水平:浅睡眠和深睡眠。

轻度睡眠保持足够的状态,因此程序可以在睡眠后恢复。它不会关闭 WiFi、BLE 或其他通信,也不会关闭音频播放等正在进行的活动。它尽可能降低功耗,使这些持续活动继续运行。在某些情况下,功耗可能不会降低。

深度睡眠会关闭几乎所有微控制器(包括 CPU 和 RAM)的电源。这可以节省更多的电量,但是 CircuitPython 必须code.py在唤醒时从头重新启动。

对于轻度睡眠和深度睡眠,如果 CircuitPython 连接到主机,则保持连接优先,并且可能不会降低功耗。

在这些板上可用
  • ARAMCON Badge 2019
  • ARAMCON2 Badge
  • ATMegaZero ESP32-S2
  • Adafruit CLUE nRF52840 Express
  • Adafruit Circuit Playground Bluefruit
  • Adafruit Feather Bluefruit Sense
  • Adafruit Feather RP2040
  • Adafruit Feather STM32F405 Express
  • Adafruit Feather nRF52840 Express
  • Adafruit FunHouse
  • Adafruit ItsyBitsy RP2040
  • Adafruit ItsyBitsy nRF52840 Express
  • Adafruit LED Glasses Driver nRF52840
  • Adafruit Macropad RP2040
  • Adafruit MagTag
  • Adafruit Metro ESP32S2
  • Adafruit Metro nRF52840 Express
  • Adafruit QT Py RP2040
  • Adafruit QT2040 Trinkey
  • Arduino Nano 33 BLE
  • Arduino Nano RP2040 Connect
  • Artisense Reference Design RD00
  • AtelierDuMaker nRF52840 Breakout
  • BLE-SS dev board Multi Sensor
  • BastBLE
  • BastWiFi
  • BlueMicro840
  • Challenger RP2040 WiFi
  • CrumpS2
  • Cytron Maker Pi RP2040
  • ESP 12k NodeMCU
  • Electronut Labs Blip
  • Electronut Labs Papyr
  • EncoderPad RP2040
  • Feather ESP32S2 without PSRAM
  • FeatherS2
  • FeatherS2 Neo
  • FeatherS2 PreRelease
  • Franzininho WIFI w/Wroom
  • Franzininho WIFI w/Wrover
  • Gravitech Cucumber M
  • Gravitech Cucumber MS
  • Gravitech Cucumber R
  • Gravitech Cucumber RS
  • HMI-DevKit-1.1
  • HiiBot BlueFi
  • IkigaiSense Vita nRF52840
  • Kaluga 1
  • LILYGO TTGO T8 ESP32-S2 w/Display
  • MDBT50Q-DB-40
  • MDBT50Q-RX Dongle
  • MORPHEANS MorphESP-240
  • MakerDiary nRF52840 MDK
  • MakerDiary nRF52840 MDK USB Dongle
  • Makerdiary M60 Keyboard
  • Makerdiary Pitaya Go
  • Makerdiary nRF52840 M.2 Developer Kit
  • Melopero Shake RP2040
  • Oak Dev Tech BREAD2040
  • Oak Dev Tech PixelWing ESP32S2
  • Open Hardware Summit 2020 Badge
  • PCA10056 nRF52840-DK
  • PCA10059 nRF52840 Dongle
  • Particle Argon
  • Particle Boron
  • Particle Xenon
  • Pimoroni Interstate 75
  • Pimoroni Keybow 2040
  • Pimoroni PGA2040
  • Pimoroni Pico LiPo (16MB)
  • Pimoroni Pico LiPo (4MB)
  • Pimoroni PicoSystem
  • Pimoroni Plasma 2040
  • Pimoroni Tiny 2040
  • PyKey60
  • PyboardV1_1
  • Raspberry Pi Pico
  • S2Mini
  • STM32F4_DISCO
  • Saola 1 w/Wroom
  • Saola 1 w/Wrover
  • SparkFun MicroMod RP2040 Processor
  • SparkFun MicroMod nRF52840 Processor
  • SparkFun Pro Micro RP2040
  • SparkFun Pro nRF52840 Mini
  • SparkFun STM32 MicroMod Processor
  • SparkFun Thing Plus - RP2040
  • TG-Watch
  • Targett Module Clip w/Wroom
  • Targett Module Clip w/Wrover
  • Teknikio Bluebird
  • TinkeringTech ScoutMakes Azul
  • TinyS2
  • WarmBit BluePixel nRF52840
  • microS2
  • nanoESP32-S2 w/Wrover
  • nanoESP32-S2 w/Wroom
  • nice!nano

alarm.sleep_memory :SleepMemory

在深度睡眠期间持续存在的记忆。该对象是 的唯一实例alarm.SleepMemory.

alarm.wake_alarm :_typing.Alarm

最近触发的警报。如果 CircuitPython 正在睡觉,警报会将它从睡眠中唤醒。

alarm.light_sleep_until_alarms(*alarms: _typing.Alarm)_typing.Alarm

进入浅睡眠,直到唤醒其中一个闹钟。返回引起唤醒的闹钟,也可用作alarm.wake_alarm.

如果未指定警报,则立即返回。

如果 CircuitPython 连接到主机,连接将保持,并且微控制器实际上可能不会进入轻度睡眠。 这允许用户使用 ctrl-C 中断现有程序,并编辑 CIRCUITPY 中的文件,这在真正的轻度睡眠中是不可能的。因此,要使用轻度睡眠并节省大量电量,可能需要与主机断开连接。

alarm.exit_and_deep_sleep_until_alarms(*alarms: _typing.Alarm)None

退出程序并进入深度睡眠,直到被其中一个闹钟唤醒。此函数不返回。

唤醒后,微控制器将重新启动boot.pycode.py 从头开始运行。

重新启动后,相当于引起唤醒的警报将作为 可用alarm.wake_alarm。它的类型和/或属性可能与原始警报不完全对应。对于时基报警,目前alarm.time.TimeAlarm() 创建了一个。

如果未指定警报,微控制器将进入深度睡眠状态直至复位。

如果 CircuitPython 连接到主机,连接将保持,系统不会进入深度睡眠。 这允许用户使用 ctrl-C 中断现有程序,并编辑 CIRCUITPY 中的文件,这在真正的深度睡眠中是不可能的。因此,要使用深度睡眠并节省大量电量,您需要与主机断开连接。

这是深度睡眠并每 60 秒重新启动一次的骨架示例:

import alarm
import time

print("Waking up")

# Set an alarm for 60 seconds from now.
time_alarm = alarm.time.TimeAlarm(monotonic_time=time.monotonic() + 60)

# Deep sleep until the alarm goes off. Then restart the program.
alarm.exit_and_deep_sleep_until_alarms(time_alarm)
class alarm.SleepMemory

将原始字节存储在深睡眠期间持续存在的 RAM 中。该类充当 bytearray. 如果断电,内存内容将丢失。

注意这个类不能直接导入使用。的唯一实例SleepMemory可在 alarm.sleep_memory

用法:

import alarm
alarm.sleep_memory[0] = True
alarm.sleep_memory[1] = 12

未使用。通过 访问唯一实例alarm.sleep_memory.

__bool__(self)bool

sleep_memoryTrue如果它的长度大于零。这是检查它是否存在的简单方法。

__len__(self)int

返回长度。这是由 (len)

__getitem__(self, index: slice)bytearray
__getitem__(self, index: int)int

返回给定索引处的值。

__setitem__(self, index: slice, value: _typing.ReadableBuffer)None
__setitem__(self, index: int, value: int)None

在给定索引处设置值。