物联网AI MicroPython学习之语法 I2C总线
学物联网,来万物简单IoT物联网!!
I2C 介绍
- 模块功能:
I2C Master设备驱动
接口说明
I2C - 构建硬件I2C对象
- 函数原型:I2C(id, scl, sda, freq)
- 参数说明:
参数 | 类型 | 必选参数? | 说明 |
---|---|---|---|
id | int | Y | I2C外设,esp32有两个外设(id = 0/1) |
scl | int | N | 对应I2C的时钟线,可以定义任意脚 默认(不选参数) I2C0:Pin(18) I2C1:Pin(9) |
sda | int | N | 对应I2C的时钟线,可以定义任意脚 默认(不选参数) I2C0:Pin(19) I2C1:Pin(8) |
freq | int | N | I2C通信频率 |
- 返回值:
构建的I2C对象。
SoftI2C - 构建软I2C对象
- 函数原型:SoftI2C(scl, sda, freq)
- 参数说明:
参数 | 类型 | 必选参数? | 说明 |
---|---|---|---|
scl | int | Y | 对应I2C的时钟线,可以定义任意脚 |
sda | int | Y | 对应I2C的时钟线,可以定义任意脚 |
freq | int | Y | I2C通信频率 |
- 返回值:
构建的SoftI2C对象。
scan - 扫描从设备
- 函数原型:scan()
- 参数说明:
无
- 返回值:
无
start - 起始位信号
- 函数原型:start()
- 参数说明:
无
- 返回值:
无
stop - 停止位信号
- 函数原型:stop()
- 参数说明:
无
- 返回值:
无
readfrom - 从I2C总线读取数据
- 函数原型:readfrom(devAddr,number)
- 参数说明:
参数 | 类型 | 必选参数? | 说明 |
---|---|---|---|
devAddr | int | Y | I2C总线上从设备地址 |
number | int | Y | 需要从总线上读取的数据字节数 |
- 返回值:
buffer - 总线上读取的数据缓冲区,长度为参数number
writeto - 向I2C总线写数据
- 函数原型:writeto(devAddr,buffer)
- 参数说明:
参数 | 类型 | 必选参数? | 说明 |
---|---|---|---|
devAddr | int | Y | I2C总线上从设备地址 |
buffer | array[] | Y | 发送数据的缓冲区,期待发送的字节数为buffer的长度 |
- 返回值:
无
readfrom_mem - 从I2C设备指定地址读取数据
- 函数原型:readfrom_mem(devAddr, memaddr, number)
- 参数说明:
参数 | 类型 | 必选参数? | 说明 |
---|---|---|---|
devAddr | int | Y | I2C总线上从设备地址 |
memaddr | int | Y | 起始地址 |
number | int | Y | 需要从总线上读取的数据字节数 |
- 返回值:
buffer - 指定地址读取的数据缓冲区,长度为参数number
writeto_mem - 向I2C设备指定地址写数据
- 函数原型:writeto_mem(devAddr, memaddr,buffer)
- 参数说明:
参数 | 类型 | 必选参数? | 说明 |
---|---|---|---|
devAddr | int | Y | I2C总线上从设备地址 |
memaddr | int | Y | 起始地址 |
buffer | array[] | Y | 发送数据的缓冲区,期待发送的字节数为buffer的长度 |
- 返回值:
无 - 案例代码
from machine import Pin, SoftI2C, I2C# 构建1个I2C对象
i2c = SoftI2C(scl=Pin(5), sda=Pin(4), freq=100000)# 构建一个硬件 I2C 总线
i2c = I2C(0)
i2c = I2C(1, scl=Pin(22), sda=Pin(21), freq=400000)i2c.scan() # 扫描从设备i2c.readfrom(0x3a, 4) # 从地址为0x3a的从机设备读取4字节数据
i2c.writeto(0x3a, '12') # 向地址为0x3a的从机设备写入数据"12"buf = bytearray(10) # 创建1个10字节缓冲区
i2c.writeto(0x3a, buf) # 向地址为0x3a的从机设备写入缓冲区数据
相关文章:

物联网AI MicroPython学习之语法 I2C总线
学物联网,来万物简单IoT物联网!! I2C 介绍 模块功能: I2C Master设备驱动 接口说明 I2C - 构建硬件I2C对象 函数原型:I2C(id, scl, sda, freq)参数说明: 参数类型必选参数?说明idintYI2C外设ÿ…...

RocketMQ的适用场景有哪些?
程序员的公众号:源1024,获取更多资料,无加密无套路! 最近整理了一波电子书籍资料,包含《Effective Java中文版 第2版》《深入JAVA虚拟机》,《重构改善既有代码设计》,《MySQL高性能-第3版》&…...
ubuntu启动转圈,无法进入登录界面
安装卸载搜狗拼音输入法相关东西后出现启动转圈问题 当前使用的是lightdm,按网上说去切换成gdm3 (1)要在刚进入系统没显示圈圈和ubuntu时长按shift进入gurb。 (2)选择Ubuntu高级选项,enter (3)…...

