【Arduino】ATmega328PB 连接 LSM6DS3 姿态传感器,并读数据(不确定 ESP 系列是否可行,但大概率是可行的)

news2024/11/16 2:26:30

总览

1.初始化 ATmega328PB,默认大家已经完成了 328 的配置准备工作,已经直接能够向里面写入程序
2.接线,然后验证 mega328 的 I2C 设备接口能否扫描到 LSM6DS3
3.编写代码,上传,查看串口数据。完成。

一、初始化 ATmega328 单片机

1.请看我的另一篇博客

https://blog.csdn.net/qq_43768851/article/details/141290010?spm=1001.2014.3001.5501

二、接线并验证 I2C 设备(LSM6DS3 姿态传感器)存在

1.接线

引脚图如下:

在这里插入图片描述

接线逻辑(请注意,有坑!):

LSM6DS3(SDA)-> mega328(SDA / A4)
LSM6DS3(SCL)-> mega328(SCL / A5)
LSM6DS3(VCC)-> 3.3V
LSM6DS3(GND)-> GND
LSM6DS3(SA0)-> GND

重点 !!!
重点 !!!
重点 !!!

为什么 SA0 引脚要接入 GND,具体原因本人不太清楚。
这个接线并非是必选项,而是根据大家单品机型号的不同来决定。
比如说,在 ESP32 上,就没必要连接 SA0 引脚(当然,你也可以试一试,如果不好用的话就连一下试试)
但如果使用 mega328PB 来连接 LSM6DS3,那就必须让 LSM6DS3 的 SA0 引脚接地。

2.验证 lsm6ds3 的 I2C 地址在哪里

验证程序(Arduino版本。请写入下面的程序到 328):

#include <Wire.h>

void setup() {
    Wire.begin();
    Serial.begin(9600);
    while (!Serial);
    Serial.println("\nI2C Scanner");
}

void loop() {
    byte error, address;
    int nDevices;

    Serial.println("Scanning...");

    nDevices = 0;
    for (address = 1; address < 127; address++) {
        Wire.beginTransmission(address);
        error = Wire.endTransmission();

        if (error == 0) {
            Serial.print("I2C device found at address 0x");
            if (address < 16) Serial.print("0");
            Serial.print(address, HEX);
            Serial.println("  !");
            nDevices++;
        } else if (error == 4) {
            Serial.print("Unknown error at address 0x");
            if (address < 16) Serial.print("0");
            Serial.println(address, HEX);
        }
    }
    if (nDevices == 0) {
        Serial.println("No I2C devices found\n");
    } else {
        Serial.println("done\n");
    }
    delay(5000);  // 延迟 5 秒钟重新扫描
}

串口监视器输出应该如下,说明找到了 I2C 设备(lsm6ds3)地址为 0x6B:
如果你找到的地址是别的,那么你就需要把后续代码中的 0x6B 换成你找到的地址。

在这里插入图片描述

三、编写代码,尝试读取数据

1.下载必要的依赖库

库管理器搜索 “LSM6DS3”,下载这个:

在这里插入图片描述

2.编写代码

因为调用了库,所以程序优雅且简单

#include <Wire.h>
#include <Arduino_LSM6DS3.h>

void setup() {
    Serial.begin(9600);
    Wire.begin();
    Wire.setClock(100000); // 设置 I2C 速度为 100kHz

    // 初始化 LSM6DS3 传感器,不指定地址
    if (!IMU.begin()) {  // 使用默认的初始化方式
        Serial.println("Failed to initialize LSM6DS3!");
        while (1); // 如果初始化失败,停止程序
    }

    Serial.println("LSM6DS3 initialized successfully!");
}

