Arduino 入门学习笔记11 读写内置EEPROM

news2024/11/24 3:28:07

Arduino 入门学习笔记11 使用I2C读写EEPROM

  • 一、Arduino 内置EEPROM介绍
  • 二、EEPROM 操作
    • 1. 包含EEPROM库:
    • 2. 写入数据到EEPROM:
    • 3. 从EEPROM读取数据
    • 4. 完整示例:

在这里插入图片描述

一、Arduino 内置EEPROM介绍

Arduino的内置EEPROM(Electrically Erasable Programmable Read-Only Memory)是一种用于存储持久性数据的非易失性存储器,它嵌入在Arduino微控制器芯片内部。与外部EEPROM不同,Arduino的内置EEPROM通常具有较小的存储容量,通常在几百字节到几千字节之间,具体取决于Arduino的型号和芯片。以下是关于Arduino的内置EEPROM的重要信息:

容量:不同型号的Arduino板在芯片上都有内置EEPROM。例如,ATmega328P芯片(如Arduino Uno)具有1024字节的EEPROM。在编写代码时,要根据芯片的型号查阅相应的数据手册以获取准确的EEPROM容量。

使用方式:与外部EEPROM不同,Arduino的内置EEPROM不需要额外的硬件连接,因为它直接集成在芯片内部。你可以使用EEPROM库中的函数来读写EEPROM中的数据。

写入次数:Arduino的内置EEPROM的写入次数是有限的,通常在10,000到100,000次之间,具体取决于芯片型号。在使用EEPROM时,要注意避免频繁的写入操作,以延长其寿命。

库函数:Arduino的EEPROM库提供了一组函数来简化对内置EEPROM的读写操作。常用的函数包括EEPROM.write()用于写入一个字节数据,EEPROM.read()用于读取一个字节数据。

示例应用:内置EEPROM可用于存储持久性数据,如配置设置、用户选项、校准数据、设备标识等。由于内置EEPROM是芯片自带的存储器,因此无需外部连接和电源即可保留数据。

本文准备环境 :

  • Arduino UNO 开发板
  • Arduino 2.1.1
  • EEPROM模组

二、EEPROM 操作

Arduino 官方提供了EEPROM 库,文档地址:
https://docs.arduino.cc/learn/built-in-libraries/eeprom

以下是在Arduino中使用内置EEPROM进行读写操作的步骤:

1. 包含EEPROM库:

首先,在你的Arduino代码中包含EEPROM库,以便使用EEPROM相关函数。

#include <EEPROM.h>

2. 写入数据到EEPROM:

使用EEPROM.write()函数将数据写入EEPROM。此函数接受两个参数,地址和要写入的值。

int address = 0;      // EEPROM地址
byte valueToWrite = 42;  // 要写入的值

EEPROM.write(address, valueToWrite);

EEPROM每次写入都会消耗一次写入/擦除周期,所以请避免频繁写入操作以延长EEPROM的使用寿命。

3. 从EEPROM读取数据

使用EEPROM.read()函数从EEPROM读取数据。此函数接受一个地址参数,然后返回存储在该地址上的值。

int readAddress = 0;  // 要读取的EEPROM地址
byte readValue = EEPROM.read(readAddress);

打开串口进行输出:你可以使用Serial库来在串口监视器中查看读取到的数据。

Serial.begin(9600);
Serial.print("Read value from EEPROM: ");
Serial.println(readValue);

4. 完整示例:

#include <EEPROM.h>

int address = 0;          // EEPROM地址
byte valueToWrite = 43;   // 要写入的值
byte readValue;           // 读取到的值

void setup() {
  Serial.begin(9600);

  // 从EEPROM读取数据
  readValue = EEPROM.read(address);
  Serial.print("Read value from EEPROM: ");
  Serial.println(readValue);

  // 将新值写入EEPROM
  EEPROM.write(address, valueToWrite);
  Serial.println("Value written to EEPROM!");

  readValue = EEPROM.read(address);
  Serial.print("Read value from EEPROM: ");
  Serial.println(readValue);
}

void loop() {
  // 循环中不需要做任何事情
}

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

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

相关文章

iptables四表五链

iptables四表五链 iptables传输数据包的过程 当一个数据包进入网卡时&#xff0c;它首先进入PREROUTING链&#xff0c;内核根据数据包目的IP判断是否是发往本机的。如果数据包就是进入本机的&#xff0c;它就会沿着图向下移动到INPUT链。数据包到了INPUT链后&#xff0c;任何进…

Identity Server 4 传参数到登录界面

Identity Server 4 传参数到登录界面 登录界面取得参数

【C# 基础精讲】文件流和文本处理

文件流是C#中用于进行文件读写操作的重要概念&#xff0c;它提供了一种逐字节或逐块访问文件内容的机制。文本处理则是指在读取和写入文件时&#xff0c;对文本数据进行解析、操作和转换的过程。在本文中&#xff0c;我们将深入探讨文件流的概念、种类以及使用方法&#xff0c;…

0基础学Python之从第一个Python程序开始聊起

一、python的安装 由于python语言有着大量优秀的函数包&#xff0c;所以为了下载的便利性&#xff0c;我是在外网的笔记本上部署了python的学习环境。 Python Release Python 3.11.4 | Python.org 复制链接&#xff0c;迅雷下载&#xff0c;速度喜人。 下载后一路click&…

人类反馈强化学习RLHF;微软应用商店推出AI摘要功能

&#x1f989; AI新闻 &#x1f680; 微软应用商店推出AI摘要功能&#xff0c;快速总结用户对App的评价 摘要&#xff1a;微软应用商店正式推出了AI摘要功能&#xff0c;该功能能够将数千条在线评论总结成一段精练的文字&#xff0c;为用户选择和下载新应用和游戏提供参考。该…