MATLAB 机械臂逆运动学进行轨迹控制建模
系列文章目录 文章目录 系列文章目录前言一、模型概览1.1 Target Pose Generation 目标姿势生成1.2 Inverse Kinematics 逆运动学1.3 Manipulator Dynamics 机械手动力学1.4 Pose Measurement 姿势测量 二、机械手定义三、生成航点四、模型设置五、模拟机械手运动六、将结果可视…...

【计算机组成原理】定点加法、减法运算
系列文章目录 绘制出纯整数(1字节)和纯小数的数轴 将十进制数20.59375,转换成754标准的32位浮点数的二进制存储格式 用双符号位补码求 x 0.1010011, y -0.1001010, 分别求出 x y, x - y,并判溢出...
scp 跨服务器传输命令,把一个服务器上的文件复制传到当前服务器目录下
要将一个服务器上的文件复制到当前服务器的目录下,可以使用 scp 命令进行跨服务器传输。以下是具体的命令格式: 复制 scp usernamesource_server:/path/to/source_file destination_directory username: 远程服务器的用户名。 source_server: 远程服务…...

【python基础】用户输入和while循环详解
文章目录 一. 函数input()的工作原理1. 编写清晰的程序2. 使用int()来获取数值输入3. 求模运算符 二. while循环简介1. 使用while循环2. 让用户选择何时退出3. 使用标志4. 使用break退出循环5. 在循环中使用continue 三. 使用while循环处理列表和字典1. 在列表之间移动元素2. 删…...

k8s-部署Redis-cluster(TLS)
helm pull bitnami/redis-cluster v8.3.8拉取源码生成证书 git clone https://github.com/redis/redis.git #文档 https://redis.io/docs/management/security/encryption/#getting-started生成你的TLS证书用官网的工具生成 1 Run ./utils/gen-test-certs.sh 生成根CA和服务…...

计算机毕业设计选题推荐-幼儿园管理微信小程序/安卓APP-项目实战
✨作者主页:IT毕设梦工厂✨ 个人简介:曾从事计算机专业培训教学,擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Py…...

ElasticStack日志分析平台-ES 集群、Kibana与Kafka
一、Elasticsearch 1、介绍: Elasticsearch 是一个开源的分布式搜索和分析引擎,Logstash 和 Beats 收集的数据可以存储在 Elasticsearch 中进行搜索和分析。 Elasticsearch为所有类型的数据提供近乎实时的搜索和分析:一旦数据被索引&#…...

