Monthly Archives: April 2014

Arduino QQ群:20085629

为了方便朋友们交流,新建了一个Arduino QQ群,群号20085629 欢迎各位朋友添加。

Posted in Arduino

使用EEPROM存储和读取数据

目的: 测试和了解Arduino板载EEPROM的使用。 原文地址: http://www.joytag.com/arduino/使用eeprom存储和读取数据/ (转载请注明出处) 正文: QQ群里一朋友问Arduino上如何使用EEPROM存储字符型数据,其实无论是字符型数据还是其它类型数据,或者类似文件、图片这样的对象,都是作为二进制数据存在的。 Arduino官方的有三个EEPROM的例子,分别是清空EEPROM、 写入EEPROM、读取EEPROM。而清空EEPROM,其本质就是把整个EEPROM的空间写入0。而读写的语法分别是:EEPROM.read(address)、EEPROM.write(address, value),是不是很简单? 下面是一个简单的例子,写入一组字符串到EEPROM中,然后读出来,通过串口监视器显示出来。

这个例子中,我对0至1023地址中写入0,来清空EEPROM,这是因为Arduino不同的微控制器有不同大小的EEPROM。对于Arduino UNO R3而言,微控制器是ATmega328,空间大小是1024字节。 The microcontrollers on the various Arduino boards have different amounts of EEPROM: 1024 bytes on the ATmega328, 512 bytes on the ATmega168 and ATmega8, 4 KB (4096 bytes) on the ATmega1280 and ATmega2560. 另外,需要注意的是EEPROM写入寿命的问题,这个很容易被忽略。 An EEPROM write takes 3.3 ms to complete. The EEPROM memory has a specified life of 100,000 write/erase cycles, so you may need to be careful about how often you write to it. 当写这个例子的时候,想到一个有意思的问题,就是对于1024个字节长度的EEPROM,我们如果在第1024、1025、1026处分别写入内容,那么会写到哪里去,读出又会读出哪些内容?通过测试,我们发现在1024、1025、1026处写入和读出内容,等同于在0、1、2处操作。感兴趣的读者可以自己修改代码测试。 结论: Arduino的EEPROM库提供了很方便的存储和读取功能,对EEPROM的操作简单直接。 文成仓促,错漏难免,如有发现,烦请赐教。 联系邮件:support@joytag.com 转载请注明出处:http://www.joytag.com/arduino/使用eeprom存储和读取数据/

Posted in Arduino