树莓派pico入坑笔记,睡眠

关于树莓派pico和circuitpython的更多玩法,请看树莓派pico专栏

关于在 CircuitPython 中使用警报和浅/深度睡眠的更多信息,请参阅此学习指南。

树莓派pico支持浅睡眠和深度睡眠,其中深度睡眠唤醒后将从boot.py开始运行

支持按时间唤醒和引脚唤醒以及触摸唤醒,几种方式可以同时使用

参数

alarm.pin – 当引脚状态改变时触发警报。

  • PinAlarm


alarm.time – 当指定时间到达时触发警报。

  • TimeAlarm


alarm.touch – 检测到触摸时触发警报。

  • TouchAlarm

alarm.wake_alarm: circuitpython_typing.Alarm | None

最近触发的警报。如果 CircuitPython 处于睡眠状态,唤醒它的警报。如果自上次硬重置或软重启以来没有发生警报,则值为 None

方法

alarm.light_sleep_until_alarms(*alarms: circuitpython_typing.Alarm) → circuitpython_typing.Alarm
进入轻度睡眠,直到其中一个闹钟唤醒。返回引起醒来的闹钟,作为 alarm.wake_alarm 使用。

alarm.exit_and_deep_sleep_until_alarms(*alarms: circuitpython_typing.Alarmpreserve_dios: Sequence[digitalio.DigitalInOut] = ()) → None
退出程序并进入深度睡眠,直到被其中一个警报唤醒。此函数不返回。
当唤醒时,微控制器将重新启动并从头开始运行。 boot.py code.py
重启后,将可用与唤醒原因相同的警报作为 alarm.wake_alarm 。其类型和/或属性可能不完全对应原始警报。对于基于时间的警报,目前创建一个 alarm.time.TimeAlarm() 。
如果没有指定警报,微控制器将进入深度睡眠状态,直到复位。

示例代码

import alarm
import time
import board
import digitalio


# 创建引脚警报,当引脚状态从高到低变化时触发
pin_alarm = alarm.pin.PinAlarm(pin=board.BUTTON, value=False ,edge=True  , pull=True)
while True :

# 创建时间警报,5秒后触发
    time_alarm = alarm.time.TimeAlarm(monotonic_time=time.monotonic() + 5)
# 进入睡眠模式,等待警报触发
    alarm.light_sleep_until_alarms(time_alarm,pin_alarm)

# 警报触发后,设备被唤醒
    if alarm.wake_alarm:
        print("设备被警报唤醒")
        if isinstance(alarm.wake_alarm, alarm.time.TimeAlarm):
            print("时间警报触发,value:%s"%(alarm.wake_alarm))
        elif isinstance(alarm.wake_alarm, alarm.pin.PinAlarm):
            print("引脚警报触发,引脚状态:", digitalio.DigitalInOut(board.BUTTON).value)
    else:
        print("设备未被警报唤醒,可能是从硬重置或软重启启动的")
    print(time.monotonic())

效果

关于功耗

当使用 TimeAlarm 时,它实际上会损失一点深度睡眠性能。这是因为 RP2040 休眠模式实际上根本不支持外部时钟源下的 RTC,因此深度睡眠实际上是非常极端的浅睡眠版本,而不是一个独立模式。

当避免使用 TimeAlarm 时,Raspberry Pi Pico 开发板在深度睡眠状态下可以达到低于 2mA 的功耗

当添加时间闹钟时,电流上升至 7mA。

​RP2040 的轻睡眠模式,虽然效率不如深度睡眠水平,但仍然是一种有用的节能方式,功耗降低超过三分之一。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/964122.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【蓝桥杯】日志统计

日志统计(编程题)https://dashoj.com/d/lqbproblem/p/53https://dashoj.com/d/lqbproblem/p/53https://dashoj.com/d/lqbproblem/p/53 题目 日志统计(编程题) 讲解 这个讲解感觉比较通俗易懂。 蓝桥杯2018年省赛B组08(c/c)日…

实验十一 Servlet(二)

实验十一 Servlet(二) 【实验目的】 1.了解Servlet运行原理 2.掌握Servlet实现方式 【实验内容】 改造实验10,引入数据库,创建用户表,包括用户名和密码:客户端通过login.jsp发出登录请求,请求…

Weevely代码分析

亲测php5和php8都无效,只有php7有效 ailx10 1949 次咨询 4.9 网络安全优秀回答者 互联网行业 安全攻防员 去咨询 上一次做weevely实验可以追溯到2020年,当时还是weevely3.7,现在的是weevely4 生成php网页木马依然差不多…… php菜刀we…

vue.js学习笔记

一、Vue概述 通过我们学习的htmlcssjs已经能够开发美观的页面了,但是开发的效率还有待提高,那么如何提高呢?我们先来分析下页面的组成。一个完整的html页面包括了视图和数据,数据是通过请求 从后台获取的,那么意味着我…

MySQL(高级特性篇) 13 章——事务基础知识

一、数据库事务概述 事务是数据库区别于文件系统的重要特性之一 (1)存储引擎支持情况 SHOW ENGINES命令来查看当前MySQL支持的存储引擎都有哪些,以及这些存储引擎是否支持事务能看出在MySQL中,只有InnoDB是支持事务的 &#x…

【C++】继承(下)