微机原理_10
一、单项选择题(本大题共15小题,每小题3分,共45分。在每小题给出的四个备选项中,选出一个正确的答案。) 1,将二进制数110110.01转换为十六进制为() A. 66.1H B. 36.4H C. 66.4 D. 36.2 2,一台计算机的字长是4个字节,含义是() A.能处理的最大…...
(SpringBoot)第八章:SpringMVC程序开发
文章目录 一:Spring MVC概述(1)什么是Spring MVC(2)什么是MVC(3)Spring MVC和SpringBoot(4)如何学习Spring MVC二:Spring MVC创建和连接(1)Spring MVC项目创建(2)@RequestMapping注解三:Spring MVC处理参数(1)传递简单参数(2)传递对象(3)@RequestParam:重…...
openssl + 3DES开发实例(linux)
文章目录 一、3DES介绍3DES 的特点:3DES 加密的步骤:3DES 的应用场景: 二、3DES原理1. DES 原理回顾:2. 3DES 原理:3. 3DES 的加密流程: 三、openssl 3DES开发实例 一、3DES介绍 3DES(Triple …...

遵循开源软件安全路线图
毫无疑问,开源软件对于满足联邦任务所需的开发和创新至关重要,因此其安全性至关重要。 OSS(运营支持系统) 支持联邦政府内的每个关键基础设施部门。 联邦政府认识到这一点,并正在采取措施优先考虑 OSS 安全ÿ…...
294_C++_
1、全部大致解析: struct alarminfo_t {unsigned int alarmid;INTF_ALARM_INFO_S pAlarm; };typedef enum{INTF_IO_ALARM_E= 0, //I/O探头告警开始INTF_MOTION_ALARM_E, //移动侦测告警开始INTF_AI_ALARM_E,...

【计算机网络笔记】网络地址转换(NAT)
系列文章目录 什么是计算机网络? 什么是网络协议? 计算机网络的结构 数据交换之电路交换 数据交换之报文交换和分组交换 分组交换 vs 电路交换 计算机网络性能(1)——速率、带宽、延迟 计算机网络性能(2)…...

【flink理论】动态表:关系查询处理流的思路:连续查询、状态维护;表转换为流需要编码编码
文章目录 一. 使用关系查询处理流的讨论二. 动态表 & 连续查询(Continuous Query)三. 在流上定义表1. 连续查询2. 查询限制2.1. 维护状态2.2. 计算更新 四. 表到流的转换1. Append-only 流2. Retract 流3. Upsert 流 本文主要讨论了: 讨论通过关系查询处理无界流…...

2023年09月 Python(六级)真题解析#中国电子学会#全国青少年软件编程等级考试
Python等级考试(1~6级)全部真题・点这里 一、单选题(共25题,每题2分,共50分) 第1题 以下选项中,不是tkinter变量类型的是?( ) A: IntVar() B: StringVar() C: DoubleVar() D: FloatVar() 答案:D tkinter 无 FloatVar()变量类型。 第2题 关于tkinter,以下说…...

Ubuntu16.04上安装Docker
Ubuntu16.04上安装Docker 更新 apt 包索引: sudo apt-get update安装依赖包,以便使用 HTTPS 仓库 sudo apt-get install apt-transport-https ca-certificates curl software-properties-common添加 Docker GPG 密钥 curl -fsSL https://download.docker.com/linux/ubuntu…...

FSOD论文阅读 - 基于卷积和注意力机制的小样本目标检测
来源:知网 标题:基于卷积和注意力机制的小样本目标检测 作者:郭永红,牛海涛,史超,郭铖 郭永红,牛海涛,史超,郭铖.基于卷积和注意力机制的小样本目标检测 [J/OL].兵工学报. https://…...

利用最小二乘法找圆心和半径
#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …...

测试微信模版消息推送
进入“开发接口管理”--“公众平台测试账号”,无需申请公众账号、可在测试账号中体验并测试微信公众平台所有高级接口。 获取access_token: 自定义模版消息: 关注测试号:扫二维码关注测试号。 发送模版消息: import requests da…...
从零实现富文本编辑器#5-编辑器选区模型的状态结构表达
先前我们总结了浏览器选区模型的交互策略,并且实现了基本的选区操作,还调研了自绘选区的实现。那么相对的,我们还需要设计编辑器的选区表达,也可以称为模型选区。编辑器中应用变更时的操作范围,就是以模型选区为基准来…...
线程与协程
1. 线程与协程 1.1. “函数调用级别”的切换、上下文切换 1. 函数调用级别的切换 “函数调用级别的切换”是指:像函数调用/返回一样轻量地完成任务切换。 举例说明: 当你在程序中写一个函数调用: funcA() 然后 funcA 执行完后返回&…...
django filter 统计数量 按属性去重
在Django中,如果你想要根据某个属性对查询集进行去重并统计数量,你可以使用values()方法配合annotate()方法来实现。这里有两种常见的方法来完成这个需求: 方法1:使用annotate()和Count 假设你有一个模型Item,并且你想…...

如何理解 IP 数据报中的 TTL?
目录 前言理解 前言 面试灵魂一问:说说对 IP 数据报中 TTL 的理解?我们都知道,IP 数据报由首部和数据两部分组成,首部又分为两部分:固定部分和可变部分,共占 20 字节,而即将讨论的 TTL 就位于首…...

技术栈RabbitMq的介绍和使用
目录 1. 什么是消息队列?2. 消息队列的优点3. RabbitMQ 消息队列概述4. RabbitMQ 安装5. Exchange 四种类型5.1 direct 精准匹配5.2 fanout 广播5.3 topic 正则匹配 6. RabbitMQ 队列模式6.1 简单队列模式6.2 工作队列模式6.3 发布/订阅模式6.4 路由模式6.5 主题模式…...

基于Java+MySQL实现(GUI)客户管理系统
客户资料管理系统的设计与实现 第一章 需求分析 1.1 需求总体介绍 本项目为了方便维护客户信息为了方便维护客户信息,对客户进行统一管理,可以把所有客户信息录入系统,进行维护和统计功能。可通过文件的方式保存相关录入数据,对…...

【堆垛策略】设计方法
堆垛策略的设计是积木堆叠系统的核心,直接影响堆叠的稳定性、效率和容错能力。以下是分层次的堆垛策略设计方法,涵盖基础规则、优化算法和容错机制: 1. 基础堆垛规则 (1) 物理稳定性优先 重心原则: 大尺寸/重量积木在下…...

sshd代码修改banner
sshd服务连接之后会收到字符串: SSH-2.0-OpenSSH_9.5 容易被hacker识别此服务为sshd服务。 是否可以通过修改此banner达到让人无法识别此服务的目的呢? 不能。因为这是写的SSH的协议中的。 也就是协议规定了banner必须这么写。 SSH- 开头,…...