Arduino 中 EEprom 写入读取清除
转自:https://www.arduino.cn/thread-1157-1-1.html
EEPROM (Electrically Erasable Programmable Read-Only Memory),电可擦可编程只读存储器--一种掉电后数据不丢失的存储芯片。 简而言之就是你想断电后arduino还要保存一些参数,就使用EEPROM吧。 在各型号的arduino控制器上的AVR芯片均带有EEPROM,也有外接的EEPROM芯片,常见arduino控制器的EEPROM大小: Arduino UNO、Arduino duemilanove-m328、Zduino m328均使用ATmega328芯片,EEPROM都为1K Arduino duemilanove-m168的EEPROM为512bytes Arduino 2560的EEPROM为4K
下面我们介绍arduino自带的EEPROM使用方法,arduino的库已经为我们准备好了EEPROM类库,我们要使用得先调用EEPROM.h,然后使用write和read方法,即可操作EEPROM。 另:下面的官方例子由于写成较早,所以讲EEPROM的大小都定为了512字节,实际使用中,大家可参照上面所说的EEPROM大小,自行更改。
1.写入 选择 File>Examples>EEPROM>eeprom_write
|
/*
|
|
|
* EEPROM Write
|
|
|
*
|
|
|
* Stores values read from analog input 0 into the EEPROM.
|
|
|
* These values will stay in the EEPROM when the board is
|
|
|
* turned off and may be retrieved later by another sketch.
|
|
|
*/
|
|
|
#include <EEPROM.h>
|
|
|
// EEPROM 的当前地址,即你将要写入的地址,这里就是从0开始写
|
|
|
int addr = 0;
|
|
|
void setup()
|
|
|
{
|
|
|
}
|
|
|
void loop()
|
|
|
{
|
|
|
//模拟值读出后是一个0-1024的值,但每字节的大小为0-255,所以这里将值除以4再存储到val
|
|
|
int val = analogRead(0) / 4;
|
|
|
|
|
|
// write the value to the appropriate byte of the EEPROM.
|
|
|
// these values will remain there when the board is
|
|
|
// turned off.
|
|
|
EEPROM.write(addr, val);
|
|
|
|
|
|
// advance to the next address. there are 512 bytes in
|
|
|
// the EEPROM, so go back to 0 when we hit 512.
|
|
|
addr = addr + 1;
|
|
|
if (addr == 512)
|
|
|
addr = 0;
|
|
|
|
|
|
delay(100);
|
|
|
}
|
2.读取 选择 File>Examples>EEPROM>eeprom_read
|
/*
|
|
|
* EEPROM Read
|
|
|
*
|
|
|
* Reads the value of each byte of the EEPROM and prints it
|
|
|
* to the computer.
|
|
|
* This example code is in the public domain.
|
|
|
*/
|
|
|
#include <EEPROM.h>
|
|
|
// start reading from the first byte (address 0) of the EEPROM
|
|
|
int address = 0;
|
|
|
byte value;
|
|
|
void setup()
|
|
|
{
|
|
|
// initialize serial and wait for port to open:
|
|
|
Serial.begin(9600);
|
|
|
while (!Serial) {
|
|
|
; // wait for serial port to connect. Needed for Leonardo only
|
|
|
}
|
|
|
}
|
|
|
void loop()
|
|
|
{
|
|
|
// read a byte from the current address of the EEPROM
|
|
|
value = EEPROM.read(address);
|
|
|
|
|
|
Serial.print(address);
|
|
|
Serial.print("\t");
|
|
|
Serial.print(value, DEC);
|
|
|
Serial.println();
|
|
|
|
|
|
// advance to the next address of the EEPROM
|
|
|
address = address + 1;
|
|
|
|
|
|
// there are only 512 bytes of EEPROM, from 0 to 511, so if we're
|
|
|
// on address 512, wrap around to address 0
|
|
|
if (address == 512)
|
|
|
address = 0;
|
|
|
|
|
|
delay(500);
|
|
|
}
|
3.清除 选择 File>Examples>EEPROM>eeprom_clear 清除EEPROM的内容,其实就是把EEPROM中每一个字节写入0,因为只用清一次零,所以整个程序都在setup部分完成。
|
/* * EEPROM Clear
|
|
|
*
|
|
|
* Sets all of the bytes of the EEPROM to 0.
|
|
|
* This example code is in the public domain.
|
|
|
*/
|
|
|
#include <EEPROM.h>
|
|
|
void setup()
|
|
|
{
|
|
|
// 让EEPROM的512字节内容全部清零
|
|
|
for (int i = 0; i < 512; i++)
|
|
|
EEPROM.write(i, 0);
|
|
|
|
|
|
// 清零工作完成后,将L灯点亮,提示EEPROM清零完成
|
|
|
digitalWrite(13, HIGH);
|
|
|
}
|
|
|
void loop()
|
|
|
{
|
|
|
}
|
Arduino 中 EEprom 写入读取清除的更多相关文章
- arduino中SCoop库的简单应用案例
转载:https://www.csdn.net/gather_27/MtTaggzsMDExMS1ibG9n.html arduino中SCoop库的简单应用案例首先这篇文章来在视频https://v ...
- spark中数据的读取与保存
1.文本文件 (1)读取文本文件 JavaRDD<String> input =sc.textFile(dir) (2)保存文本文件 result.saveAsTextFile(dir)) ...
- C#中Cookies的读取
C#中Cookies的读取 链接: 一 .写入Cookie 1. Name 和 Value 属性由程序设定,默认值都是空引用. 2. Domain属性的默认值为当前URL的域名部分,不管发出这个c ...
- java:OutputStream和InputStream 输出输入流,FileOutputStream,FileInputStream写入读取流
1.在java中stream代表一种数据流(源),javaio的底层数据元,---(想像成水龙头)2.任何有能力产生数据流(源)的javaio对象就可以看作是一个InputStream对象既然它能产生 ...
- net快速写入/读取大量数据Postgresql
Postgresql快速写入/读取大量数据 http://www.cnblogs.com/podolski/p/7152144.html 环境及测试 使用.net驱动npgsql连接post数据库.配 ...
- python中configparser模块读取ini文件
python中configparser模块读取ini文件 ConfigParser模块在python中用来读取配置文件,配置文件的格式跟windows下的ini配置文件相似,可以包含一个或多个节(se ...
- .NET 5/.NET Core使用EF Core 5连接MySQL数据库写入/读取数据示例教程
本文首发于<.NET 5/.NET Core使用EF Core 5(Entity Framework Core)连接MySQL数据库写入/读取数据示例教程> 前言 在.NET Core/. ...
- flink---实时项目--day02-----1. 解析参数工具类 2. Flink工具类封装 3. 日志采集架构图 4. 测流输出 5. 将kafka中数据写入HDFS 6 KafkaProducer的使用 7 练习
1. 解析参数工具类(ParameterTool) 该类提供了从不同数据源读取和解析程序参数的简单实用方法,其解析args时,只能支持单只参数. 用来解析main方法传入参数的工具类 public c ...
- 大数据学习day34---spark14------1 redis的事务(pipeline)测试 ,2. 利用redis的pipeline实现数据统计的exactlyonce ,3 SparkStreaming中数据写入Hbase实现ExactlyOnce, 4.Spark StandAlone的执行模式,5 spark on yarn
1 redis的事务(pipeline)测试 Redis本身对数据进行操作,单条命令是原子性的,但事务不保证原子性,且没有回滚.事务中任何命令执行失败,其余的命令仍会被执行,将Redis的多个操作放到 ...
随机推荐
- e3mall商城总结13之订单确认(有BUG)
说在前面的话 上一节说了购物车的生成,本节主要说了在购物车的列表上去结算,从而生成一个未支付的订单,生成的订单默认状态为1, 题目说的BUG是因为所有数据都是通过前端向后端生成的,包括订单的金额.因此 ...
- day43:CSS样式相关
目录 1.高度和宽度 2.字体相关 3.字体对齐 4.颜色设置 5.背景 6.边框 7.盒子模型 8.display属性 9.伪元素选择器 10.伪类选择器 11.浮动 12.文字装饰 13.相对定位 ...
- Apache Pulsar 社区周报:08-08 ~ 08-14
关于 Apache Pulsar Apache Pulsar 是 Apache 软件基金会顶级项目,是下一代云原生分布式消息流平台,集消息.存储.轻量化函数式计算为一体,采用计算与存储分离架构设计,支 ...
- java最简单的知识之创建一个简单的windows窗口,利用Frame类
作者:程序员小冰,CSDN博客:http://blog.csdn.net/qq_21376985 QQ986945193 微博:http://weibo.com/mcxiaobing 首先给大家看一下 ...
- oeasy教你玩转linux010104灵魂之问whatis
灵魂之问whatis 回忆上节课 我们上次在系统里面乱转
- 使用Telnet服务测试端口时,提示没有Telnet服务
1.win7系统是默认不开启Telnet服务的,所以我们第一次使用时要手动开启Telnet服务 1)打开 控制面板 > 程序 > 程序功能 > 打开或关闭Windows功能,勾选上T ...
- 项目实战:Qt+Ffmpeg+OpenCV相机程序(打开摄像头、支持多种摄像头、分辨率调整、翻转、旋转、亮度调整、拍照、录像、回放图片、回放录像)
若该文为原创文章,未经允许不得转载原博主博客地址:https://blog.csdn.net/qq21497936原博主博客导航:https://blog.csdn.net/qq21497936/ar ...
- CLTPHP 漏洞
前言 awd小组的第一次训练 0x01 首先看一下主界面 使用的应该是PHP模板,随便翻一下找到一个注册界面 随便注册一个用户,登陆后在设置里找到一个上传点 上传我们的一句话木马 查看返回包,上传成功 ...
- python之cookie与session
cookie概念 cookie不属于http协议范围,由于http协议无法保持状态,但实际情况,我们却又需要“保持状态”,因此cookie就是在这样一个场景下诞生. cookie的工作原理是:由服务器 ...
- Oracle命令类别
Oracle命令类别: 数据操纵语言:DML: select; insert; delete; update; merge. 数据定义语言:DDL: create; alter; drop; trun ...