大家好,我是苏貝,本篇博客带大家了解C的继承(下),如果你觉得我写的还不错的话,可以给我一个赞👍吗,感谢❤️ 目录 5.继承与友元6.继承与静态成员7.复杂的菱形继承及菱形虚拟继承8.继…

大数据治理体系构建与关键技术实践

📝个人主页🌹:一ge科研小菜鸡-CSDN博客 🌹🌹期待您的关注 🌹🌹 1. 引言 随着信息技术的快速发展和数据规模的爆炸式增长,大数据已经成为各行业的核心资产。然而,数据质量…

数据分析系列--[11] RapidMiner,K-Means聚类分析(含数据集)

一、数据集 二、导入数据 三、K-Means聚类 数据说明:提供一组数据,含体重、胆固醇、性别。 分析目标:找到这组数据中需要治疗的群体供后续使用。 一、数据集 点击下载数据集 二、导入数据 三、K-Means聚类 Ending, congratulations, youre done.

SpringBoot整合Mybatis|入门级增删改查|2025

SpringBoot整合Mybatis 文章目录 SpringBoot整合Mybatis1. 新建User表2. 初始化项目2.1 新建项目2.2 配置数据库连接2.3 完善项目的架子 3. 正式开始3.1 新增用户3.2 根据邮箱查询3.4 改密码 和 删除用户3.5 用xml再写一遍 4. 进阶 1. 新建User表 CREATE DATABASE mybatis_dem…

【线程】基于环形队列的生产者消费者模型

1 环形队列 环形队列采用数组来模拟,用取模运算来模拟环状特性。 1.如何判断环形队列为空或者为满? 当环形队列为空时,头和尾都指向同一个位置。当环形队列为满时,头和尾也都指向同一个位置。 因此, 可以通过加计数器或者标记…

docker中运行的MySQL怎么修改密码

1,进入MySQL容器 docker exec -it 容器名 bash 我运行了 docker ps命令查看。正在运行的容器名称。可以看到MySQL的我起名为db docker exec -it db bash 这样就成功的进入到容器中了。 2,登录MySQL中 mysql -u 用户名 -p 回车 密码 mysql -u root -p roo…

SRS代码目录

代码目录: src/目录下核心代码: core:核心功能模块,包括日志、配置、错误处理等;protocol:实现RTMP、HTTP-FLV、HLS等协议的模块;app:应用层的实现,包括流的发布、播放…

Leetcode:680

1,题目 2,思路 首先就是判断它不发生改变会不会是回文如果不是回文,那么俩个指针从前往后与从后往前做对比如果俩字符不同,那就俩种选择,一种是保留前面的字符去掉后面字符,另一种是其反然后俩种选择只要满…

SliverAppBar的功能和用法

文章目录 1 概念介绍2 使用方法3 示例代码 我们在上一章回中介绍了SliverGrid组件相关的内容,本章回中将介绍SliverAppBar组件.闲话休提,让我们一起Talk Flutter吧。 1 概念介绍 我们在本章回中介绍的SliverAppBar和普通的AppBar类似,它们的…

【前端】ES6模块化

文章目录 1. 模块化概述1.1 什么是模块化?1.2 为什么需要模块化? 2. 有哪些模块化规范3. CommonJs3.1 导出数据3.2 导入数据3.3 扩展理解3.4 在浏览器端运行 4.ES6模块化4.1 浏览器运行4.2 在node服务端运行4.3 导出4.3.1 分别导出4.3.2 统一导出4.3.3 默认导出4.3.4 混用 4.…

【Numpy核心编程攻略:Python数据处理、分析详解与科学计算】2.16 记录数组:面向对象的数据操作

2.16 记录数组:面向对象的数据操作 内容提要 本文将深入探讨 NumPy 的 recarray 数据结构,这是一种特殊的数据类型,允许用户以面向对象的方式访问数组中的数据。我们首先介绍 recarray 的基本特性,然后讨论如何优化属性访问&…

本地搭建deepseek-r1

一、下载ollama(官网下载比较慢,可以找个网盘资源下) 二、安装ollama 三、打开cmd,拉取模型deepseek-r1:14b(根据显存大小选择模型大小) ollama pull deepseek-r1:14b 四、运行模型 ollama run deepseek-r1:14b 五、使用网页api访问&#x…

linux本地部署deepseek-R1模型

国产开源大模型追平甚至超越了CloseAI的o1模型,大国崛起时刻!!! DeepSeek R1 本地部署指南   在人工智能技术飞速发展的今天,本地部署AI模型成为越来越多开发者和企业关注的焦点。本文将详细介绍如何在本地部署DeepS…

手写MVVM框架-环境搭建

项目使用 webpack 进行进行构建,初始化步骤如下: 1.创建npm项目执行npm init 一直下一步就行 2.安装webpack、webpack-cli、webpack-dev-server,html-webpack-plugin npm i -D webpack webpack-cli webpack-dev-server html-webpack-plugin 3.配置webpac…

git基础使用--4---git分支和使用

文章目录 git基础使用--4---git分支和使用1. 按顺序看2. 什么是分支3. 分支的基本操作4. 分支的基本操作4.1 查看分支4.2 创建分支4.3 切换分支4.4 合并冲突 git基础使用–4—git分支和使用 1. 按顺序看 -git基础使用–1–版本控制的基本概念 -git基础使用–2–gti的基本概念…