void loop() {
    float x, y, z;
    float temperature;

    // 读取加速度数据
    if (IMU.accelerationAvailable()) {
        IMU.readAcceleration(x, y, z);
        Serial.print("Acceleration X: ");
        Serial.print(x);
        Serial.print(" Y: ");
        Serial.print(y);
        Serial.print(" Z: ");
        Serial.println(z);
    }

    // 读取陀螺仪数据
    if (IMU.gyroscopeAvailable()) {
        IMU.readGyroscope(x, y, z);
        Serial.print("Gyroscope X: ");
        Serial.print(x);
        Serial.print(" Y: ");
        Serial.print(y);
        Serial.print(" Z: ");
        Serial.println(z);
    }

    // 读取温度数据
    if (IMU.temperatureAvailable()) {
        IMU.readTemperature(temperature);
        Serial.print("Temperature: ");
        Serial.print(temperature);
        Serial.println(" °C");
    }

    delay(1000); // 延时 1 秒
}

最后的串口监视器输出,成功结果:

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

履带无人车+无人机+自组网:空地一体化技术详解

履带无人车、无人机与自组网技术的结合&#xff0c;构成了空地一体化技术的核心框架&#xff0c;这种技术在多个领域展现出巨大的潜力和应用价值。以下是对该技术的详细解析&#xff1a; 一、技术概述 空地一体化技术巧妙融合了履带无人车、无人机以及自组网技术&#xff0c;…

EPIC Institute of Technology Round August 2024 (Div. 1 + Div. 2)

前言 又是一场压线不掉分的比赛。 Standings&#xff1a;2706 题目链接&#xff1a;Dashboard - EPIC Institute of Technology Round August 2024 (Div. 1 Div. 2) - Codeforces A. Distanced Coloring 题意&#xff1a; 给一个 n * m 的矩阵&#xff0c;涂色&#xff0c;要…

pkg 打包后运行报错 Cannot mkdir in a snapshot. Try mountpoints instead.

把项目中使用到的 __dirname 类似这样的 join(__dirname, ./config)替换为 process.cwd() __dirname&#xff1a;获取的是当前文件目录路径&#xff0c;二进制文件内部的文件(pkg打包的二进制文件是快照文件&#xff0c;里面的文件只能读不能修改新增)&#xff0c;比如&#x…

区块链基础

1、区块链定义 区块链技术本质上是一个去中心化的数据库&#xff0c;它是比特币的核心技术与基础架构&#xff0c;是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。狭义来讲&#xff0c;区块链是一种按照时间顺序将数据区块以顺序相连的方式组合…

XSS-跨站脚本攻击

目录 XSS简介 XSS分类 反射型XSS&#xff08;非持久型XSS&#xff09; 存储型XSS&#xff08;持久型XSS&#xff09; DOM型XSS HTML文档解析过程 例题 HTML解析 字符实体(character entities) HTML字符实体(HTML character entities) 字符引用&#xff08;character…

程序员如何写PLC程序

PLC是可编程逻辑控制器的简称&#xff0c;常用的编程语言是IEC61131-3&#xff08;梯形图、结构化文本、指令表、功能块、顺序功能图&#xff09;和西门子的SCL。程序员常用的编程语言是JS、Java、Python、C/C、Go等。PLC广泛采用编程工具有codesys、博图等。程序员常用的编程工…

用Python实现9大回归算法详解——06. K近邻回归算法

1. K近邻回归的基本概念 K近邻回归&#xff08;K-Nearest Neighbors Regression, KNN Regression&#xff09;是一种基于实例的学习方法。与传统的回归模型不同&#xff0c;KNN回归不通过显式的函数来建模数据之间的关系&#xff0c;而是通过查找输入样本的“邻居”来进行预测…

【PDF技巧】如何编辑忘记密码PDF文件?

PDF文件打开之后&#xff0c;发现编辑功能都是灰色的&#xff0c;无法使用&#xff0c;无法编辑PDF文件&#xff0c;遇到这种情况&#xff0c;因为PDF文件设置了限制编辑导致的。一般情况下&#xff0c;我们只需要输入PDF密码&#xff0c;将限制编辑取消就可以正常编辑文件了&a…

在线装修管理系统pf