FPGA_学习_16_IP核_ROM

在寻找APD最合适的偏压的过程中&#xff0c;一般会用到厂商提供一条曲线&#xff0c;横坐标是温度的变化&#xff0c;纵坐标表示击穿偏压的变化&#xff0c;但每个产品真正的击穿偏压是有差异的。 为了能够快速的找到当前温度下真实的击穿偏压&#xff0c;我们可以这样做&#…

C++之std::unordered_map<int, int, string>应用实例(一百八十)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 人生格言&#xff1a; 人生…

小程序化,一种创新的HybirdApp开发模式

跨端框架的出现&#xff0c;弥补了传统移动应用开发中跨平台难题。开发者可以使用一套代码构建适用于多个平台的应用&#xff0c;既能在不同设备上保持一致的用户体验&#xff0c;又能更高效地进行开发和维护。这种开发模式不仅提升了开发效率&#xff0c;还为用户提供了更加一…

【K8S系列】Weave Net 故障排除的常见问题和解决方案

写在前面 当使用 Weave Net 进行容器网络配置时&#xff0c;可能会遇到一些常见的故障情况。以下是一些常见问题及其解决方案&#xff1a; 问题列表 1 节点无法加入 Weave Net 网络 解决方案 检查节点之间的网络连通性&#xff0c;确保可以通过 IP 地址相互访问。 检查节点的…

nodejs安装与卸载(高版本降为低版本)

初到公司发现电脑上面已经安装nodejs&#xff0c;但是版本是最新版本。但是问题来了&#xff0c;好像是不太支持vue3&#xff0c;所以查了一些资料&#xff0c;具体的也不是很清楚&#xff0c;反正就是nodejs的版本不能太高最好保持在16以下。好吧&#xff0c;那就重新卸载再来…

苹果手机怎么连接电脑?4招轻松连接!

“新买了一部苹果手机&#xff0c;想连接电脑传一些文件&#xff0c;但是不知道该如何操作。有没有朋友可以帮帮我呀&#xff1f;” 苹果手机作为一款智能手机&#xff0c;在市场上的应用越来越常见。苹果手机与电脑进行连接可以更好的进行文件的传输、备份以及进行其他操作。 …

FreeModbus——源码获取(一)

网站 About - Embedded Experts (embedded-experts.at) 下载v1.6版本&#xff0c;刚开始我还没找到&#xff0c;后面对照别人的截图才找到&#xff08;哈哈&#xff0c;感觉自己好二&#xff09;&#xff0c;把鼠标移过去&#xff0c;这个地方是才从黑变成这个绿色

基于X86六轮差速移动机器人运动控制器设计与实现(二)规划控制算法

带输入约束的 MPC 路径跟踪控制 MPC 算法是一种基于控制对象模型的控制方法&#xff0c;其优势在于在控制中考虑了 系统的多种物理约束&#xff0c;同时基于模型与当前机器人的反馈信息预估出未来机器人 位姿信息的处理方法可以解决控制迟滞的问题。 4.1 MPC 路径跟踪控…

压多少抗多少,滴滴全链路压测仿真度量体系建设

滴滴在重大节假日、活动前为保障线上系统稳定&#xff0c;需要通过全链路压测做多轮风险排查以及容量验收&#xff0c;我们经常听到这样的声音"你们全链路压测和线上业务场景有多大差异"、"是不是压测达到目标线上真的能抗这么大量"、"我的某某个模块…

iPhone15即将发布,苹果赔偿5亿美元,但再次不包括中国用户

苹果的iPhone15即将发布&#xff0c;就在此时苹果的“电池门”再次被翻出&#xff0c;这次美国的法院判决苹果给每名用户赔偿65美元&#xff0c;合计大约5亿美元&#xff0c;只是独独不包括中国用户&#xff0c;这就有点歧视中国用户了吧&#xff1f; 事件的起因在于2017年很多…

c++11 标准模板(STL)(std::basic_stringbuf)(六)

定义于头文件 <sstream> template< class CharT, class Traits std::char_traits<CharT>, class Allocator std::allocator<CharT> > class basic_stringbuf : public std::basic_streambuf<CharT, Traits> std::basic_stringbu…

C++新经典02--编译预处理

编译预处理 编译阶段会做如下几件事&#xff1a; (1)预处理。 (2)编译。包括词法分析、语法分析、目标代码生成、优化等。 (3)汇编。产生.o(.obj)目标文件。 C语言一般提供三种预处理功能&#xff1a;宏定义、 文件包含、条件编译。这三种预处理功能也是通过在源程序文件写入…

5G智能网关助力打造数字乡村物联网

乡村振兴&#xff0c;网络先行&#xff0c;信息通信技术赋能农业农村现代化发展的作用日益彰显&#xff0c;也成为实施乡村振兴战略的重要力量。 截止今年三月&#xff0c;我国5G网络已经覆盖全国所有地级市、县城城区及数万行政村&#xff0c;农村光纤平均下载速率超过100Mb/s…

C#之枚举中的按位与()按位或(|)。

一些基础定义&#xff1a; 按位或运算符&#xff08;|&#xff09;是一种位运算符&#xff0c;用来对两个二进制数进行操作。对于每个位上的1&#xff0c;如果至少有一个二进制数中的对应位为1&#xff0c;则结果为1&#xff1b;否则&#xff0c;结果为0。按位与运算符&#x…

秒懂算法 | 汉诺塔问题与木棒三角形

在数学与计算机科学中&#xff0c;递归(recursion)是指一个过程或函数在其定义或说明中又直接或间接调用自身的一种方法。它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解。递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算&#x…