TOC springboot389在线装修管理系统pf 第1章 绪论 1.1 课题背景 互联网发展至今&#xff0c;无论是其理论还是技术都已经成熟&#xff0c;而且它广泛参与在社会中的方方面面。它让信息都可以通过网络传播&#xff0c;搭配信息管理工具可以很好地为人们提供服务。所以各行业…

C语言 | Leetcode C语言题解之第345题反转字符串中的元音字母

题目&#xff1a; 题解&#xff1a; char vowel[] "aeiouAEIOU";bool isVowel(char ch) {for (int i 0; vowel[i]; i) {if (vowel[i] ch) {return true;}}return false; };char* reverseVowels(char* s) {int n strlen(s);int i 0, j n - 1;while (i < j) …

C语言三目运算符深度解析

[大师C语言]合集&#xff3b;大师C语言(第一篇)&#xff3d;C语言栈溢出背后的秘密&#xff3b;大师C语言(第二十五篇)&#xff3d;C语言字符串探秘&#xff3b;大师C语言(第二篇)&#xff3d;C语言main函数背后的秘密&#xff3b;大师C语言(第二十六篇)&#xff3d;C语言结构体…

08 STM32 DMA

DMA 协助CPU&#xff0c;完成数据转运工作。 两个程序&#xff1a; DMA数据转运&#xff0c;DMAAD多通道 DMA数据转运&#xff0c;将使用DMA&#xff0c;进行存储器到存储器的数据转运&#xff0c;也就是把一个数组里面的数据&#xff0c;复制到另一个数组里。 定义一个数组D…

3:html(CSS):基础语法3

3.1网页布局与id 3.1.1网页布局 在这里将使用<div>分成一个一个的块&#xff0c;然后进行CSS的美化。这里要说一下html是一个前端的代码&#xff0c;但是它写出来的东西单调缺少美感&#xff0c;CSS就是进行美化的&#xff0c;这里我们使用类的概念来美化我们的网站。 …

apt E: 无法定位软件包 winehq-stable

执行了 添加wine源 wget -NP /etc/apt/sources.list.d/ https://dl.winehq.org/wine-builds/ubuntu/dists/jammy/winehq-jammy.sources还需要执行 更新源 apt update

【观察】星河AI网络:构筑AI时代高质量网络底座,撑起新质生产力发展的浩瀚星空...

知名科技杂志《连线》创始主编凯文凯利曾预测&#xff1a;“在未来的 100 年里&#xff0c;人工智能将超越任何一种人工力量&#xff0c;将人类引领到一个前所未有的时代。” 确实如此&#xff0c;犹如历史上蒸汽机、电力、计算机和互联网等通用技术一样&#xff0c;近20年来&a…

【邀请函】2024 PowerData数字经济-开源行:NineData联合主办,并探讨面向Doris实时数据仓库的应用

2024年8月25日&#xff0c;PowerData 技术社区以“数字经济-城市开源行”为主题技术沙龙将在杭州 NineData 公司举办。本次活动由 SelectDB、NineData、字节跳动ByConity、阿里云 Flink CDC 等联合主办&#xff0c;围绕技术应用&#xff0c;最佳实践、迁移同步、以及数据管理等…

NoSQL之Redis配置与优化(二)

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:Linux运维老纪的首页…

live2d + edge-tts 优雅的实现数字人讲话 ~

震惊&#xff01;live2d数字人竟开口说话 ~ 之前有想做数字人相关项目&#xff0c;查了一些方案。看了一些三方大厂的商用方案&#xff0c;口型有点尴尬&#xff0c;而且很多是采用视频流的方案&#xff0c;对流量的消耗很大。后来了解了live2d 技术&#xff0c;常在博客网页上…

【Go语言初探】(三)、运行程序报错:Cannot find package “xxx“

一、问题描述 在运行项目中的main.go文件时&#xff0c;报错&#xff1a;Error: Cannot find package cast 报错截图如下&#xff1a; 二、原因及解决方法 出现上述报错的原因是&#xff0c;运行方法栏中选择了“Package”&#xff08;包运行&#xff09;&#xff0c;改成“…